作者HugoStiglitz (needs no nick name)
看板Visual_Basic
标题[VBA ] inputbox 与运算
时间Sat Mar 29 17:47:56 2014
新手遇到一个想不通的问题@@
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
这其中的差异到底在哪里呢??
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.39.188.93
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1396086478.A.99A.html
1F:→ MOONRAKER:你碰到bug了。没事用一用val()ㄅ 03/29 18:45
2F:→ tsongs:a = Val(InputBox(""))你写法不是直接出错就是变成你看到的 03/29 18:55
3F:推 tsongs:宣告之後 最好还是用Cstr Val 之类指定变数型态比较稳 03/29 18:59
4F:推 knstt:不是bug,是你没有完整宣告 03/29 19:19
5F:→ knstt:Dim a (As Variant), b (As Variant), c As Integer 03/29 19:20
6F:→ knstt:你只有c宣告成整数,忽略的话预设是宣告成 Variant 03/29 19:20
7F:→ knstt:正确的宣告是dim a as long, b as long, c as String 03/29 19:21
8F:→ knstt:附带一提,用Long会比Integer 好 03/29 19:21
9F:→ HugoStiglitz:谢谢各位大大 03/29 19:39
10F:→ MOONRAKER:OUCH 忘了DIM AS这个大陷阱了 >_< 03/31 15:18
11F:推 tsongs:原来是这样 一直没弄清楚 04/01 10:40