检查数组中的非数字字符

我正在尝试创build一个函数,将检查非数字字符的数组。 我相信现有的函数有一个方法,但我希望能够做一个干净的函数。

这是我的:

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

这是一个(debugging)函数,它接受一个stringinput并返回True当且仅当string中的所有字符都是数字。 这是(也许)你正在做的事情:

 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 

我假设你想要一个函数接受一个string数组并检查它们是否为nun-numeric值。 那么你的问题是,为什么你的函数总是返回False

Boolean值的默认值为false,因此您需要在函数的开头设置ContainsAllNumbers = True

我也推荐使用Option Explicit所以你不要忘记Dimvariables。

将字符转换为ASCII码并检查每个字符。 你可以查找一个ASCII表来找出某些字符的具体值。

作为一个例子,我刚刚从我的一个macros复制这个。 它检查inputstringstr中的非字母数字值:

 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,az,AZ 'nothing Case Else invalidCharacter = True End Select Next pos If invalidCharacter Then MsgBox "only numbers or letters may be used" End If