2016-10-26 55 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循环,所以我可以理解它,而不是复制。 –