VBA 尝试使 WorkSheet_Change 在多张纸上工作,但不是全部

VBA Trying to make WorkSheet_Change work on multiple sheets but not all

我需要制作一个 Worksheet_Change 来检查 2 个不同工作表中 2 个不同单元格中值的变化。但是我有超过 2 张纸,不想使用 Workbook_Change,所以其他那些纸不受影响。

我的代码有效,但只检查一个工作表中的单元格,而不检查另一个工作表中的单元格。我需要检查两个工作表。

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("M9")) Is Nothing Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Call Macro5
    Application.EnableEvents = True
    Application.ScreenUpdating = True

    End If

If Not Intersect(Target, Range("I88")) Is Nothing Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Call Macro6
    Application.EnableEvents = True
    Application.ScreenUpdating = True

    End If

  End Sub

谢谢。

Private 命令将您的子例程限制在当前工作表中,因此您使用该命令来防止子例程更改您的所有工作表是正确的。

正如 newguy 所说,最简单的解决方法是将代码放入您希望它更改的每个工作表模块中,每个模块都使用 Private 命令。

在工作簿的代码模块中,您可以访问在任何工作表上触发的事件。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
      Application.EnableEvents = False
    Application.ScreenUpdating = False

    If (Not Intersect(Target, Range("M9")) Is Nothing) Then
        Call Macro5
    ElseIf (Not Intersect(Target, Range("M9")) Is Nothing) Then
        Call Macro6
    End If

    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

如果您需要知道触发事件的工作表,您可以使用 ByVal Sh As Object 参数。

If Sh.Name = "Sheet1" then

如果您想使用智能感知访问 Sh 对象的属性,请将 Sh 从对象转换回 WorkSheet 对象

Dim ws as WorkSheet
Set ws = Sh