我每次点击某些内容时都会遇到0
触发的问题,这是我不想要的,因为这意味着我每次点击实际工作表时都要等待。我将代码更改为Worksheet_SelectionChange(ByVal Target As Range)
,但这意味着每当我希望代码运行时,我都必须单击“运行”按钮。
所以我正在寻找一种只在我查看工作表时才能运行当前工作表的VBA代码的方法(而不是在我在VBA编辑器中时)。理想情况下,我可以使用Worksheet_Open
将其分配给热键,但我无法弄清楚如何引用工作表的代码本身。我发现的唯一解决方案是引用外部宏,这没有用,因为我只想使用工作表中已有的代码,因为我在工作簿中为每个工作表使用不同的宏。 / p>
答案 0 :(得分:1)
在您为其设置热键的模块中创建一个宏,此宏将调用您需要的宏:
CallByName ActiveSheet, ActiveSheet.Name & "Macro", VbMethod
。
因此,您需要在每个工作表中以SheetNameMacro的格式命名宏。
更多解释:Trying to call a Sub with a String - VBA
如果您的工作表名称包含空格,请使用此:
CallByName ActiveSheet, Replace(ActiveSheet.Name," ","_") & "Macro", VbMethod
当然还要替换工作表中的空格(例如,如果您的工作表名为"列表要删除"而不是宏名称应该是list_to_deleteMacro。