[VBA ] inputbox 与运算

楼主: HugoStiglitz (Meine Ehre heisst Treue)   2014-03-29 17:47:56
新手遇到一个想不通的问题@@
Sub q1()
Dim a, b, c As Integer
a = InputBox("")
b = InputBox("")
c = a + b
MsgBox c
End Sub
输入a=1 b=2 msgbox 显示出的却是12 而不是3
我的问题是:为什么已经宣告a,b 是整数型态 VBA却仍然把他当成字串??
符号 + 变成字串连结子而不是运算子?
我知道的解决的方法是改成 c= val(a) + val(b)
但是我另外又想到一个问题
Sub q2()
Dim a, b, c, d, e As Integer
a = InputBox("")
b = InputBox("")
c = a
d = b
e = c + d
MsgBox e
End Sub
这样的结果会和上面一样是12
可是只要改变宣告变量的顺序
Dim a, b, e, c, d As Integer
msgbox就会显示3
这其中的差异到底在哪里呢??
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-03-29 18:45:00
你碰到bug了。没事用一用val()ㄅ
作者: tsongs (......)   2014-03-29 18:55:00
a = Val(InputBox(""))你写法不是直接出错就是变成你看到的宣告之后 最好还是用Cstr Val 之类指定变量型态比较稳
作者: knstt   2014-03-29 19:19:00
不是bug,是你没有完整宣告Dim a (As Variant), b (As Variant), c As Integer你只有c宣告成整数,忽略的话默认是宣告成 Variant正确的宣告是dim a as long, b as long, c as String附带一提,用Long会比Integer 好
楼主: HugoStiglitz (Meine Ehre heisst Treue)   2014-03-29 19:39:00
谢谢各位大大
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-03-31 15:18:00
OUCH 忘了DIM AS这个大陷阱了 >_<
作者: tsongs (......)   2014-04-01 10:40:00
原来是这样 一直没弄清楚

Links booklink

Contact Us: admin [ a t ] ucptt.com