我有一个运行以下代码的excel表,每隔一段时间点击一个按钮就可以运行一些代码,打开一个excel表,它可以完美地工作,但如果你打开第二个,它会给出"下标超出范围">
我的假设是命令的上下文失败了,因为它不确定要引用哪个打开的excel表,但经过一系列的谷歌搜索,我还没能找到一个可行的解决方案。工作代码会很好,但我想理解为什么也会发生这种情况,我认为有了整个文件名,它就能找到自己。
Application.OnTime Now + TimeValue("00:02:30"), ("'Filename.xlsm'!Sheet2.CommandButton1_Click")
两件事:
-
永远不要调用事件处理程序。与其调用
CommandButton1_Click
,不如将所有代码放入一个专用过程中,然后由CommandButton1_Click
和.OnTime
调用该过程。注意:此代码应在常规模块中,而不是在工作表后面的代码中。 -
VBA是单线程的。因此,如果其他代码已经在运行,那么您的
.OnTime
就无法运行。