VBA:如何判断VBA中的数字是双精度还是整数?

我有一个数字,可以是一个整数(2或3.0或4.0)或双(2.2或3.2)。

我试图使用下面的代码:

Dim isInteger as Boolean isInteger = (myNumber Mod 1 = 0) Debug.Print (isInteger) If isInteger then ... ... Else ... ... End If 

但是,即使myNumber类似于2.3,输出也总是为True。

我应该如何解决这个问题?

您可以使用VarType Function

 Dim IntVar, DblVar, StrVar, DateVar, MyCheck IntVar = 3 DblVar = 2.2 StrVar = "Hello World" DateVar = #2/12/69# MyCheck = VarType(IntVar) ' Returns 2 MyCheck = VarType(DblVar) ' Returns 5 MyCheck = VarType(DateVar) ' Returns 7 MyCheck = VarType(StrVar) ' Returns 8 

如果返回值是:

 Constant Value Description vbEmpty 0 Empty (uninitialized) vbNull 1 Null (no valid data) vbInteger 2 Integer vbLong 3 Long integer vbSingle 4 Single-precision floating-point number vbDouble 5 Double-precision floating-point number vbCurrency 6 Currency value vbDate 7 Date value vbString 8 String vbObject 9 Object vbError 10 Error value vbBoolean 11 Boolean value vbVariant 12 Variant (used only with arrays of variants) vbDataObject 13 A data access object vbDecimal 14 Decimal value vbByte 17 Byte value vbLongLong 20 LongLong integer (Valid on 64-bit platforms only.) vbUserDefinedType 36 Variants that contain user-defined types vbArray 8192 Array 

您也可以使用TypeName Function

 MyCheck = TypeName(IntVar) ' Returns Integer MyCheck = TypeName(DblVar) ' Returns Double MyCheck = TypeName(DateVar) ' Returns Date MyCheck = TypeName(StrVar) ' Returns String