Возможно, что-то вроде этого, используя событие Workbook.SheetChange .Добавьте этот код в модуль кода ThisWorkbook
.Предполагается, что никакие другие ячейки, кроме ваших выпадающих, не говорят «Да» или «Нет».Это может быть легко изменено, если это не так.Его также можно изменить, чтобы он обрабатывал только некоторые рабочие листы и исключал другие, если это необходимо.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Select Case Target.Value
Case "Yes"
Target.Offset(1).EntireRow.Hidden = True
Case "No"
Target.Offset(1).EntireRow.Hidden = False
End Select
End Sub
Как отмечено в ответе на ваш предыдущий вопрос , вы можетеиспользуйте LCase
, чтобы сделать это без учета регистра:
Select Case LCase(Target.Value)
Case "yes"
....
Case "no"
....
End Select
РЕДАКТИРОВАТЬ :
Изменено, чтобы исключить определенные листы на основе их имени:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Select Case Sh.Name
Case "Sheet2", "Sheet4" ' change to the names of the sheets to exclude
Exit Sub
End Select
If VarType(Target.Value) = vbString Then
Select Case LCase(Target.Value)
Case "yes"
Target.Offset(1).EntireRow.Hidden = True
Case "no"
Target.Offset(1).EntireRow.Hidden = False
End Select
End If
End Sub