![當 I 列中的值為 0 時隱藏所有行,取決於儲存格 D3 中的下拉列表](https://rvso.com/image/1646039/%E7%95%B6%20I%20%E5%88%97%E4%B8%AD%E7%9A%84%E5%80%BC%E7%82%BA%200%20%E6%99%82%E9%9A%B1%E8%97%8F%E6%89%80%E6%9C%89%E8%A1%8C%EF%BC%8C%E5%8F%96%E6%B1%BA%E6%96%BC%E5%84%B2%E5%AD%98%E6%A0%BC%20D3%20%E4%B8%AD%E7%9A%84%E4%B8%8B%E6%8B%89%E5%88%97%E8%A1%A8.png)
我在單元格 D3 中有一個下拉列表。一旦您更改D3,行值會發生變化,其中一些數字大於/小於0,而某些在I 列中仍為尖0。精確0 值的資訊I 列將被隱藏,但是當我再次更改 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