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

看板Office作者 (溫柔殺手)時間6年前 (2020/01/24 00:48), 6年前編輯推噓0(0041)
留言41則, 2人參與, 6年前最新討論串1/1
各位板上高手晚上好。 我想要把一個字串陣列傳入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

01/24 08:25, 6年前 , 1F
內文所提供的,應是會先產生編譯錯誤,因為array內少了雙
01/24 08:25, 1F

01/24 08:26, 6年前 , 2F
引號,應為array("日期","品名","數量","狀態","備註")
01/24 08:26, 2F

01/24 08:28, 6年前 , 3F
如果實際也是打上面的話,測試inserthad array(...)或
01/24 08:28, 3F

01/24 08:28, 6年前 , 4F
inserthead a也是可行的https://i.imgur.com/3dPPmIC.gifv
01/24 08:28, 4F

01/24 08:29, 6年前 , 5F
因此請提供更完整的部分來測試才會比較清楚
01/24 08:29, 5F

01/24 11:21, 6年前 , 6F
@s大,不是很懂,我有雙引號阿。不過你說的沒錯是編譯錯誤
01/24 11:21, 6F

01/24 11:21, 6年前 , 7F

01/24 11:23, 6年前 , 8F
我回文寫了是內文所提供的,沒有雙引號
01/24 11:23, 8F

01/24 11:24, 6年前 , 9F
來,請看,內文提供的,我直接複製到程序內,就是出現編輯
01/24 11:24, 9F

01/24 11:24, 6年前 , 10F
01/24 11:24, 10F

01/24 11:25, 6年前 , 11F
編譯
01/24 11:25, 11F

01/24 11:26, 6年前 , 12F
所以我才回內文少了雙引號
01/24 11:26, 12F

01/24 11:45, 6年前 , 13F
如以原po回文資料來模擬,且程序insert_header引數個數相
01/24 11:45, 13F

01/24 11:46, 6年前 , 14F
符下,是可以的 https://i.imgur.com/B2IndGb.gifv
01/24 11:46, 14F

01/24 11:48, 6年前 , 15F
但可以模擬出該錯誤訊息是以head()
01/24 11:48, 15F

01/24 11:48, 6年前 , 16F
這就不知原po是否是
01/24 11:48, 16F

01/24 11:49, 6年前 , 17F
這樣了。如果也不是,再請提醒01/24 08:29請提供"更完整"
01/24 11:49, 17F

01/24 11:50, 6年前 , 18F
的部分來測試,也不要讓回文者再那邊猜
01/24 11:50, 18F

01/24 13:08, 6年前 , 19F
@s大,感謝您耐心回復,奉上連結,麻煩您了。
01/24 13:08, 19F
yimean: https://github.com/yimeantw/VBA-Questions/ ※ 編輯: yimean (106.1.36.147 臺灣), 01/24/2020 13:12:52

01/24 13:25, 6年前 , 20F
?看了原po的檔案,不就是我01/24 11:48所提到的
01/24 13:25, 20F

01/24 13:27, 6年前 , 21F
因為head()的關係,那要改成什麼,就是內文所寫的head
01/24 13:27, 21F

01/24 13:29, 6年前 , 22F
01/24 08:28和01/24 11:46所錄製都是再解釋如何可正確傳入
01/24 13:29, 22F

01/24 13:29, 6年前 , 23F
和接收
01/24 13:29, 23F

01/24 13:46, 6年前 , 24F
其他寫法測試也有錯誤
01/24 13:46, 24F

01/24 13:46, 6年前 , 25F
1.有寫Option Explicit,那就需明確地宣告所有變數,但變
01/24 13:46, 25F

01/24 13:46, 6年前 , 26F
數j,head,End_Column都沒有宣告
01/24 13:46, 26F

01/24 13:46, 6年前 , 27F
2.設計的按鈕在工作表"控制視窗"而range.select選取不是在
01/24 13:46, 27F

01/24 13:46, 6年前 , 28F
該工作表的話,會有錯誤,先worksheet.activate或select,
01/24 13:46, 28F

01/24 13:46, 6年前 , 29F
在生管頁面這個工作表後再range.select
01/24 13:46, 29F

01/24 13:46, 6年前 , 30F
3.迴圈於變數header集合,也是以header,不需header()
01/24 13:46, 30F

01/24 13:46, 6年前 , 31F
4.迴圈內要累加變數j要這樣寫的話,初始值就不要是0,因為
01/24 13:46, 31F

01/24 13:46, 6年前 , 32F
第一次cells(1,j),這時j帶入0,這個儲存格是不存在的
01/24 13:46, 32F

01/24 16:17, 6年前 , 33F
@s大,感謝您的耐心指導,是小弟沒弄清楚您的意思,抱歉。
01/24 16:17, 33F

01/24 16:37, 6年前 , 34F
https://i.imgur.com/1tUnOOK.gifv 那看錄製的部分吧
01/24 16:37, 34F

01/24 16:39, 6年前 , 35F
一開始出現,型態不符:必須是陣列或使用者自訂型態,這應
01/24 16:39, 35F

01/24 16:39, 6年前 , 36F
該就是原po內文所述的錯誤訊息吧
01/24 16:39, 36F

01/24 16:41, 6年前 , 37F
那原因是什麼就是header()不要括號,就可以
01/24 16:41, 37F

01/24 16:42, 6年前 , 38F
至於實際巨集接下來是動作的,因只是要解釋內文錯誤產生的
01/24 16:42, 38F

01/24 16:43, 6年前 , 39F
原因,我就刪除了;而接下來的動作也會錯誤,而該錯誤產生
01/24 16:43, 39F

01/24 16:43, 6年前 , 40F
的原因,我也回在13:46的四點內了
01/24 16:43, 40F

01/24 16:44, 6年前 , 41F
@S大,我已經解決這個問題了喔。感謝您。
01/24 16:44, 41F
文章代碼(AID): #1UASvusm (Office)
文章代碼(AID): #1UASvusm (Office)