Excel基于多个单元格自动隐藏/取消隐藏行

时间:2015-02-20 19:39:33

标签: excel vba

我在工作中被分配了一项任务,但我对VBA代码(或一般的编码)并不熟悉。我的目标是根据2个不同单元格的值自动隐藏/取消隐藏行。我发现以下代码正在运行,但我正在努力调整它,因此除了B12之外它还将检查单元格B13的值。我想确保某人无法将信息输入到单元格B13中,然后通过从单元格B12中删除信息而意外地隐藏它。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$12" Then
If Target.Value = "" Then Rows("13").EntireRow.Hidden = True
If Target.Value <> "" Then Rows("13").EntireRow.Hidden = False
End If
End Sub

非常感谢任何指导! 干杯!

2 个答案:

答案 0 :(得分:1)

我想我理解你的问题。此代码仅在B12更改时运行,如果目标值为空 B13为空,则隐藏第13行。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$12" Then
    Rows("13").EntireRow.Hidden = (Target.Value = "" And Range("B13") = "")
End If
End Sub

如果B12为空并且更改了B13,则不会运行任何代码,但您可以将If语句更改为

If Target.Address = "$B$12"  or Target.Address = "$B$13" Then

如果任何一个单元格被更改,它就会运行。

编辑评论:

尝试(检查以确保我的工作表正确):

Worksheets("CS Personnel").rows("13").EntireRow.Hidden = (Target.Value = "" And Range("B13") = "")

答案 1 :(得分:0)

最终的代码如下所示,它在它所在的工作表上以及我想要隐藏行的其他两个工作表中效果很好。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$12" Then
        Rows("13").EntireRow.Hidden = (Target.Value = "" And Range("B13") = "")
    End If
    If Target.Address = "$B$12" Then
        Worksheets("CS Personnel").Rows("13").EntireRow.Hidden = (Target.Value = "" And Range("B13") = "")
    End If
    If Target.Address = "$B$12" Then
        Worksheets("Basic Budget").Rows("4").EntireRow.Hidden = (Target.Value = "")
    End If
End Sub