
セル 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
。その 1 つがこれです。
ループ内のセルの値をチェックするのは簡単です。行を非表示にするには、次のようにします。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