excel 如何返回变量数据类型?

oxf4rvwz  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(193)

我正在Excel中编写一个宏,该宏使用自定义函数来验证表单中字段的数据类型,以便稍后验证用户输入。该字段由研究ID组成,是一个正整数,从1到n不等。
当我在字段中输入整数(例如,2)时,函数返回5(VbDouble),根据this link,它是双精度浮点数。
我用2.0000和2测试了字段输入,结果都返回5。
在字段中输入“2”时,预期结果为2(整数)。

Function InputCheck(FieldValue As Variant) As Integer
    Dim TypeCheck As Integer
    TypeCheck = VarType(FieldValue)
    Select Case TypeCheck
    Case 2 'Integer
        InputCheck = 2
    Case 3 'Long integer
        InputCheck = 3
    Case 4 'Single-precision floating-point number
        InputCheck = 4
    Case 5 'Double-precision floating-point number
        InputCheck = 5
    End Select
End Function

在我的Sub中,下面的代码应该显示数据类型(Integer)。

If InputCheck(.Cells(iRow, 2).Value) = 2 Then
   MsgBox "Integer"
ElseIf InputCheck(.Cells(iRow, 2).Value) = 3 Then
   MsgBox "Long integer"
ElseIf InputCheck(.Cells(iRow, 2).Value) = 4 Then
   MsgBox "Single-precision floating-point number"
ElseIf InputCheck(.Cells(iRow, 2).Value) = 5 Then
   MsgBox "Double-precision floating-point number"
End If

如何返回数据类型(2,Integer)?

gr8qqesn

gr8qqesn1#

你的VarType只会读取你定义的变量的类型。我把你的as integer改为as string,因为我认为这减少了一个步骤,但是你可以很容易地回到旧的方法。如果你需要更具体的答案,你也可以添加更多的条件。

Option Explicit

Sub Test()
    MsgBox InputCheck(InputBox("Enter Data to test", "DataTypeTest", "")), vbOKOnly, "DataTypeTest"
End Sub

Function InputCheck(FieldValue) As String
    If IsNumeric(FieldValue) Then
        If CDbl(FieldValue) = Round(FieldValue, 0) Then
            InputCheck = "Integer" '(Or long or whatever...)
            Exit Function
        Else
            InputCheck = "Decimal" '(or double.. or whatever you want to call it)
            Exit Function
        End If
    Else
        If IsDate(FieldValue) Then
            InputCheck = "Date"
            Exit Function
        Else
            InputCheck = "String"
            Exit Function
        End If
    End If
End Function

使用msgbox sub进行测试。

相关问题