2016-10-26 57 views
0

我有一個用戶窗體包含一個文本框。我創建了一個If函數來驗證用戶是否輸入了字母。我的代碼中出現運行時錯誤13。請幫助我,如果我能正確地執行if邏輯。VBA如果邏輯使用Asc函數

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

顯然你的意思'Chr',而不是'Asc'。然後再次,您可以簡單地使用字母「A」和「Z」。 – GSerg

+0

你說字母(複數),但假設你將'Asc'修正爲'Chr',你仍然只會測試第一個字母。什麼是該領域的有效條目? – Comintern

+0

A到Z,小或大的字母 –

回答

1

試試這個功能:

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

我得到運行時錯誤'424' –

+0

調試器顯示錯誤發生在哪裏? (哪一行) – Limak

+0

它的工作原理,我解決它,它是對象的命名約定,我有txtBoxName而不是Name_Box.Text,運行時命名匹配錯誤。有人可以分解FOR I = 1循環,所以我可以理解它,而不是複製。 –