![셀 D3의 드롭다운 목록에 따라 열 I의 값이 0인 경우 모든 행을 숨기려면](https://rvso.com/image/1646039/%EC%85%80%20D3%EC%9D%98%20%EB%93%9C%EB%A1%AD%EB%8B%A4%EC%9A%B4%20%EB%AA%A9%EB%A1%9D%EC%97%90%20%EB%94%B0%EB%9D%BC%20%EC%97%B4%20I%EC%9D%98%20%EA%B0%92%EC%9D%B4%200%EC%9D%B8%20%EA%B2%BD%EC%9A%B0%20%EB%AA%A8%EB%93%A0%20%ED%96%89%EC%9D%84%20%EC%88%A8%EA%B8%B0%EB%A0%A4%EB%A9%B4.png)
D3 셀에 드롭다운 목록이 있습니다. D3을 변경하면 행 값 중 일부는 0보다 크거나 작은 숫자로 변경되고 일부는 열 I에 날카로운 0으로 유지됩니다. 반복되는 매크로가 필요하며 결과는 D3를 변경할 때 정확한 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