Повторяющаяся задача для каждого листа, показать и скрыть базу по значению ячейки - PullRequest
1 голос
/ 23 марта 2019

У меня работает текущий код, однако я бы хотел повторить ту же задачу для нескольких строк на листе и других листов в рабочей книге.

Задача, которую я хотел бы повторить, - показать и скрыть строки на основе раскрывающегося списка да / нет.Я понимаю, что можно создать код в модуле и вызывать его на каждом листе.Буду признателен за помощь.

Спасибо !!

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("C6")) Is Nothing Then Exit Sub
    If Target = "Yes" Then
        Rows("7:7").Hidden = False
    ElseIf Target = "No" Then
        Rows("7:7").Hidden = True
    End If
End Sub

1 Ответ

0 голосов
/ 23 марта 2019

Возможно, что-то вроде этого, используя событие 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...