Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$10" Then
Call mymacro
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
问题是:
您可以使用Workbook_SheetChange事件.将代码放在工作簿模块中.然后就不需要复制任何代码了.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$D$10" Then
Call mymacro
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑如果您需要阻止代码在某些工作表上运行,您可以添加以下功能
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
On Error Resume Next ' Invalid Parameters passed, IsInArray will be defaulted to FALSE
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Run Code Online (Sandbox Code Playgroud)
并将Workbook_SheetChange事件更改为
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim shArr() As Variant
'Example, mymacro will not run on the sheets "Overview" and "Total"
shArr = Array("Overview", "Total")
If Not IsInArray(Sh.Name, shArr) Then
If Target.Address = "$D$10" Then
Call mymacro
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)