[算表] 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