作者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://webptt.com/m.aspx?n=bbs/Office/M.1579798136.A.DB0.html
1F:→ soyoso: 內文所提供的,應是會先產生編譯錯誤,因為array內少了雙 01/24 08:25
2F:→ soyoso: 引號,應為array("日期","品名","數量","狀態","備註") 01/24 08:26
3F:→ soyoso: 如果實際也是打上面的話,測試inserthad array(...)或 01/24 08:28
5F:→ soyoso: 因此請提供更完整的部分來測試才會比較清楚 01/24 08:29
6F:→ yimean: @s大,不是很懂,我有雙引號阿。不過你說的沒錯是編譯錯誤 01/24 11:21
8F:→ soyoso: 我回文寫了是內文所提供的,沒有雙引號 01/24 11:23
9F:→ soyoso: 來,請看,內文提供的,我直接複製到程序內,就是出現編輯 01/24 11:24
11F:→ soyoso: 編譯 01/24 11:25
12F:→ soyoso: 所以我才回內文少了雙引號 01/24 11:26
13F:→ soyoso: 如以原po回文資料來模擬,且程序insert_header引數個數相 01/24 11:45
15F:→ soyoso: 但可以模擬出該錯誤訊息是以head() 01/24 11:48
17F:→ soyoso: 這樣了。如果也不是,再請提醒01/24 08:29請提供"更完整" 01/24 11:49
18F:→ soyoso: 的部分來測試,也不要讓回文者再那邊猜 01/24 11:50
19F:→ yimean: @s大,感謝您耐心回復,奉上連結,麻煩您了。 01/24 13:08
→ yimean: https://github.com/yimeantw/VBA-Questions/
※ 編輯: yimean (106.1.36.147 臺灣), 01/24/2020 13:12:52
20F:→ soyoso: ?看了原po的檔案,不就是我01/24 11:48所提到的 01/24 13:25
21F:→ soyoso: 因為head()的關係,那要改成什麼,就是內文所寫的head 01/24 13:27
22F:→ soyoso: 01/24 08:28和01/24 11:46所錄製都是再解釋如何可正確傳入 01/24 13:29
23F:→ soyoso: 和接收 01/24 13:29
24F:→ soyoso: 其他寫法測試也有錯誤 01/24 13:46
25F:→ soyoso: 1.有寫Option Explicit,那就需明確地宣告所有變數,但變 01/24 13:46
26F:→ soyoso: 數j,head,End_Column都沒有宣告 01/24 13:46
27F:→ soyoso: 2.設計的按鈕在工作表"控制視窗"而range.select選取不是在 01/24 13:46
28F:→ soyoso: 該工作表的話,會有錯誤,先worksheet.activate或select, 01/24 13:46
29F:→ soyoso: 在生管頁面這個工作表後再range.select 01/24 13:46
30F:→ soyoso: 3.迴圈於變數header集合,也是以header,不需header() 01/24 13:46
31F:→ soyoso: 4.迴圈內要累加變數j要這樣寫的話,初始值就不要是0,因為 01/24 13:46
32F:→ soyoso: 第一次cells(1,j),這時j帶入0,這個儲存格是不存在的 01/24 13:46
33F:→ yimean: @s大,感謝您的耐心指導,是小弟沒弄清楚您的意思,抱歉。 01/24 16:17
35F:→ soyoso: 一開始出現,型態不符:必須是陣列或使用者自訂型態,這應 01/24 16:39
36F:→ soyoso: 該就是原po內文所述的錯誤訊息吧 01/24 16:39
37F:→ soyoso: 那原因是什麼就是header()不要括號,就可以 01/24 16:41
38F:→ soyoso: 至於實際巨集接下來是動作的,因只是要解釋內文錯誤產生的 01/24 16:42
39F:→ soyoso: 原因,我就刪除了;而接下來的動作也會錯誤,而該錯誤產生 01/24 16:43
40F:→ soyoso: 的原因,我也回在13:46的四點內了 01/24 16:43
41F:→ yimean: @S大,我已經解決這個問題了喔。感謝您。 01/24 16:44