我有几个执行计时器和宏的 excel 文件。但一个大问题是当工作簿 A 的宏被调用时,工作簿 B 处于事件状态。宏在错误的书中执行并失败。
期待您的回答
最佳答案
你在正确的轨道上
2.If I have different modules how do I pass this workbook name to all of them
我假设您的宏正在使用
ActiveWorkbook
属性,或仅使用工作表属性,如 Range
没有资格他们?而不是使用
ActiveWorkbook
使用 ThisWorkbook
.而不是使用 Range
使用 ThisWoorkbook.Worksheets(1).Range
等等。否则,宏将假定事件工作表是您想要的。Sub MyMacro
Range("A1").Text = "Test"
End Sub
尝试
Sub MyMacro(ByVal oWorksheet as Worksheet)
oWorksheet.Range("A1").Text = "Test"
End Sub
然后将工作表对象作为参数传递。
您还可以找到
ThisWorkbook
有用的对象 - 它是宏所在的工作簿,或 Application.Caller
对象,它是调用当前宏的对象,例如 Range 对象(如果它是单元格公式),或者可能是您的情况下的计时器对象。
关于excel - 如何避免在错误的工作簿中执行 VBA 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260005/