【发布时间】:2020-11-06 16:08:26
【问题描述】:
我是 VBA 编码的新手。
我正在尝试在我的函数中实现这一点
sub Private Sub Worksheet_Change(ByVal Target As Range)
它检查一些指定的单元格值更改以运行给定的宏。我要添加的附加宏是,当单元格 a62 为空时,它将隐藏行 a56:a61。并且连续如果 a82 为空,它将隐藏行 a78:a82。
我有以下代码,但它只隐藏从第一个空单元格到工作表末尾的行。
Sub Test()
Dim i As Long
For i = 4 To 800
If Sheets("Results").Cells(i, 1).Value = "" Then
Rows(i & ":" & Rows.Count).EntireRow.Hidden = True
Rows("1:" & i - 1).EntireRow.Hidden = False
Exit Sub
End If
Next
End Sub
【问题讨论】:
-
感谢@james Z 先生编辑
-
但是你想要什么单元格变化来触发事件呢? “A62”和“A82”?它们中的每一个变为空都会隐藏相应的行,但如果它们有值,讨论中的行是否应该变得可见?如果这两个单元格会触发事件,我认为不需要迭代。
-
仅当这些单元格为空时。如果它们有值,那么行应该是可见的
-
什么会触发您发布的代码,什么会触发您需要的另外两个?手动更改一个或多个单元格还是按公式更改?如果不适用这两个额外要求,仅隐藏或显示将发生此更改的行还不够吗?
-
如果单元格是空白的,那么我在“结果”表中有子代码
Private Sub Worksheet_Change(ByVal Target As Range)。结果表包含三个由切片器连接的数据透视表。所以现在,我所拥有的是当我在该切片器中选择一个项目时,它当然会更改三个数据透视表报告中的值,现在将触发Private Sub Worksheet_Change(ByVal Target As Range)...此代码将检查是否有任何更改在第一个枢轴区域中给定范围内的任何单元格中,其中一个包括切片器中的项目。所以我的目标是