作者yimean (溫柔殺手)
看板Office
標題[算表] VBA 陣列傳入子程序問題
時間Fri Jan 24 00:48:54 2020
各位板上高手晚上好。
我想要把一個字串陣列傳入sub中,試了很多方法都不成功,錯誤訊息:型態錯誤,必需是
陣列或使用者自定義。我的code 如下。
sub inserthead(head as variant)
略
end sub
a=array("日期","品名","數量,"狀態,"備註")
inserthead header
有確認過a是有建立起來的。
呼叫時有試過下列方式都失敗
inserthead array("日期","品名","數量,"狀態,"備註")
inserthead ("日期","品名","數量,"狀態,"備註")
inserthead a
以上,請高手指導一下,感恩。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.137.52.102 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1579798136.A.DB0.html
→ soyoso: 內文所提供的,應是會先產生編譯錯誤,因為array內少了雙 01/24 08:25
→ soyoso: 引號,應為array("日期","品名","數量","狀態","備註") 01/24 08:26
→ soyoso: 如果實際也是打上面的話,測試inserthad array(...)或 01/24 08:28
→ soyoso: 因此請提供更完整的部分來測試才會比較清楚 01/24 08:29
→ yimean: @s大,不是很懂,我有雙引號阿。不過你說的沒錯是編譯錯誤 01/24 11:21
→ soyoso: 我回文寫了是內文所提供的,沒有雙引號 01/24 11:23
→ soyoso: 來,請看,內文提供的,我直接複製到程序內,就是出現編輯 01/24 11:24
→ soyoso: 編譯 01/24 11:25
→ soyoso: 所以我才回內文少了雙引號 01/24 11:26
→ soyoso: 如以原po回文資料來模擬,且程序insert_header引數個數相 01/24 11:45
→ soyoso: 但可以模擬出該錯誤訊息是以head() 01/24 11:48
→ soyoso: 這樣了。如果也不是,再請提醒01/24 08:29請提供"更完整" 01/24 11:49
→ soyoso: 的部分來測試,也不要讓回文者再那邊猜 01/24 11:50
→ yimean: @s大,感謝您耐心回復,奉上連結,麻煩您了。 01/24 13:08
→ yimean: https://github.com/yimeantw/VBA-Questions/
※ 編輯: yimean (106.1.36.147 臺灣), 01/24/2020 13:12:52
→ soyoso: ?看了原po的檔案,不就是我01/24 11:48所提到的 01/24 13:25
→ soyoso: 因為head()的關係,那要改成什麼,就是內文所寫的head 01/24 13:27
→ soyoso: 01/24 08:28和01/24 11:46所錄製都是再解釋如何可正確傳入 01/24 13:29
→ soyoso: 和接收 01/24 13:29
→ soyoso: 其他寫法測試也有錯誤 01/24 13:46
→ soyoso: 1.有寫Option Explicit,那就需明確地宣告所有變數,但變 01/24 13:46
→ soyoso: 數j,head,End_Column都沒有宣告 01/24 13:46
→ soyoso: 2.設計的按鈕在工作表"控制視窗"而range.select選取不是在 01/24 13:46
→ soyoso: 該工作表的話,會有錯誤,先worksheet.activate或select, 01/24 13:46
→ soyoso: 在生管頁面這個工作表後再range.select 01/24 13:46
→ soyoso: 3.迴圈於變數header集合,也是以header,不需header() 01/24 13:46
→ soyoso: 4.迴圈內要累加變數j要這樣寫的話,初始值就不要是0,因為 01/24 13:46
→ soyoso: 第一次cells(1,j),這時j帶入0,這個儲存格是不存在的 01/24 13:46
→ yimean: @s大,感謝您的耐心指導,是小弟沒弄清楚您的意思,抱歉。 01/24 16:17
→ soyoso: 一開始出現,型態不符:必須是陣列或使用者自訂型態,這應 01/24 16:39
→ soyoso: 該就是原po內文所述的錯誤訊息吧 01/24 16:39
→ soyoso: 那原因是什麼就是header()不要括號,就可以 01/24 16:41
→ soyoso: 至於實際巨集接下來是動作的,因只是要解釋內文錯誤產生的 01/24 16:42
→ soyoso: 原因,我就刪除了;而接下來的動作也會錯誤,而該錯誤產生 01/24 16:43
→ soyoso: 的原因,我也回在13:46的四點內了 01/24 16:43
→ yimean: @S大,我已經解決這個問題了喔。感謝您。 01/24 16:44