Vba 使用不同工作表中的更改触发宏

Vba 使用不同工作表中的更改触发宏,vba,excel,Vba,Excel,对任何不正确的术语表示歉意,这是我第一次尝试编写宏代码。我目前正在运行以下代码: Private Sub Worksheet_Deactivate() 'Alpha Show / Hide If Sheets("Project_selection").Range("D4") = Range("C2") Then Sheet3.EnableCalculation = True ElseIf Sheets("Project_selection").Range("D4") = "All" Th

对任何不正确的术语表示歉意,这是我第一次尝试编写宏代码。我目前正在运行以下代码:

Private Sub Worksheet_Deactivate()
'Alpha Show / Hide
If Sheets("Project_selection").Range("D4") = Range("C2") Then
    Sheet3.EnableCalculation = True
ElseIf Sheets("Project_selection").Range("D4") = "All" Then
    Sheet3.EnableCalculation = True
    Else
        Sheet3.EnableCalculation = False
End If
End Sub
这是由其他代码和谷歌拼凑而成的。这是可行的,但只有当我离开工作表时,我认为这是由第一行驱动的

实际上,我希望它在“项目选择”表(代码所在的单独表)中的单元格D4发生更改时激活-有人知道我会怎么做吗?我看到对工作表的引用发生了变化,但我不理解如何定义目标/范围以获得适当的引用


希望这是有意义的,并提前感谢

如果要将以下代码放在工作表(项目_选择)下,则每当单元格D4中发生更改时,它都会触发该事件:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet: Set ws = Sheets("Project_selection")
    If Target.Address = "$D$4" Then
        If ws.Range("D4") = ws.Range("C2") Then
            Sheet3.EnableCalculation = True
        ElseIf ws.Range("D4") = "All" Then
            Sheet3.EnableCalculation = True
        Else
            Sheet3.EnableCalculation = False
        End If
    End If
End Sub

非常感谢!但是,如果我想添加一个新的工作表,并且结果与我需要添加到该宏的结果相同(工作表4所示),那么我是否正确?如果是这样的话,问题是其他人将使用它,他们根本不使用宏,因此将无法更新。这就是为什么我希望为每个选项卡分配一个宏,在复制时,该宏将维护代码。@Padlilly115您可以做的是,将此代码添加到工作簿中,并对其稍加修改,以便在任何工作表中的给定单元格中发生更改时,它将运行,但这将取决于你想省略和包含多少张纸。这实际上是一个非常简单但绝妙的想法,我会看看我是否能让它起作用。非常感谢你的帮助。