将模块代码应用于多个表格

我创build了一个工作表,调用多个模块来进行不同的操作,如计算或隐藏行等。

我创build了该工作簿和代码,只能使用1张工作表,但现在我复制了该工作表并创build了10个以上,我正在尝试使用与创build的相同模块,并将该代码应用于新工作表。

我在excel VBA中很基本,而且我发现的话题是我不了解他们或者不符合我的需求。

我的代码示例:

我把这个代码放在Sheet1中

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$2" Then ModuloAct End If If Target.Address = "$E$10" Then Colaborador End If If Target.Address = "$E$11" Then Dias End If End Sub 

模块示例

 Sub ModuloAct() If Worksheets("Hoja1").Cells(2, 5).Value = "T" Then Worksheets("Hoja1").Cells(8, 5).Value = 0.16 Worksheets("Hoja1").Cells(2, 5).Value = "Tension" End Sub 

我知道问题是,我的模块被引用到一张表,但我还没有find一种方法,使该模块适用于活动工作表。

您将要放弃单个Worksheet_Change事件macros,以支持单个Workbook_SheetChange事件macros。

在ThisWorkbook代码表中:

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Count > 1 Then Exit Sub On Error GoTo bm_Safe_Exit 'check for a valid worksheet name Select Case Sh.Name Case "Hoja1", "Hoja2", "Hoja3", "Hoja4" Application.EnableEvents = False Select Case Target.Address Case "$E$2" ModuloAct Sh Case "$E$10" Colaborador Sh Case "$E$11" Dias Sh Case Else 'do nothing End Select Case Else 'do nothing End Select bm_Safe_Exit: Application.EnableEvents = True End Sub 

在Module1代码表中:

 Sub ModuloAct(ws As Worksheet) With ws If .Cells(2, 5).Value = "T" Then .Cells(8, 5).Value = 0.16 .Cells(2, 5).Value = "Tension" End If End With End Sub 

Workbook_SheetChange捕获对任何工作表进行的更改。 首先检查工作表是否是您想要处理的工作表之一。 如果是,请检查目标地址以查看应运行的子程序。 将工作表传递给适当的子过程作为Worksheet对象,并在With … End With语句中使用该参数为所有进一步处理分配父工作表。

您应该删除各个工作表代码工作表的Worksheet_Change子文件中的所有类似代码。