不同的工作簿,相同的宏名称和激活快捷方式

时间:2017-09-12 18:47:45

标签: excel-vba vba excel

我有2 Workbooks。它们包含不同的数据和工作表,但有一些相同的宏名称,它们由相同的键盘快捷键运行。 例如:两者都有Sub ArrangeTitles()宏,由Ctrl+Shift+R调用。这些Subs中的vba代码是不同的。

两个工作簿都打开并且用户按下时,问题就开始了 Ctrl+Shift+R,有时运行错误的子(&#34;其他工作簿的子&#34;),这是根据打开工作簿的顺序。< / p>

我的目标是能够激活属于右侧工作簿右侧宏,而无需更改任何名称或快捷方式。

我已经在网络上寻找解决方案而没有成功。 所以我想出了一种运行良好的旁路解决方案。 我很快就会在这里添加答案。

1 个答案:

答案 0 :(得分:1)

解决方案基于将每个macro附加到ActiveWorkbook.Name

对于每个工作簿,以及每个&#34;有问题的&#34;宏(例如:我的Sub ArrangeTitles),请执行以下操作:

在Excel&#34; View&#34;标签 - &gt;宏:

  1. 断开Sub ArrangeTitles键盘激活Ctrl+Shift+R
  2. 在VBA代码:

    1. 可选:将ArrangeTitles Sub更改为Function

    2. 可选:添加新模块以包含我的新&#34;连接子&#34;如下:

    3. 添加:
    4. 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;宏:

      1. macro Ctrl_Shift_R连接到键盘激活:Ctrl + Shift + R。
      2. 保存。

      3. 指示用户在使用Ctrl + Shift + R之前单击工作簿中的某个位置。