Używam funkcji, która pozwala mi sprawdzić ciąg tekstu i ocenić, czy składa się z liter. Jest on umieszczony w module o nazwie "Ogólne". Moduł ogólny istnieje tylko w celu przechowywania publicznych funkcji i zmiennych. Kod funkcji znajduje się na liście poniżej:Jak mogę sprawdzić, czy ciąg zawiera tylko litery?
Public Function IsAlpha(strValue As String) As Boolean
Dim intPos As Integer
For intPos = 1 To Len(strValue)
Select Case Asc(Mid(strValue, intPos, 1))
Case 65 To 90, 97 To 122
IsLetter = True
Case Else
IsLetter = False
Exit For
End Select
Next
End Function
Następny Mam dwa „czy” procedur, które oceniają pierwsze 2 znaki pola tekstowego w moim UserForm. Pierwsza rutyna pyta, czy pierwszy znak jest numeryczny, a druga podpowiada, czy drugi znak jest alfą. Obecnie druga rutyna "if" wyrzuca mnie z podprocedury, kiedy IsAlpha testuje True, zamiast generować MsgBox. Czy funkcja IsAlpha nie jest poprawnie wywoływana?
Jeśli kod procedury wymienione poniżej:
Private Sub CmdMap_Click()
With TxtDxCode
If IsNumeric(Left(Me.TxtDxCode.Text, 1)) Then
MsgBox "Incorrect DX Code format was entered. ", vbExclamation, "DX Code Entry"
TxtDxCode.Value = ""
TxtDxCode.SetFocus
Exit Sub
End If
If IsAlpha(Left(Me.TxtDxCode.Text, 2)) Then
MsgBox "Incorrect DX Code format was entered. ", vbExclamation, "DX Code Entry"
TxtDxCode.Value = ""
TxtDxCode.SetFocus
Exit Sub
End If
End With
Jak powinien wyglądać kod DX? –
imię i nazwisko Funkcja "isalpha" .. twoje zadanie wyjście: "IsLetter" .. to nie będzie działać dobrze .. – Ditto
@MaciejLos Char1 = Alpha Char2 = numeryczna Dodatkowe znaki = alfa + numeryczna –