Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zeilen in gefilterte Liste hinzufügen
05.03.2023 16:04:56
Max
Hallo zusammen,
ich habe ein Problem mit ListObjects und komme irgendwie nicht weiter. Ich habe eine Offene-Punkteliste als Tabelle (ListObject) erstellt, die ich über eine Userform nach und nach Befüllen möchte indem nach und nach Einträge hinzugefügt werden. Das klappt auch soweit reibungslos. Eine zusätzliche Funktion ("Update-Funktion") soll allerdings sein, bestehende Punkte upzudaten, indem zu der ausgewählten Zelle eine weitere Zelle hinzugefügt wird in die anschließend die Updates eingetragen werden. Das bedeutet es wird eine neue Zeile irgendwo innerhalb der Tabelle eingefügt. Auch das funktioniert zunächst problemlos.
Wenn ich allerdings meine Liste nach bestimmten Kriterien filtere, dann bekomme ich bei der "Update-Funktion" folgende Fehlermeldung:
- Laufzeitfehler '1004': Zellen in einem gefilterten Bereich oder in einer gefilterten Tabelle können nicht verschoben werden. -
Wenn ich einfach unten an die Tabelle eine Zeile ranhänge habe ich das Problem nicht, genausowenig wenn ich händisch eine Zeile zwischenfügen möchte. Lediglich über die Userform tritt das Problem auf. Habt ihr eine Idee wie ich das Problem umgehen kann, ohne für jede Reihe die Filter auszulesen, die Filter auszuschalten und nach dem EInfügen der Zelle die Filter wieder einzusetzen? Das erscheint mir doch etwas sehr aufwendig.
Anbei der grundlegende Code wie die Zeilen eingefügt werden.
Private Sub CommandButton1_Click()
'Fill the entries into the LOP
'Add new row to the LOP listobject
Dim ws As Worksheet
Set ws = ActiveSheet
Dim tbl As ListObject
Set tbl = ws.ListObjects("LOP_table")
Dim newrow As ListRow
Set newrow = tbl.ListRows.Add(Row_Up - 4)
'Fill the entries into the LOP
With newrow
'number
.Range(1) = update_box.Label_number.Caption

'date
.Range(2) = date_1

'type
.Range(4) = type_1
'issue
.Range(5) = issue_1
'task
.Range(6) = update_box.TextBox_next_actions.Value
'responsible
.Range(7) = update_box.ListBox1.Value
'due date
.Range(8) = update_box.DTPicker1.Value
End With
Unload update_box

End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen in gefilterte Liste hinzufügen
05.03.2023 16:32:09
Daniel
Hi
Um Filtereinstellungen zu speichern und zu reaktivieren kannst du die benutzerdefinierten Ansichten verwenden. Das geht einfach, von Gand oder mit VBA und lässt sich auch mit dem Recorder aufzeichnen
Gruß Daniel
AW: Zeilen in gefilterte Liste hinzufügen
05.03.2023 16:51:51
Max
Hallo Daniel,
danke für deinen Vorschlag. Leider steht mir die Funktion der benutzerdefinierten Ansicht nicht zur Verfügung, da ich ja eine Tabelle als Basis habe.
Gruß
Max
AW: Zeilen in gefilterte Liste hinzufügen
05.03.2023 17:32:21
Yal
Hallo Max,
die Idee von einem ListObject aka "intelligente Tabelle" ist, dass jede Datensatz für sich autonome sein soll, d.h. die Reihenfolge der Einträge sollte keine Rolle spielen. Dann kann man die LO beliebig filtern und sortieren. Dementsprechend würden jede neue Einträge immer am Ende hinzugefügt.
Wenn Du bei der Zeile
Set newrow = tbl.ListRows.Add(Row_Up - 4)
den Row_Up - 4 weglässt, sollte kein Problem mehr auftretten.
ListObject sind Worksheet-abhängig, aber durch deren Name kann man den Worksheet ermitteln:
Private Sub CommandButton1_Click()
'Fill the entries in a new row at the bottom of the LOP listobject
Const cLoName = "LOP_table"
    With Range(cLoName).Parent.ListObjects(cLoName).ListRows.Add 'Point on LOP and create new line
        .Range(1) = update_box.Label_number.Caption 'number
        .Range(2) = date_1 'date
        .Range(4) = type_1 'type
        .Range(5) = issue_1 'issue
        .Range(6) = update_box.TextBox_next_actions.Value 'task
        .Range(7) = update_box.ListBox1.Value 'responsible
        .Range(8) = update_box.DTPicker1.Value 'due date
    End With
    
    Unload update_box
End Sub
VG
Yal
Anzeige

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige