当单元格从yes更改为no时,Excel VBA会自动运行Macro

时间:2017-03-09 08:07:24

标签: excel vba excel-vba

是否有一种简单的方法可以让Excel在更改单元格时自动执行宏?

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中的值从“no”(标准)更改为“yes”,则应该“弹出”“95 - 118”中的单元格。 如果我从“是”改回“否”,它们就会消失。

2 个答案:

答案 0 :(得分:2)

您可以将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

答案 1 :(得分:1)

使用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