我有2 Workbooks
。它们包含不同的数据和工作表,但有一些相同的宏名称,它们由相同的键盘快捷键运行。
例如:两者都有Sub ArrangeTitles()
宏,由Ctrl+Shift+R
调用。这些Subs中的vba代码是不同的。
当两个工作簿都打开并且用户按下时,问题就开始了
Ctrl+Shift+R
,有时运行错误的子(&#34;其他工作簿的子&#34;),这是根据打开工作簿的顺序。< / p>
我的目标是能够激活属于右侧工作簿的右侧宏,而无需更改任何名称或快捷方式。
我已经在网络上寻找解决方案而没有成功。 所以我想出了一种运行良好的旁路解决方案。 我很快就会在这里添加答案。
答案 0 :(得分:1)
解决方案基于将每个macro
附加到ActiveWorkbook.Name
。
对于每个工作簿,以及每个&#34;有问题的&#34;宏(例如:我的Sub ArrangeTitles
),请执行以下操作:
在Excel&#34; View&#34;标签 - &gt;宏:
Sub ArrangeTitles
键盘激活Ctrl+Shift+R
。在VBA代码:
可选:将ArrangeTitles
Sub
更改为Function
。
可选:添加新模块以包含我的新&#34;连接子&#34;如下:
Sub Ctrl_Shift_R() Dim strPath As String strPath = "'" & ActiveWorkbook.Name & "'" & "!ArrangeTitles" ' The target macro within it's current wWorkbook Application.Run (strPath) End Sub
返回Excel&#34;查看&#34;标签 - &gt;宏:
macro Ctrl_Shift_R
连接到键盘激活:Ctrl + Shift + R。保存。
指示用户在使用Ctrl + Shift + R之前单击工作簿中的某个位置。