Nur ausgewählte Zeilen in Excel mithilfe von VBA-Makros erweitern


0

Ich habe den folgenden VBA-Code geschrieben, der eine Bedingung enthält, in der, wenn Cell # = "Yes" (Ja), die untere Zeile erweitert wird, andernfalls, wenn Cell # = "No" (Nein), die untere Zeile reduziert wird.

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E15").Value = "Yes" Then
ActiveSheet.Outline.ShowLevels RowLevels:=3
ElseIf Range("E15").Value = "No" Then
ActiveSheet.Outline.ShowLevels RowLevels:=8
End If
End Sub

Nun scheint dies ohne Probleme zu funktionieren, aber aus irgendeinem Grund werden alle Zeilen, die sich in derselben Zeilenebene wie im Code befinden, vergrößert und verkleinert. Ich möchte wirklich, dass ich genau auswählen kann, welche Zeile ich möchte Erweitern und Reduzieren basierend auf der Bedingung. '

Wie Sie sehen, bin ich kein großer VB-Profi, aber jede Hilfe wäre sehr willkommen.

Vielen Dank!


Ich habe Probleme, die Frage zu verstehen. Sie haben Zeilengruppen, in denen eine Zelle "Ja" oder "Nein" lautet, und Sie möchten, dass diese Gruppe erweitert wird, oder Sie möchten, dass die letzte Zeile der Gruppe angezeigt wird?
Raystafarian

Antworten:


0

Wenn ich Sie richtig verstehe, sollten Sie in der Lage sein, die ShowDetailsEigenschaft zum Erweitern und Reduzieren bestimmter Zusammenfassungszeilen in Ihrer Gliederung festzulegen und zu deaktivieren .

Wie unten gezeigt, Showdetailshandelt es sich um eine Lese- / Schreibeigenschaft einer gesamten Zeile (oder Spalte) innerhalb einer Gliederung. Verweisen Sie zum Anzeigen der Details für eine bestimmte Zusammenfassungszeile auf eine einzelne Zelle in dieser Zeile, wie im folgenden Beispielcode gezeigt. Excel gibt einen Fehler aus, wenn Sie versuchen, die Eigenschaft für eine bereits erweiterte Zusammenfassungsebene auf True zu setzen. Wenn die Zusammenfassungszeile nicht sichtbar ist, weil sie in einer größeren Gruppierung Showdetailskomprimiert ist, kann die Zeile (im Hintergrund) nicht erweitert werden.

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
    With ActiveSheet
        If .Range("E15").Value = "Yes" Then
            With .Range("A26").EntireRow
                If .ShowDetail = False Then
                    .ShowDetail = True
                End If
            End With
        ElseIf Range("E15").Value = "No" Then
            With .Range("A45").EntireRow
                If .ShowDetail = False Then
                    .ShowDetail = True
                End If
            End With
        End If
    End With
End Sub
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.