使用数据验证来验证excel中字符的数字,文本混合

时间:2017-05-18 13:08:48

标签: excel excel-vba validation vba

我需要验证具有一些特定要求的单元格。 LEN(A1)= 6,输入值的组成必须如下:大写文本字符,数字值(一位数),大写文本字符,数字值(一位数),大写文本字符,然后是一个数值(一位数)。这是一个例子A1B2C1。

我将使用此字段验证库存中的箱号并正在手动输入。我知道我可以验证输入的长度以及它是文本还是数字,但不是我需要的具体组合。

谢谢

2 个答案:

答案 0 :(得分:0)

如果您打算使用VBA,则可以选择检查ASCII码。

要执行此操作,您可以使用

Left([String] , [Amount of Chars])

Mid([String] , [Starting Char] , [Amount of Chars])

Right([String] , [Amount of Chars])

要获取每个角色,请使用

ASC([Character to Check])

获取ASCII码并将其与您期望的相比较。

大写字母等等60到95

请参阅下面的示例代码,而不是最干净但可行。

If Asc(Mid(StringToTest, 1, 1)) >= 60 And Asc(Mid(StringToTest, 1, 1)) <= 95 And _
   Asc(Mid(StringToTest, 2, 1)) >= 48 And Asc(Mid(StringToTest, 2, 1)) <= 57 And _
   Asc(Mid(StringToTest, 3, 1)) >= 60 And Asc(Mid(StringToTest, 3, 1)) <= 95 And _
   Asc(Mid(StringToTest, 4, 1)) >= 48 And Asc(Mid(StringToTest, 4, 1)) <= 57 And _
   Asc(Mid(StringToTest, 5, 1)) >= 60 And Asc(Mid(StringToTest, 5, 1)) <= 95 And _
   Asc(Mid(StringToTest, 6, 1)) >= 48 And Asc(Mid(StringToTest, 6, 1)) <= 57 Then
    Debug.Print "Pass"
Else
    Debug.Print "Fail"
End If

答案 1 :(得分:0)

这是您可以使用的另一个选项。将它放入您的工作表模块中,只要您的单元格被更改,它将为您验证格式$#$#$#。我已将其设置为处理单元格“A1”,但您可以将其更改为您需要的任何单元格。或者,您可以将其更改为特定列或特定行中的所有单元格。希望它有所帮助

rowid    value1   value2
1        1         2
2        1         3
3        2         4