如何在选定的工作表上 运行 不同的 VBA 宏

How to run different VBA macros on selected work sheets

我有一个包含不同工作表的工作簿。

我有不同工作表的宏。

我有一个适用于所有以 SOD 开头的工作表的宏, 另一个用于以 DMNE 开头的工作表的宏,另一个用于以 SAS 开头的工作表的宏。 我有一个用于使用情况跟踪的宏。

我的需求是当我点击以SOD开头的工作表时,如何运行与SOD相关的宏。在所有工作表中也是如此。

这取决于您保存宏的位置。每个录制的宏都保存在一个模块文件中。您必须打开 Visual Basic 编辑器 (Alt+F11) 然后您可以在 sheet (Double -点击Worksheet1打开一个新的编辑器window)。在那里你可以使用这样的东西:

Private Sub Worksheet_Activate()
   If Left(ActiveSheet.Name, 3) = "SOD" then
      Call Module1.Macro1
      Call Module2.Macro2
   End If
End Sub

您可以将子内容保存到您的 ThisWorkbook 模块中。它将在任何工作表激活事件上触发。 工作表可以作为参数传递给子调用。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Left(Sh.Name, IIf(InStr(Sh.Name, "-") > 0, InStr(Sh.Name, "-") - 1, Len(Sh.Name)))
    Case "SOD"
        Call SOD(Sh)
    Case "SAS"
        Call SAS(Sh)
    Case "DMNE"
        Call DMNE(Sh)
    Case "Usage Tracking"
        Call UsageTracking
    Case Else
        MsgBox "sheet procedure not defined"
End Select
End Sub