Excel VBA在单元格从yes更改为no时自动运行macros

有没有一种简单的方法让Excel自动执行一个macros,每当一个单元格更改?

Sub Change() If Range("E94").Value = "no" Then Rows("95:118").EntireRow.Hidden = True ElseIf Range("E94").Value = "yes" Then Rows("95:118").EntireRow.Hidden = False End If End Sub 

如果有人将单元格E94中的值从“否”(标准)更改为“是”,则应该从“95 – 118”中popup单元格。 如果我从“是”改回“否”,他们应该消失。

您可以使用Worksheet_Change事件,您希望此代码运行的相关工作表。

在你的情况下,如果你想运行这个代码,只有当单元格“E94”被改变,那么你需要检查是否改变了某个单元格,

 If Not Intersect(Target, Range("E94")) Is Nothing Then 

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E94")) Is Nothing Then If Target.Value = "no" Then Rows("95:118").EntireRow.Hidden = True ElseIf Target.Value = "yes" Then Rows("95:118").EntireRow.Hidden = False End If End If End Sub 

使用Worksheet_Change事件:

 Private Sub Worksheet_Change(ByVal Target As Range) 'Call your Sub here End Sub 

或者,您可以使用事件的目标范围:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(False,False) = "E94" Then If Target.Value = "no" Then Rows("95:118").EntireRow.Hidden = True ElseIf Target.Value = "yes" Then Rows("95:118").EntireRow.Hidden = False End If End If End Sub