Более простым решением без зацикливания было бы подсчет Yes
с использованием WorksheetFunction.CountIf метода .
. Используйте следующую команду, чтобы показать Sheet2
, если хотя бы одну ячейку имеет Yes
.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TestRange As Range
Set TestRange = Me.Range("H11:H23")
If Not Application.Intersect(Target, TestRange) Is Nothing Then 'if target is in test range
If Application.WorksheetFunction.CountIf(TestRange, "Yes") > 0 Then
Worksheets("Sheet2").Visible = True
Else
Worksheets("Sheet2").Visible = False
End If
End If
End Sub
Если все ячейки в тестовом диапазоне должны быть Yes
, тогда измените его на
If Application.WorksheetFunction.CountIf(TestRange, "Yes") = TestRange.Cells.Count Then