Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile in Tabelle (ListObject) einfügen

Zeile in Tabelle (ListObject) einfügen
25.01.2017 09:53:23
Rookie
Hallo zusammen,
ich möchte gerne mit VBA eine Zeile am ende einer Tabelle (ListObject) einfügen. Dazu verwende ich folgenden Code:
ActiveSheet.ListObjects("ToDo").ListRows.Add AlwaysInsert:= True
Die Zellen der Tabelle enthalten Formeln und bedingte Formatierungen die mit in die neue Zeile übernommen werden sollen.
Wenn ich das Makro ausführe stürzt Excel entweder komplett ab, oder es kommt die Fehlermeldung "Automatisierungsfehler - Das aufgerufene Objekt wurde von den Clients getrennt.
Hat jemand von euch eine Idee warum das so nicht funktioniert, oder eine andere Lösung?
Vielen Dank schon mal für eure Hilfe
Beste Grüße
Stefan
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile in Tabelle (ListObject) einfügen
25.01.2017 10:29:50
EtoPHG
Hallo Rookie,
Bitte immer zuerst die VBA-Hilfe zu den Objekten bemühen!
Dort siehst du, dass es für das ListRow-Objekt keine Methode Add gibt!
Um eine Zeile einzufügen, genügt es die Zellen der Zeile unmittelbar an das ListObject.DataBodyRange anzufügen, oder aber eine Zeile aus dem Listobjekt-Bereich dorthin zu kopieren. Diese wird dann automatisch in das ListObject-Objekt übernommen.
Gruess Hansueli
Anzeige
AW: @Hansueli
25.01.2017 10:44:30
hary
Moin
Du bist der Spezi, daher Frage.
Fuer ListRow gibt es add nicht, aber fuer ListRows steht add doch zur Verfuegung.
So klappt das beim Nachbau.
With ActiveSheet.ListObjects("ToDo")
.ListRows.Add
End With

Es wird eine Zeile angefuegt. Oder versteh ich was falsch?
Ist fuer mich zum verstehen!
gruss hary
Anzeige
Auch ein sog. Spezi kann sich irren, sorry
25.01.2017 10:59:19
EtoPHG
Hallo Hary,
Da hat der Spezi, bzw. ich, den Mund wieder etwas gar vollgenommen.
Natürlich funktioniert es mit .ListRows.Add problemlos.
Es muss also eher an einer spezifischen Konstellation der Tabelleninhalte des Anfragers liegen.
Ohne weitere Angaben / Beispielmapp also praktisch nicht nachvollziehbar.
Darum auch .... offen
Gruess Hansueli
Anzeige
Problem scheint nicht mehr akut, geschlossen (owT)
31.01.2017 07:55:27
EtoPHG

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeile in Tabelle (ListObject) einfügen


Schritt-für-Schritt-Anleitung

Um eine Zeile am Ende einer Tabelle (ListObject) in Excel VBA einzufügen, kannst du folgenden Code verwenden:

With ActiveSheet.ListObjects("ToDo")
    .ListRows.Add
End With

Dieser Code nutzt die ListRows.Add-Methode, um eine neue Zeile hinzuzufügen. Achte darauf, dass die Tabelle den Namen "ToDo" hat. Wenn du den Namen deiner Tabelle anpasst, ersetze "ToDo" durch den korrekten Namen deiner Tabelle.


Häufige Fehler und Lösungen

  1. Automatisierungsfehler - Das aufgerufene Objekt wurde von den Clients getrennt.

    • Ursache: Dies kann passieren, wenn die Tabelle nicht korrekt referenziert wird. Stelle sicher, dass der Tabellenname genau stimmt und dass die Tabelle nicht gelöscht oder umbenannt wurde.
  2. Fehler beim Einfügen der Zeile.

    • Lösung: Überprüfe, ob in der Tabelle Formeln und bedingte Formatierungen vorhanden sind. Es könnte sein, dass diese einen Konflikt verursachen. Versuche, die Zellen manuell zu überprüfen.

Alternative Methoden

Eine andere Möglichkeit, eine Zeile in eine intelligente Tabelle einzufügen, ist die direkte Manipulation des DataBodyRange. Hier ist ein Beispiel:

Dim newRow As Range
Set newRow = ActiveSheet.ListObjects("ToDo").ListObject.DataBodyRange.Rows(ActiveSheet.ListObjects("ToDo").ListRows.Count + 1)
newRow.Value = Array("Wert1", "Wert2", "Wert3") ' Werte für die neue Zeile anpassen

Diese Methode fügt die Werte direkt an das Ende der Tabelle an, ohne die ListRows.Add-Methode zu verwenden.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit den Spalten "Aufgabe", "Fälligkeitsdatum" und "Status". Um eine neue Zeile mit Werten hinzuzufügen, könntest du den folgenden Code verwenden:

With ActiveSheet.ListObjects("ToDo")
    Dim newRow As ListRow
    Set newRow = .ListRows.Add
    newRow.Range(1, 1).Value = "Neue Aufgabe"
    newRow.Range(1, 2).Value = Date + 7 ' Fälligkeitsdatum in einer Woche
    newRow.Range(1, 3).Value = "Offen"
End With

Dieser Code fügt eine neue Zeile hinzu und befüllt die Zellen mit den gewünschten Werten.


Tipps für Profis

  • Nutze AlwaysInsert nur, wenn du sicherstellen möchtest, dass die Zeile immer eingefügt wird, auch wenn die Tabelle leer ist.
  • Überprüfe regelmäßig deine VBA-Referenzen und stelle sicher, dass kein Konflikt mit anderen Makros oder Add-Ins besteht.
  • Dokumentiere deinen Code gut, damit du später nachvollziehen kannst, was du geändert hast.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen gleichzeitig einfügen?
Du kannst eine Schleife verwenden, um mehrere Zeilen hinzuzufügen:

For i = 1 To 5
    ActiveSheet.ListObjects("ToDo").ListRows.Add
Next i

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die Verwendung von ListObjects und ListRows.Add ist in den meisten modernen Excel-Versionen verfügbar, die VBA unterstützen. Achte darauf, dass du eine Version hast, die diese Funktionen unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige