使用ThisWorkbook类模块中的工作表事件

时间:2017-03-03 17:21:10

标签: excel excel-vba vba

我有一个包含大量工作表的工作簿,并希望在工作表触发事件时运行以下代码...除了我不想将代码复制到所有工作表

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$55" Then
         Target.Worksheet.Range(Range("A" & Left(Target.Text, 2)), Range("AE" & Left(Target.Text, 2))).Select
    End If
End Sub

所以我在ThisWorkbook类模块中尝试了下面的内容,但我一定是弄错了,因为它没有触发事件

Dim WithEvents xSheet As Worksheet

Private Sub xSheet_Change(ByVal Target As Range)
    If Target.Address = "$B$55" Then
         Target.Worksheet.Range(Range("A" & Left(Target.Text, 2)), Range("AE" & Left(Target.Text, 2))).Select
    End If
End Sub

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

假设您希望上述内容针对所有工作表而非特定工作表运行,您可以尝试使用Workbook_SheetChange中的ThisWorkbook事件。 E.g。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$B$55" Then
         Sh.Range(Range("A" & Left(Target.Text, 2)), Range("AE" & Left(Target.Text, 2))).Select
    End If
End Sub