Excel VBA-允许字符串中的数字
我使用此功能来限制用户输入特殊字符,但我也希望允许用户只输入2位数字,如果他们想与字母一起输入的话。这可能吗Excel VBA-允许字符串中的数字,excel,vba,Excel,Vba,我使用此功能来限制用户输入特殊字符,但我也希望允许用户只输入2位数字,如果他们想与字母一起输入的话。这可能吗 Public Function IsAlpha(strValue As String) As Boolean IsAlpha = strValue Like WorksheetFunction.Rept("[-a-zA-Z ]", Len(strValue)) And _ Len(strValue) = Len(Application.Trim(strValue))
Public Function IsAlpha(strValue As String) As Boolean
IsAlpha = strValue Like WorksheetFunction.Rept("[-a-zA-Z ]", Len(strValue)) And _
Len(strValue) = Len(Application.Trim(strValue))
End Function
如果不想加载regex引用库,可以使用后期绑定
Public Function IsAlpha(strValue As String) As Boolean
Dim rgx As Object
Set rgx = CreateObject("vbscript.regexp")
With rgx
.Global = False
.Pattern = "^[A-Z]*[0-9]?[A-Z]*[0-9]?[A-Z]*$"
.IgnoreCase = True
.MultiLine = False
IsAlpha = .Test(strValue)
End With
End Function
下面是一个没有正则表达式的版本:
Public Function IsAlpha(strValue As String) As Boolean
IsAlpha = strValue Like "[-a-zA-Z]" & _
WorksheetFunction.Rept("[-a-zA-Z 0-9]", Len(strValue) - 1) _
And _
Len(strValue) = Len(Application.Trim(strValue)) _
And _
Not strValue Like "*[0-9][0-9][0-9]*"
End Function
它查找一个字符串,该字符串的开头不是数字,后面是字母和数字。之后,它会检查是否没有三个连续的数字
话虽如此,但不要这样做。这正是正则表达式的用途。最好的选择是正则表达式。我记得你不久前问过一个类似的问题。对于用户输入的文本是否可以以数字或连字符开头,您是否也有条件?是的,它应该只以字母开头。。。我相信正则表达式需要VBA中的一个特殊引用,我正在努力避免您打开后期绑定时不需要引用库预加载正则表达式?好的,如果它与Excel 2007及以后兼容,这似乎对我有效,只要您不需要在Mac上运行它