作者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/m.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