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