我需要测试textbox1和textbox2中的值是整数还是长(没有小数位)。
我试过这样的事情:
Dim x As Integer
Dim y As Integer
x = TextBox1.Value
y = TextBox2.Value
If x = Int(x) Then
'my code
Else
MsgBox("value is not an integer")
如果我把x = 2.3,它不显示MsgBox,但它将值四舍五入为。
答案 0 :(得分:3)
由于您已将x
的类型指定为Integer
,因此已经从文本框字符串到Integer
的转换已经发生。因此Int(x)
是无操作。
一种解决方法是使用
之类的东西If IsNumber(TextBox1.Value) Then
If Fix(TextBox1.Value) = TextBox1.Value Then
'I am an integeral type.
End If
End If
这里,Fix
截断数字类型,我依靠VBA进行正确的比较。请注意,VBA未实现短圈 And
,因此您需要使用嵌套的If
或类似的。
答案 1 :(得分:1)
您无法在VBA中Dim var as Decimal
,但可以Dim var as Variant
并使用var = CDec(...)
在变量中存储小数数据类型。即使这样,我也发现在小数点后加一个数字(或从整数中减去等效的小数)的小数点后有14或15个零的四舍五入为整数。我还没有找到一种可将微小的小数与整数区分开的解决方案。
答案 2 :(得分:0)
这是另一种方法(伪代码,所以检查语法!)
Dim l_Temp_D1 as Decimal
Dim l_Temp_D2 as Decimal
Dim l_Temp_I as Integer
l_Temp_I = TextBox1.Value
l_Temp_D1 = TextBox1.Value
l_Temp_D2 = l_Temp_I
if (not IsNumber(TextBox1.Value)) then
' Error!!!
End If
if (l_Temp_D1 = l_Temp_D2) then
' Integer
...
else
' Float
...
End If