检查数组中的非数字字符

时间:2016-07-06 17:10:52

标签: excel vba

我正在尝试创建一个函数来检查数组中的非数字字符。我确信现有功能有一种方法,但我希望能够创造一个干净的功能。

这就是我所拥有的:

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。我需要知道这些字符串是否包含不是数字的东西。

3 个答案:

答案 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