Potrzebujesz pomocy, aby ukryć / pokazać wiersze Excela w oparciu o wartość w komórce, ale pozwól na przenoszenie wierszy później

0

W wierszu 4 zadaję pytanie, a D4 zawiera odpowiedź Tak lub Nie.

Jeśli odpowiedź brzmi Tak w D4, chcę, aby ukryte wiersze 5 i 5 pojawiły się z pytaniami uzupełniającymi. To działa dla mnie:

If Range("D4").Value = "No" Then
    Rows("5:6").EntireRow.Hidden = True
ElseIf Range("D4").Value = "Yes" Then
    Rows("5:6").EntireRow.Hidden = False

W kolumnie A identyfikuję początkowe pytania (jak w wierszu 4) jako „pytania wielopoziomowe”, a kolejne pytania (takie jak wiersze 5 i 6) są oznaczone jako „kontynuacja pytań”.

Czy można to zrobić bez ręcznego aktualizowania każdego wiersza? Muszę także zezwolić na dodawanie / usuwanie wierszy powyżej, które miałyby wpływ na to, które wiersze zostaną ukryte / odkryte. Dzięki.

Jessica
źródło
Czy możesz zamieścić obraz tego, o co pytasz? Nie rozumiem tej części twojego pytania Czy można to zrobić bez ręcznego aktualizowania każdego wiersza
Prasanna

Odpowiedzi:

0

Nie jestem pewien, co dokładnie masz na myśli, „ręcznie aktualizując każdy wiersz”, ale jeśli umieścisz swój kod w subskrypcji Worksheet_Change w swoim obiekcie arkusza (nie w module), będzie on uruchamiany automatycznie w każdej komórce czasu D4 jest aktualizowany w tym arkuszu

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$4" Then
        If Target.Value = "No" Then
            Rows("5:6").EntireRow.Hidden = True
        ElseIf Target.Value = "Yes" Then
            Rows("5:6").EntireRow.Hidden = False
        End If
    End If
End Sub
CallumDA
źródło
Dzięki CallumDA33. Przepraszam, że nie wyraziłem się lepiej, ale moim problemem jest to, że chcę, aby D4 wyzwalał ukrywanie / pokazywanie wierszy 5 i 6 jako jeden przykład. Chcę też, aby D7 (moje „pytanie wielowarstwowe”) wyzwalało ukrywanie / pokazywanie wierszy 8 i 9 („Kolejne pytania Q”) i D14 (wielowarstwowe), aby wyzwalać wiersze 15, 16, 17, (kontynuacja) i na i przez mój 350 wierszy. Wielkie dzięki za Twoją pomoc!
Jessica
0

Otrzymałem pomoc od znajomego i chciałem udostępnić rozwiązanie - poniżej.

W przypadku każdej aktualizacji skoroszytu, która ma miejsce w kolumnie 4 (która jest odpowiedzią klienta), jeśli odpowiedzą „Nie” na „pytanie wielowarstwowe” ... kolejne wiersze z „kontynuacją pytania” zostaną ukryte.

Należy zaktualizować to makro, jeśli przeniesiono kolumny Kryteria biznesowe („A”) lub Odpowiedź klienta.

To powinno działać:

Private Sub Worksheet_Change (ByVal Target As Range)     Dim i As Integer

If Target.Column = 4 Then
    If Range("A" & Target.Row).Text = "Tiered Question" Then
        i = 1
        Do While Range("A" & Target.Row + i).Text = "Follow-Up Q"
            Range("A" & Target.Row + i).EntireRow.Hidden = (Target.Value = "No")
            i = i + 1
        Loop
    End If
End If

Napis końcowy

Jessica
źródło