2016-08-05 6 views
0

숫자가 정수 (2 또는 3.0 또는 4.0) 또는 이중 (2.2 또는 3.2)이 될 수 있습니다. myNumber 2.3과 같이이 경우에도 출력이 항상 True입니다 그러나VBA : VBA에서 숫자가 double인지 정수인지 확인하는 방법?

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

:

나는 다음과 같은 코드를 사용하려고 노력했다.

어떻게 수정해야합니까?

+3

'isInteger =에 CInt (myNumber) = myNumber "당신이 Int의 범위를 벗어나는 숫자를 다루지 않는다고 가정 해보십시오. 모드는 정수만 반환합니다 –

+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은 두 배가되기 때문입니다. –

관련 문제