Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何热键当前工作表';什么是VBA代码?_Vba_Excel_Excel 2013 - Fatal编程技术网

如何热键当前工作表';什么是VBA代码?

如何热键当前工作表';什么是VBA代码?,vba,excel,excel-2013,Vba,Excel,Excel 2013,每次我点击某个我不想要的东西时,我都会触发工作表\u SelectionChange(ByVal Target As Range)问题,因为这意味着每次点击实际工作表时我都必须等待。我将代码更改为工作表\u Open,但这意味着无论何时我想要运行代码,都必须单击“运行”按钮 因此,我正在寻找一种只在查看工作表时(而不是在VBA编辑器中)运行当前工作表VBA代码的方法。理想情况下,我可以使用Application.OnKey将其分配给热键,但我不知道如何引用工作表的代码本身。我找到的唯一解决方案是

每次我点击某个我不想要的东西时,我都会触发
工作表\u SelectionChange(ByVal Target As Range)
问题,因为这意味着每次点击实际工作表时我都必须等待。我将代码更改为
工作表\u Open
,但这意味着无论何时我想要运行代码,都必须单击“运行”按钮


因此,我正在寻找一种只在查看工作表时(而不是在VBA编辑器中)运行当前工作表VBA代码的方法。理想情况下,我可以使用
Application.OnKey
将其分配给热键,但我不知道如何引用工作表的代码本身。我找到的唯一解决方案是使用一个外部宏,这是没有帮助的,因为我只想使用工作表中已经存在的代码,因为我正在为工作簿中的每个工作表使用不同的宏。

在设置热键的模块中创建宏,此宏将调用您需要的宏:
CallByName-ActiveSheet,ActiveSheet.Name&“Macro”,VbMethod

因此,您需要在每个工作表中以SheetNameMacro的格式命名宏

更多说明:

更新 如果工作表名称包含空格,则使用此选项:
CallByName-ActiveSheet,替换(ActiveSheet.Name,“,”和“Macro”,VbMethod


当然,也要替换工作表中的空格(例如,如果工作表名为“要删除的列表”宏名应该是list_to_deleteMacro。

如果您不想让它响应事件,为什么要将它放在工作表的模块中。将它移动到标准模块并分配一个热键。这样行吗?或者在电子表格中添加一个按钮并将宏附加到按钮。这对我来说是最简单的,因为我总是记不清哪个热键是I've分配给了哪些宏:)@PeterT你说的是命令按钮吗?那就行了。但这在一定程度上只是我在学习VBA的创造性,命令按钮有点太简单了,尽管绝对有效。此外,由于在本例中我有3个不同的工作表,这意味着在将excel文件发送给收件人之前添加3个按钮,然后删除它们。还是没什么大不了的,但我正在寻找一种完全自动化的方法。是的,一个表单控件按钮(如果你喜欢,可以使用ActiveX按钮,但是表单控件版本也可以)。因此,如果工作表名为“链接到删除”,那么我应该将我的宏命名为“链接到删除宏”?我的一个工作表名为“From SuccessFactors”,因此我将宏的名称命名为“From SuccessFactorsMacro”。当我使用模块的热键时,我得到:“运行时错误'40036':工作表名称中的“应用程序定义或对象定义错误”空格肯定会出现问题,请尝试消除它们,或者使用更新的代码OK是的,看起来空格是个问题,我看不到在宏名称中使用空格的方法,所以我将它改为下划线。你知道一种暂停宏运行的方法吗?VBA编辑器指示它正在连续运行。按ctrl+break可停止它