VBA-Code zum nachträglichen Einfügen von Zeilen.

VBA-Code zum nachträglichen Einfügen von Zeilen.

Ich konnte Kontrollkästchen erstellen, um bestimmte Zeilen in meinem Excel-Dokument mit dem folgenden Code anzuzeigen/auszublenden

If CheckBox1.Value = True Then Rows("26:28").EntireRow.Hidden = False
If CheckBox1.Value = False Then Rows("26:28").EntireRow.Hidden = True

Ich muss jedoch die Möglichkeit haben, den Bereich zu aktualisieren, wenn ich Zeilen oberhalb dieses Bereichs einfüge.

Ich habe versucht, die Zelle zu finden, bei der der Bereich beginnt, und dann 2 zum Bereich hinzuzufügen, bin mir aber nicht ganz sicher, wie das geht.

Prost

Robert

Antwort1

Das Verfolgen und Verwalten des Hinzufügens/Löschens von Zeilen könnte äußerst schwierig sein (achten Sie darauf, sie immer zu erfassen, außerdem müssen Sie entweder den Code selbst für die neue Zeilennummer ändern oder ihn irgendwo auf einem Blatt speichern …), ich schlage vor, eine Problemumgehung zu verwenden.

  1. Verwenden Sie einen benannten Bereich: Benannte Bereiche werden zusammen mit Zellen verschoben, sodass sich Verweise auf sie immer auf dieselben Zellen beziehen.

    • Im folgenden Beispiel ist A6:A7 ein benannter Bereich und der Beispielcode zeigt/verbirgt ihn.

Bildbeschreibung hier eingeben

  1. Eine andere Möglichkeit wäre, in der Tabelle nach bestimmten Informationen zu suchen und Ihre Aktionen darauf auszurichten. Dies ist jedoch wiederum recht komplex.

Antwort2

Ich gehe davon aus, dass Sie über einen funktionierenden Code zum Anzeigen/Ausblenden dieser Zeilen verfügen und dass Ihr Problem lediglich darin besteht, die Zeile zu finden, nachdem Sie oben Zeilen eingefügt haben.

Wenn Sie nur einen Bereich anzeigen/ausblenden möchten, können Sie einen benannten Bereich verwenden. Wenn darüber neue Zeilen stehen, verweist der benannte Bereich weiterhin auf dieselben Zeilen.

ToBeHiddenGeben Sie einfach einigen Zellen einen Namen (z. B. ), (z. B. A26:A28, es müssen nicht die ganzen Zeilen benannt werden), und verwenden Sie diesen Code, um sie umzuschalten:

With ActiveSheet.Range("ToBeHidden").EntireRow
    If .Hidden = True Then
        .Hidden = False
    Else
        .Hidden = True
    End If
End With

Mit einem Zeilensatz ist das Umschalten einfach, aber wenn Sie viele haben, benötigen Sie etwas Leistungsstärkeres. Fügen Sie möglicherweise eine dedizierte Spalte hinzu, um diese Funktion zu aktivieren.

Antwort3

Da das Ziel des OP darin besteht, „festzustellen, ob und wie viele Zeilen eingefügt werden“, was Sie in den obigen Kommentaren von Máté Juhász finden können, sollte die Lösung den verborgenen Datenbereich für eingefügte oder gelöschte Zeilen verfolgen.

Benennen Sie zunächst den ausgeblendeten Bereich A26:A28und verwenden Sie den folgenden VBA-Code, um die Anzahl der eingefügten oder gelöschten Zeilen zu verfolgen.

Private Sub Worksheet_Change(ByVal Target As Range)
    Static lngRow As Long
    Dim rng1 As Range
    Set rng1 = ThisWorkbook.Names("Named Range").RefersToRange
    If lngRow = 0 Then
    lngRow = rng1.Row
        Exit Sub
    End If
    If rng1.Row = lngRow Then Exit Sub
    If rng1.Row < lngRow Then
        MsgBox lngRow - rng1.Row & " Row Deleted"
    Else
        MsgBox rng1.Row - lngRow & " Rows Inserted"
    End If
    lngRow = rng1.Row
End Sub

Hinweis: Wenn Sie nur eingefügte Zeilen zählen möchten, ändern Sie die letzte If...in

If rng1.Row > lngRow Then
    MsgBox rng1.Row - lngRow & " Rows Inserted"
End If

verwandte Informationen