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

我已经在工作中分配了一个任务,但对VBA代码(或一般编码)不熟悉。 我的目标是根据2个不同的单元格的值自动隐藏/取消隐藏行。 我发现下面的代码正在工作,但我正在努力调整它,所以它会检查除了B12单元格B13的值。 我想确保有人不能将信息input到单元格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 

任何指导将非常感激! 干杯!

我想我明白你的问题。 此代码仅在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") = "") 

最后的代码在下面,它在它所在的工作表以及我想隐藏行的其他两个工作表上工作得很好。

 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