我正在尝试创建一个函数来检查数组中的非数字字符。我确信现有功能有一种方法,但我希望能够创造一个干净的功能。
这就是我所拥有的:
Public Function ContainsAllNumbers(Text() As Variant) As Boolean
For Each element In Text
If Not IsNumeric(element) Then
ContainsAllNumbers = False
End If
Next
End Function
我希望它采取的论点是11013688或K03778或9005110-4400。我需要知道这些字符串是否包含不是数字的东西。
答案 0 :(得分:1)
我假设您需要一个带有字符串数组的函数,并检查它们是否为非数字值。那么你的问题就是,为什么你的函数总是返回False
。
Boolean
的默认值为false,因此您需要在函数开头设置ContainsAllNumbers = True
。
我还建议您使用Option Explicit
,这样您就不会忘记Dim
您的变量。
答案 1 :(得分:1)
这是一个(调试的)函数,它接受一个字符串输入并返回True
当且仅当字符串中的所有字符都是数字时。这(也许)就是你要做的事情:
Function AllDigits(s As String) As Boolean
Dim i As Long
For i = 1 To Len(s)
If Not IsNumeric(Mid(s, i, 1)) Then
AllDigits = False
Exit Function
End If
Next i
AllDigits = True
End Function
答案 2 :(得分:0)
将字符转换为ascii代码并检查每个字符。您可以查找ascii表以查找特定字符的特定值。
作为一个例子,我只是从我的一个宏中复制了它。它检查输入字符串str中的非字母数字值:
invalidCharacter = false
For pos = 1 To Len(str)
Select Case Asc(Mid(str, pos, 1)) 'ascii value of character at str(pos)
Case 48 To 57, 65 To 90, 97 To 122 '0-9,a-z,A-Z
'nothing
Case Else
invalidCharacter = True
End Select
Next pos
If invalidCharacter Then
MsgBox "only numbers or letters may be used"
End If