2016-08-05 178 views
0

私は、整数(2または3.0または4.0)またはダブル(2.2または3.2)のいずれかの数字を持っています。 myNumberは2.3のようなものであっても、出力は常に真であるしかしVBA:VBAで数値が倍数か整数かを調べるにはどうすればよいですか?

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

は、私は次のコードを使用しようとしました。

これはどのように修正する必要がありますか?

+3

'isInteger = CInt関数(myNumber)= myNumberあなたがIntの範囲外の数字を扱っていないと仮定します。 Modは整数だけを返します –

+0

完璧に作業しました! –

+0

int範囲外で動作するように変更する必要はありますか?長く言うことができます。 –

答えて

2

あなたは戻り値がある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 
+0

2.0または3.0はすべて私にvbDouble、つまり5 –

+0

を与えます。これは私が望ましくないものです。 –

+1

これは、2.0と3.0がダブルスであるからです –

関連する問題