我在单元格 D3 中有一个下拉列表。一旦您更改 D3,行值就会发生变化,一些行的数字大于/小于 0,而一些行的值在 I 列中仍为 0。我需要一个可以循环的宏,结果应该是当我更改 D3 时,I 列中所有具有精确 0 值的信息都将被隐藏,但是当我再次更改 D3 时,它将重置并再次隐藏 I 列中包含 0 的所有行。
答案1
要触发工作表上发生更改的宏,可以使用
Worskheet.Change 事件在工作表上放置一个子宏:Private Sub Worksheet_Change(ByVal Target As Range)
对于循环“I”列,有几种方法可以循环它。我们可以定义范围,然后进行循环For each
,或者我们可以使用可迭代对象。
为了避免循环整个列,我们可以通过几种不同的方式找到该列的最后一行,Cells(Rows.Count, 9).End(xlUp).Row
就是其中之一。
检查循环中单元格的值非常简单,要隐藏行,我们只需使用Range.EntireRow.Hidden = True
整个过程可能看起来像这样:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hide As Boolean, i As Long
'Intersect validates that the change is only happening in "D3" to be valid
If Not Intersect(Target, Range("D3")) Is Nothing And Target.Count = 1 Then
' i = starting range - to - last row
For i = 4 To Cells(Rows.Count, 9).End(xlUp).Row
hide = False
If Cells(i, 9).Value = "0" Then hide = True
Cells(i, 9).EntireRow.Hidden = hide
Next i
End If
End Sub