【问题标题】:How to run different VBA macros on selected work sheets如何在选定的工作表上运行不同的 VBA 宏
【发布时间】:2015-05-07 10:19:13
【问题描述】:

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

我有不同工作表的宏。

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

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

【问题讨论】:

    标签: vba excel excel-2010


    【解决方案1】:

    您可以将 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
    

    【讨论】:

      【解决方案2】:

      这取决于您保存宏的位置。每个录制的宏都保存在一个模块文件中。您必须打开 Visual Basic 编辑器 (Alt+F11),然后您可以在工作表上定义一个子例程(双击 Worksheet1 打开一个新的编辑器窗口)。在那里你可以使用这样的东西:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-10
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 2022-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多