Код ниже является процедурой события. Он запускается при изменении ячейки на листе, в кодовом листе которого находится процедура. (Расположение кода в этом конкретном модуле имеет первостепенное значение.) Если была изменена одна ячейка - игнорируя множественные одновременные изменения, например, которые могли быть вызваны действием копирования / вставки - код проверит, была ли измененная ячейка в диапазонах C41: C59 или E41: E59. Если это так, он будет скрывать или отображать строки в одном листе в зависимости от того, является ли значение ячейки «N / A» после изменения.
Private Sub Worksheet_Change(ByVal Target As Range)
' 010
Dim TriggerRange As Range
Dim Rng As Range
' ignore simultaneous changes of many cells
If Target.Cells.CountLarge > 1 Then Exit Sub
Set TriggerRange = Application.Union(Range("C41:C59"), Range("E41:E59"))
If Not Application.Intersect(TriggerRange, Target) Is Nothing Then
Select Case Target.Row
Case 41, 46, 59
Set Rng = Range("67:73")
Case 50 To 59
Set Rng = Range(Rows(67), Rows(73))
Case Else
Set Rng = Range(Rows(67), Rows(73))
End Select
Rng.Rows.Hidden = (Target.Value = "N/A")
End If
End Sub
В этом коде всегда одни и те же строки скрыты или показаны. Код служит для демонстрации того, как вы можете указать разные диапазоны строк в зависимости от того, в какой строке находится измененная ячейка, используя другой синтаксис в зависимости от ваших предпочтений.