Excel 验证用户输入

Excel 验证用户输入,excel,validation,vba,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 E

我正在尝试运行一个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
试试这个:

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
希望这有帮助。

试试这个:

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
希望这有帮助。

试试这个:

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
希望这有帮助。

试试这个:

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

希望这有帮助。

试试这个

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
cellContent=工作表(“新PN”).范围(“B12”).值
leftCC=Left(cellContent,1)
rightCC=Right(cellContent,1)
如果Len(cellContent)2,则
MsgBox“需要有2个字符。”
出口接头
ElseIf(Asc(leftCC)<65或Asc(leftCC)>122_
或(Asc(左CC)>90和Asc(左CC)<97))_
或_
(Asc(右CC)<65或Asc(右CC)>122_
或者(Asc(rightCC)>90和Asc(rightCC)<97))然后
MsgBox“两个字符只能是字母。”
出口接头
如果结束
可能是巨大而可怕的,但它将100%完成工作


编辑:Asc(字符)公式返回所提供字符的ascii码。AZ和AZ的外极限分别为65和122,但在中间有一些非字符(即,[\,],^,',])。这就是可怕的如果。

试试这个

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
cellContent=工作表(“新PN”).范围(“B12”).值
leftCC=Left(cellContent,1)
rightCC=Right(cellContent,1)
如果Len(cellContent)2,则
MsgBox“需要有2个字符。”
出口接头
ElseIf(Asc(leftCC)<65或Asc(leftCC)>122_
或(Asc(左CC)>90和Asc(左CC)<97))_
或_
(Asc(右CC)<65或Asc(右CC)>122_
或者(Asc(rightCC)>90和Asc(rightCC)<97))然后
MsgBox“两个字符只能是字母。”
出口接头
如果结束
可能是巨大而可怕的,但它将100%完成工作


编辑:Asc(字符)公式返回所提供字符的ascii码。AZ和AZ的外极限分别为65和122,但在中间有一些非字符(即,[\,],^,',])。这就是可怕的如果。

试试这个

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
cellContent=工作表(“新PN”).范围(“B12”).值
leftCC=Left(cellContent,1)
rightCC=Right(cellContent,1)
如果Len(cellContent)2,则
MsgBox“需要有2个字符。”
出口接头
ElseIf(Asc(leftCC)<65或Asc(leftCC)>122_
或(Asc(左CC)>90和Asc(左CC)<97))_
或_
(Asc(右CC)<65或Asc(右CC)>122_
或者(Asc(rightCC)>90和Asc(rightCC)<97))然后
MsgBox“两个字符只能是字母。”
出口接头
如果结束
可能是巨大而可怕的,但它将100%完成工作


编辑:Asc(字符)公式返回所提供字符的ascii码。AZ和AZ的外极限分别为65和122,但在中间有一些非字符(即,[\,],^,',])。这就是可怕的如果。

试试这个

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
cellContent=工作表(“新PN”).范围(“B12”).值
leftCC=Left(cellContent,1)
rightCC=Right(cellContent,1)
如果Len(cellContent)2,则
MsgBox“需要有2个字符。”
出口接头
ElseIf(Asc(leftCC)<65或Asc(leftCC)>122_
或(Asc(左CC)>90和Asc(左CC)<97))_
或_
(Asc(右CC)<65或Asc(右CC)>122_
或者(Asc(rightCC)>90和Asc(rightCC)<97))然后
MsgBox“两个字符只能是字母。”
出口接头
如果结束
可能是巨大而可怕的,但它将100%完成工作


编辑:Asc(字符)公式返回所提供字符的ascii码。AZ和AZ的外极限分别为65和122,但在中间有一些非字符(即,[\,],^,',])。因此,可怕的if.

看起来很棒,但唯一的问题是:不是数字并不意味着字母。哇,当我看到你的更正时,我想知道你的正则表达式是否可以工作(我认为它不需要逗号),所以我试了试,结果没有(糟糕的复制粘贴;错过了第一行),而它实际上可以工作。所以我继续,把我的答案输入xD+谢谢你把我揍了一顿。两次。@BernardSaucier哈哈,你的方法也不错。同时也指出了ASCII的细节,但我对它不是很熟悉,因此我求助于reg-ex。感谢您指出了我的第一个解决方案中的缺陷:D,并感谢您更正了
逗号
。它不应该在那里DYou不应该更改
[a-zA-Z]
,因为它的含义与
[a-Z]
(包括区分大小写的随机字符)不同。看起来不错,但唯一的问题是:不是数字并不代表字母。哇,当我看到您的更正时,我想知道您的正则表达式是否可以工作(我认为它不需要逗号),所以我尝试了一下,但没有成功(糟糕的复制粘贴;错过了第一行),而它实际上可以工作。所以我继续,把我的答案输入xD+谢谢你把我揍了一顿。两次。@BernardSaucier哈哈,你的方法也不错。同时也指出了ASCII的细节,但我对它不是很熟悉,因此我求助于reg-ex。感谢您指出了我的第一个解决方案中的缺陷:D,并感谢您更正了
逗号
。它不应该在那里你不应该更改
[a-zA-Z]
,因为它的含义与
[a-Z]
(包括区分大小写的随机字符)不同。看起来不错,但唯一的问题是:不是数字并不代表字母。哇,当我看到你的更正时,我想知道你的常规表达是否