2016-10-26 1 views
0

Ich habe ein Benutzerformular, das eine TextBox enthält. Ich habe eine If Funktion erstellt, um zu überprüfen, ob der Benutzer Buchstaben eingegeben hat oder nicht. Ich bekomme einen Laufzeitfehler 13 auf meinem Code. Bitte hilf mir, wenn ich die if-Logik richtig mache.VBA Wenn Logik mit Asc Funktion

Private Sub cmd_Submit_Click() 
    'it will not accept any ASCII variables from 0 to 65 
    If Name_Box.Text < Asc(65) Then 
     MsgBox "Enter A to Z" 
     'Shall not contain any ASCII characters past 90 
    ElseIf Name_Box.Text > Asc(90) Then 
     MsgBox "Enter A to Z" 
    Else 

    End If 
End Sub 
+0

Offenbar bedeutete Sie 'Chr' statt' Asc'. Dann könnten Sie einfach die Buchstaben "A" und "Z" verwenden. – GSerg

+0

Sie sagen Buchstaben (Plural), aber unter der Annahme, dass Sie 'Asc' auf' Chr' korrigiert haben, würden Sie nur den ersten Buchstaben testen. Was ist ein gültiger Eintrag für das Feld? – Comintern

+0

A bis Z, kleine oder große Buchstaben –

Antwort

1

diese Funktion versuchen:

Private Sub cmd_Submit_Click() 
    For i = 1 To Len(Name_Box.Text) 
     If Asc(Mid(Name_Box.Text, i, 1)) < 65 Or Asc(Mid(Name_Box.Text, i, 1)) > 90 Then 
      MsgBox "Enter A to Z" 
      Exit For 
     End If 
    Next i 
End Sub 
+0

Ich erhalte Laufzeitfehler '424' –

+0

Zeigt Debugger, wo Fehler auftritt? (welche Zeile) – Limak

+0

Es funktioniert, ich habe es behoben, es war die Namenskonvention für das Objekt, ich hatte txtBoxName anstelle von Name_Box.Text, die Laufzeit war Namensvergleichsfehler. Kann jemand bitte die FOR i = 1-Schleife zerlegen, damit ich es verstehen kann, anstatt zu kopieren. –