
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.
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.
- 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.
ToBeHidden
Geben 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:A28
und 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