Using Like on string allows wildcards
Private Function PWOk(pw As String) As Boolean
On Error Resume Next
If Len(pw) < 8 Then Err.Raise vbObjectError, , "not long enough"
If Not pw Like "[A-Z]*" Then Err.Raise vbObjectError, , "first char must be upper"
If Not pw Like "*#*" Then...