Vba 将模块代码应用于多张图纸
我创建了一个工作表,它调用多个模块来执行不同的操作,例如计算或隐藏行等 我创建的工作簿和代码仅用于1张工作表,但现在我复制了该工作表并创建了10张工作表,我正在尝试使用我创建的相同模块,并将该代码应用于新工作表 我对excel VBA非常了解,我发现的主题要么不理解,要么不符合我的需要 我的代码示例: 我把这个代码放在表1中Vba 将模块代码应用于多张图纸,vba,excel,triggers,Vba,Excel,Triggers,我创建了一个工作表,它调用多个模块来执行不同的操作,例如计算或隐藏行等 我创建的工作簿和代码仅用于1张工作表,但现在我复制了该工作表并创建了10张工作表,我正在尝试使用我创建的相同模块,并将该代码应用于新工作表 我对excel VBA非常了解,我发现的主题要么不理解,要么不符合我的需要 我的代码示例: 我把这个代码放在表1中 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$2" Then
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
我知道问题是我的模块引用了单个工作表,但我还没有找到一种方法使该模块应用于活动工作表。您将希望放弃单个事件宏,而使用单个事件宏
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
模块1代码表中:
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
工作簿\u SheetChange捕获对任何工作表所做的更改。首先检查工作表是否是要处理的工作表之一。如果是,请检查目标地址以查看应该运行哪个子过程。将工作表作为一个参数传递到相应的子过程,并在a中使用该参数为所有进一步处理指定父工作表
您应该删除各个工作表代码表“工作表更改子项”中的所有类似代码。您将希望放弃各个事件宏,而选择单个事件宏
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
模块1代码表中:
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
工作簿\u SheetChange捕获对任何工作表所做的更改。首先检查工作表是否是要处理的工作表之一。如果是,请检查目标地址以查看应该运行哪个子过程。将工作表作为一个参数传递到相应的子过程,并在a中使用该参数为所有进一步处理指定父工作表
您应该删除各个工作表代码表的“工作表更改”子项中的所有类似代码