我正在用Excel 2016 VBA开发程序。
我正在尝试检查用户选择的非数字数据。
我有以下示例数据:
我的代码接受用户指定的选择,并将其存储在名为X1的2D数组中。然后,我遍历两个维度,并使用:
测试每个单元格是否为数字If Not IsNumeric(X1(i, j)) Then
如果为true,则应该进行错误处理。我的密码正确识别橙色突出显示的单元格并将其发送到错误处理,但是,我的代码未捕获黄色突出显示的单元格。
我知道&符号是串联运算符。我认为这是问题的一部分。
[VBA Excel 2010帮助如果将整个表达式识别为数字,则IsNumeric返回True;否则,返回0。否则,它返回False。如果expression是日期表达式,则IsNumeric返回False。
数值数据类型任何固有的数值数据类型(字节,布尔,整数,长整数,货币,单,双精度或日期)。
数字表达式可以计算为数字的任何表达式。表达式的元素可以包括关键字,变量,常量和运算符的任意组合,这些组合会产生数字。
数字类型任何内部数字数据类型(字节,布尔值,整数,长整数,货币,单,双精度或日期)或任何变量数字子类型(空,整数,长整数,单精度,双精度,货币,十进制,日期,错误,布尔或字节)。
一个普通人需要另一个等数字-实数
Public Function Is_Numeric_Real( _
ByVal v As Variant) _
As Boolean
Dim decSep As String
decSep = Application.DecimalSeparator
Dim bReturn As Boolean
bReturn = True
Dim str As String
str = CStr(v)
Dim symb As String
Dim x As Long
For x = 1 To Len(str)
symb = Mid$(str, x, 1)
If is_Number(symb) = False And _
symb <> decSep Then
bReturn = False
Exit For
End If
Next x
Is_Numeric_Real = bReturn
End Function
Public Function is_Number( _
ByVal v As Variant) _
As Boolean
' Тестом покрыто
' цифра ли
If Asc(v) > 47 Then
If Asc(v) < 58 Then
is_Number = True
End If
End If
End Function