作者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/cn.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