如果某些字符串='XXXXX'
,我想返回true每个X都是数字0到9
我知道必须有十几种方法可以做到这一点,但我想知道最好的方法。
答案 0 :(得分:4)
yourString Like "#####"
答案 1 :(得分:2)
如果你想要最简单的方法,你可以这样做:
Function MyFunction(myString As String) As Boolean
MyFunction = ((Len(myString) = 5) And (IsNumeric(myString)))
End Function
如果你想要更有效的方式,你必须为人们建议的不同方法运行一些测试。
编辑:之前的解决方案不能很好地工作(请参阅前两条评论),但我已将其放在那里,因为它已被接受。这就是我要做的事情:
Function MyFunction(myString As String) As Boolean
Dim myDouble As Double
Dim myLong As Long
myDouble = Val(myString)
myLong = Int(myDouble / 10000)
MyFunction = ((Len(myString) = 5) And (myLong > 0) And (myLong < 10))
End Function
该功能中没有错误“保护”,因此如果您尝试检查像22222222222222这样的太大的数字,它将无效。
答案 2 :(得分:1)
答案 3 :(得分:1)
您还可以使用正则表达式来解决此问题。如果在VBA项目中包含Microsoft VBScript Regular Expressions 5.5,则可以使用RegExp
和MatchCollection
变量,如下面的函数所示。 (这是对ozgrid.com this post的响应的修改。)
Public Function FiveDigitString(strData As String) As Boolean
On Error GoTo HandleError
Dim RE As New RegExp
Dim REMatches As MatchCollection
With RE
.MultiLine = False
.Global = False
.IgnoreCase = True
.Pattern = "^[0-9][0-9][0-9][0-9][0-9]$"
End With
Set REMatches = RE.Execute(strData)
If REMatches.Count = 1 Then
FiveDigitString = True
Else
FiveDigitString = False
End If
Exit Function
HandleError:
Debug.Print "Error in FiveDigitString: " & Err.Description
FiveDigitString = False
End Function