看板 Visual_Basic 關於我們 聯絡資訊
話說, 最近把一年多前寫的程式拿出來翻修, 結果不知道怎麼搞的, 以前沒問題的地方出了問題了@@" 就是執行到某的FUNCTION的時候,會出現ByRef引數型態不符。 於是我重新查了一下變數型態, 發現奇怪的問題@@" 我原本在 一般區 宣告 這裡宣告的變數, 用「區域變數監視視窗」來看,都變成Variant/XXXX這樣== *** 補:剛剛發現,我變數會變成Variant/XXXX的,都是在宣告非最末端的變數 例如下面例子中,我這樣宣告的時候, 用「區域變數監視視窗」來看,AnotherBianSu, criFix是Variant/XXXX 而SomethingElse是Single.... 但是我有加強制宣告,為什麼Compile時會讓我過?== 應該說,明明就有宣告,而且也讓我過了,為什麼變數還是Viriant/XXXX...? 不知道是我這次修改程式的時候動到什麼東西了還是怎樣~ 一年前寫的時候沒這問題@@" -- 我的例子是這樣: 我在一般宣告區: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Option Explicit Private AnotherBianSu, criFix, SomethingElse as single <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 然後寫了個Function: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Function Dice(Dice_type as string, option Fix_cri as single=0) as single Select case Dice_type case "a" Dice=5*Fix_cri+1 執行後這裡會被標起來說ByRef引數型態不符 '這時候監看變數的結果Fix_cri是Variant/Double,可能是錯在這。我引的是SINGLE case "b" Dice=10*Fix_cri+2 End select End Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 然後有個程序要呼叫他: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Private Sub Command1_Click() Dim X as single If !%$@#^ then criFix = -0.05 Else criFix = 0 End If X = Dice("a", criFix) '第一個引數A 或 B都一樣 End Sub <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -- 與其去懊悔做不到的事, 倒不如去做能做的事。 就算它和結果無關, 還是能夠往前邁進。 http://www.wretch.cc/blog/AlphaWing/24383501 From xxxHoLic vol.9 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.9.136.123
fumizuki:沒有接As 一律為Variant型態 寫在同一行也一樣 12/22 21:14
A1pha:是喔QQ 我常看到書上寫 Dim x, y as Integer大概那書在寫 12/22 21:23
A1pha:的時候沒有寫的很嚴謹== 謝謝大大XDDDD 12/22 21:23
A1pha:現在回想,我那程式之前居然跑得動運氣真的太好了QQ 12/22 21:25
MOONRAKER:這是一個很常見的謬誤, 可能來自其他語言的習慣, 如C等 12/23 16:57
MOONRAKER:到.NET才把這種多個變數宣告為同一type的寫法制式化 12/23 16:58
A1pha:嗯嗯QQ 我的確有學過C~常常會兩個搞混@@" 01/17 10:37