如何测试非数字输入数据?

问题描述 投票:1回答:1

我正在用Excel 2016 VBA开发程序。

我正在尝试检查用户选择的非数字数据。

我有以下示例数据:

enter image description here

我的代码接受用户指定的选择,并将其存储在名为X1的2D数组中。然后,我遍历两个维度,并使用:

测试每个单元格是否为数字
If Not IsNumeric(X1(i, j)) Then

如果为true,则应该进行错误处理。我的密码正确识别橙色突出显示的单元格并将其发送到错误处理,但是,我的代码未捕获黄色突出显示的单元格。

我知道&符号是串联运算符。我认为这是问题的一部分。

excel vba numeric
1个回答
0
投票

[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
© www.soinside.com 2019 - 2024. All rights reserved.