验证用户输入

时间:2014-01-15 01:10:31

标签: excel validation vba

我正在尝试运行一个检查用户输入的单元格并确保它们不是空白的marco。我在一个牢房里很难过。我希望用户仅限于输入2个字母,我希望它检查以确保没有在该单元格中输入数字,否则会抛出错误消息并退出sub。非常感谢任何帮助!

If Worksheets("New PN").Range("B12").Value = "" Then
MsgBox "Date cannot be left empty.", vbOKOnly + vbExclamation, "Entry Error"
Exit Sub
End If

2 个答案:

答案 0 :(得分:2)

试试这个:

my_string = Worksheets("New PN").Range("B12").Value

If Len(my_string) = 2 And Left(my_string, 1) Like "[A-Za-z]" _
    And Right(my_string, 1) Like "[A-Za-z]" Then
    '~~execute what you want here
Else
    MsgBox "Invalid input" & vbNewLine & "Enter 2 LETTERS only"
End If

希望这有帮助。

答案 1 :(得分:1)

尝试这个!

cellContent = Worksheets("New PN").Range("B12").Value
leftCC = Left(cellContent, 1)
rightCC = Right(cellContent, 1)
If Len(cellContent) <> 2 Then

        MsgBox "There needs to be 2 characters."
        Exit Sub

ElseIf (Asc(leftCC) < 65 Or Asc(leftCC) > 122 _
         Or (Asc(leftCC) > 90 And Asc(leftCC) < 97)) _
    Or _
       (Asc(rightCC) < 65 Or Asc(rightCC) > 122 _
         Or (Asc(rightCC) > 90 And Asc(rightCC) < 97)) Then

        MsgBox "Both characters can only be letters."
        Exit Sub

End If

可能会变得大而可怕,但它会100%完成工作。

编辑: Asc(char)公式返回所提供字符的ascii编号。 a-z和A-Z的外部界限是65和122,但是中间包含一些非字符(即[,\,],^,_,`)。因此,可怕的是。