VBA Application.OnTime指定工作簿和宏名称并发送参数

时间:2017-10-11 19:39:27

标签: vba excel-vba excel

我正在寻找运行Application.OnTime并指定工作簿和一些参数。我可以让他们自己工作,但不能一起工作。

例如,如果“MacroToBeCalled”子例程与我设置Application.OnTime的工作簿相同,则以下代码有效。它使用单引号,如here所述。

Application.OnTime Now(), "'MacroToBeCalled ""String To Send""'"

此外,如果“MacroToBeCalled”子例程位于名为“Test File.xlsm”的工作簿中,则以下代码有效,这与我运行此代码行的位置不同。

Application.OnTime Now(), "'Test File.xlsm'!MacroToBeCalled"

但是,我找不到发送参数的方法。我正在寻找类似下面的东西,虽然这不起作用。

Application.OnTime Now(), "''Test File.xlsm'!MacroToBeCalled ""String To Send""'"

如果有可能,我需要为此工作提供的字符串格式是什么?

如果你需要更多的细节,我有两个工作簿,比如说一个叫A,一个叫做B. A和B都包含一个名为MacroToBeCalled的子程序。我在工作簿A中使用了一个按钮,它使用Application.Run在工作簿B中运行一个名为SetOnTimeToRunMacro的宏。我想要的是工作簿B中的SetOnTimeToRunMacro子例程调用Application.OnTime来运行工作簿B中的MacroToBeCalled。但是,当OnTime实际被触发时,它正在运行{{ 1}}在工作簿A而不是B中,即使在工作簿B中设置了MacroToBeCalled。如果删除参数并指定工作簿,则它在工作簿B中有效。

1 个答案:

答案 0 :(得分:1)

使用的正确格式为:

Application.OnTime Now(), "'Test File.xlsm'!'MacroToBeCalled ""String To Send""'"

之前的部分!标记和后面的部分应该有单引号。