我在工作中被分配了一项任务,但我对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
非常感谢任何指导! 干杯!
答案 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