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

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

我有不同的工作表的macros。

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

我的要求是当我点击以SOD开始的工作表时,如何运行与SOD有关的macros。 同样在所有表中。

工作表

您可以将一个子文件保存到您的ThisWorkbook模块。 它会触发任何工作表激活事件。 工作表可以作为一个parameter passing给子调用。

 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 

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

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