我正在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)?
1条答案
按热度按时间gr8qqesn1#
你的
VarType
只会读取你定义的变量的类型。我把你的as integer
改为as string
,因为我认为这减少了一个步骤,但是你可以很容易地回到旧的方法。如果你需要更具体的答案,你也可以添加更多的条件。使用msgbox sub进行测试。