私人子Worksheet_Change(ByVal目标为范围)不起作用

时间:2018-08-14 19:41:58

标签: excel-vba

我试图根据单元格B3中的值隐藏行。之前这对我有用,但不幸的是我不知道自己做了什么。我右键单击选项卡,然后将其粘贴到“查看代码”中。这是我的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
If Range("B3") = "a" Then
    ActiveSheet.Rows("40:43").EntireRow.Hidden = False
ElseIf Range("B3") = "b" Then
    ActiveSheet.Rows("40:43").EntireRow.Hidden = True
End If
End If
End Sub

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的代码有效,但是如果您已经在使用Target,为什么不使用它的全部功能:

If Target.Address = "$B$3" Then
    If Target.Value2 = "a" Then ' <-- use Target.Value2
        Rows("40:43").EntireRow.Hidden = False ' <-- there's no need to use ActiveSheet
    ElseIf Target.Value2 = "b" Then
        Rows("40:43").EntireRow.Hidden = True
    End If
End If

注意:无需使用ActiveSheet,因为此事件在ActiveSheet内部触发。


如果将来需要添加更多方案,可以使用Select Case

If Target.Address = "$B$3" Then
    Select Case Target.Value2
        Case "a"
            Rows("40:43").EntireRow.Hidden = False
        Case "b"
            Rows("40:43").EntireRow.Hidden = True
        Case Else ' in case you want add more scenarios in the future
            ' do something else...
    End Select
End If