[算表] VBA 陣列傳入子程序問題

作者: yimean (溫柔殺手)   2020-01-24 00:48:54
各位板上高手晚上好。
我想要把一個字串陣列傳入sub中,試了很多方法都不成功,錯誤訊息:型態錯誤,必需是
陣列或使用者自定義。我的code 如下。
sub inserthead(head as variant)

end sub
a=array("日期","品名","數量,"狀態,"備註")
inserthead header
有確認過a是有建立起來的。
呼叫時有試過下列方式都失敗
inserthead array("日期","品名","數量,"狀態,"備註")
inserthead ("日期","品名","數量,"狀態,"備註")
inserthead a
以上,請高手指導一下,感恩。
作者: soyoso (我是耀宗)   2020-01-24 08:25:00
內文所提供的,應是會先產生編譯錯誤,因為array內少了雙引號,應為array("日期","品名","數量","狀態","備註")如果實際也是打上面的話,測試inserthad array(...)或inserthead a也是可行的https://i.imgur.com/3dPPmIC.gifv因此請提供更完整的部分來測試才會比較清楚
作者: yimean (溫柔殺手)   2020-01-24 11:21:00
@s大,不是很懂,我有雙引號阿。不過你說的沒錯是編譯錯誤https://imgur.com/sbHxSZ0
作者: soyoso (我是耀宗)   2020-01-24 11:23:00
我回文寫了是內文所提供的,沒有雙引號來,請看,內文提供的,我直接複製到程序內,就是出現編輯錯誤 https://i.imgur.com/SjY9GNY.jpg編譯所以我才回內文少了雙引號如以原po回文資料來模擬,且程序insert_header引數個數相符下,是可以的 https://i.imgur.com/B2IndGb.gifv但可以模擬出該錯誤訊息是以head()如 https://i.imgur.com/PYdg5yR.jpg 這就不知原po是否是這樣了。如果也不是,再請提醒01/24 08:29請提供"更完整"的部分來測試,也不要讓回文者再那邊猜
作者: yimean (溫柔殺手)   2020-01-24 13:08:00
@s大,感謝您耐心回復,奉上連結,麻煩您了。
作者: soyoso (我是耀宗)   2020-01-24 13:25:00
?看了原po的檔案,不就是我01/24 11:48所提到的因為head()的關係,那要改成什麼,就是內文所寫的head01/24 08:28和01/24 11:46所錄製都是再解釋如何可正確傳入和接收其他寫法測試也有錯誤1.有寫Option Explicit,那就需明確地宣告所有變數,但變數j,head,End_Column都沒有宣告2.設計的按鈕在工作表"控制視窗"而range.select選取不是在該工作表的話,會有錯誤,先worksheet.activate或select,在生管頁面這個工作表後再range.select3.迴圈於變數header集合,也是以header,不需header()4.迴圈內要累加變數j要這樣寫的話,初始值就不要是0,因為第一次cells(1,j),這時j帶入0,這個儲存格是不存在的
作者: yimean (溫柔殺手)   2020-01-24 16:17:00
@s大,感謝您的耐心指導,是小弟沒弄清楚您的意思,抱歉。
作者: soyoso (我是耀宗)   2020-01-24 16:37:00
https://i.imgur.com/1tUnOOK.gifv 那看錄製的部分吧一開始出現,型態不符:必須是陣列或使用者自訂型態,這應該就是原po內文所述的錯誤訊息吧那原因是什麼就是header()不要括號,就可以至於實際巨集接下來是動作的,因只是要解釋內文錯誤產生的原因,我就刪除了;而接下來的動作也會錯誤,而該錯誤產生的原因,我也回在13:46的四點內了
作者: yimean (溫柔殺手)   2020-01-24 16:44:00
@S大,我已經解決這個問題了喔。感謝您。

Links booklink

Contact Us: admin [ a t ] ucptt.com