這個好像是
VB 的奇怪點
照理說
沒指定時是 Variant
這個類似變數
可任意接受/更換 變數型態
但
一開始時
Form_Load() 執行過一次 getMMdays
第二次要用就不行
我也說不上來
實際上要用
除錯方式監看 引數(變數)型態 的 變換才可知 VB是如何作業的
VB的 強迫轉換 與 C++的強迫轉換 還是有差異的
其實還可以做一些實驗來理解VB的編譯方式
比如
於 Form_Load()
重複執行兩次 nMdays = getMMdays
nMdays = getMMdays(CInt(nYear.Text), CInt(nMonth.Text))
nMdays = getMMdays(CInt(nYear.Text), CInt(nMonth.Text))
來證明是否為上述理論
如是
那又有另一個理論
是否執行第一次時
Function getMMdays(pnYear, pnMonth)
就會變成
Function getMMdays(pnYear as integer, pnMonth as integer)
或
Function getMMdays(pnYear as Variant, pnMonth as Variant)
以致於不能接受其他變數型態
對了
以自己的經驗
你可以用一個變數來間接傳值
這樣就可繼續用 Cint 方式
Private Sub Form_Load() '表格load
nYear.Text = Year(Now)
nMonth.Text = Month(Now)
dim x
dim y ' 要分開寫而不是 dim x,y 寫在一起
x=CInt(nYear.Text)
y=CInt(nMonth.Text)
nMdays = getMMdays(x,y)