Скрытие нескольких листов на основе нескольких значений ячеек в другом листе - PullRequest
1 голос
/ 19 мая 2019

У меня есть рабочая книга с несколькими листами, включая 19 листов для ввода данных. Я хочу скрыть соответствующие листы ввода данных, если значение в любой из строк (E14:E45) в листе "IEP" равно "N" и unhide тех листов, которые имеют значение "Y".

Я пробовал Case оператор, а также If Else оба, но оба работают частично.

Private Sub worksheet_change(ByVal target As Excel.Range)
Worksheets.IEP.Range ("E14")

Case "N"
If [E14] = "N" Then
Worksheets("ADL-Eat").Visible = False
Else
End If
If [E15] = "N" Then
Worksheets("ADL-Drink").Visible = False
Else
End If
If [E16] = "N" Then
Worksheets("ADL-T").Visible = False
Else
End If
If [E17] = "N" Then
Worksheets("ADL-Dres").Visible = False
Else
End If
If [E18] = "N" Then
Worksheets("CBD").Visible = False
Else
End If
If [E19] = "N" Then
Worksheets("DA").Visible = False
Else
End If
If [E20] = "N" Then
Worksheets("SE-A").Visible = False
Else
End If
If [E21] = "N" Then
Worksheets("SE-GK").Visible = False
Else
End If
If [E22] = "N" Then
Worksheets("Social").Visible = False
Else
End If
If [E23] = "N" Then
Worksheets("SA").Visible = False
Else
End If
If [E24] = "N" Then


End Select
End Sub


  Private Sub worksheet_change(ByVal target As Excel.Range)
    Worksheets.IEP.Range ("E14")

    Case "Y"

    If [E14] = "Y" Then
    Worksheets("ADL-Eat").Visible = True
    Else
    End If
    If [E15] = "Y" Then
    Worksheets("ADL-Drink").Visible = True
    Else
    End If
    If [E16] = "Y" Then
    Worksheets("ADL-T").Visible = True
    Else
    End If
    If [E17] = "Y" Then
    Worksheets("ADL-Dres").Visible = True
    Else
    End If
    If [E18] = "Y" Then
    Worksheets("CBD").Visible = True
    Else
    End If
    If [E19] = "Y" Then
    Worksheets("DA").Visible = True
    Else
    End If
    If [E20] = "Y" Then
    Worksheets("SE-A").Visible = True
    Else
    End If
    If [E21] = "Y" Then
    Worksheets("SE-GK").Visible = True
    Else
    End If
    If [E22] = "Y" Then
    Worksheets("Social").Visible = True
    Else
    End If
    If [E23] = "Y" Then
    Worksheets("SA").Visible = True
    Else
    End If
    If [E24] = "Y" Then
    Worksheets("FS").Visible = True
    Else
    End If


    End Select
    End Sub

Я ожидал, что эти листы будут скрыты, когда значение в строках равно "N", но фактическим выводом является то, что они видны даже при значении "N".

1 Ответ

0 голосов
/ 19 мая 2019

Sample Worksheet

Если ваш рабочий лист выглядит следующим образом, попробуйте следующий код:

Sub showHideWS()

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("IEP") 'Name of the primary worksheet

Dim wsName As String

For a = 14 To 45
    wsName = sh.Range("D" & a).Value
        If wsName <> "" Then
        If sh.Range("E" & a).Value = "N" Then
            ThisWorkbook.Sheets(wsName).Visible = False
        Else
            ThisWorkbook.Sheets(wsName).Visible = True
        End If
    End If
Next a
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...