Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Absturz Excel bei listobject.listrow.add

Forumthread: Absturz Excel bei listobject.listrow.add

Absturz Excel bei listobject.listrow.add
08.09.2022 10:24:29
JoJa
Hey
ich habe eine Listobject-Tabelle (ich nenne sie hier tbl_Personal), welche nicht in Zelle A1 beginnt. Nun möchte ich über eine Userform die Personaldaten bearbeiten und das einfachste ist ja über die Maske. Das geht aber über ein Makro nur, wenn tbl_Personal in A1 beginnt und ich möchte niemandem zumuten, die Masken-Aufforderung immer selbst aus den Tiefen Excels herauszusuchen.
Deshalb habe ich eine Userform gebaut, die das selbe machen soll, wie die Maske. Mein Problem ist, immer wenn ich eine neue Zeile hinzufügen möchte, stürzt Excel einfach ab. Auch wenn ich nicht die Funktion .ListRows.Add nutze und über .Cells(lastrow,firstcol).Value gehe, stürzt es auch ab.
Weiß jemand Abhilfe?
Bisheriger Code auf das wichtigste heruntergebrochen und Beispieldatei im Anhang:

Sub Neues_Personal()
UserForm1.Show
End Sub
Private Sub UserForm_Initialize()
Dim tbl_Personal As ListObject
Set tbl_Personal = Tabelle1.ListObjects("Personal")
With Me.ListBox1
.RowSource = tbl_Personal.DataBodyRange.Address
.ColumnHeads = True
.ColumnWidths = "90;90;50;50"
End With
End Sub
Private Sub CommandButton1_Click()
Dim tbl_Personal As ListObject
Set tbl_Personal = Tabelle1.ListObjects("Personal")
Dim lrow As Integer
lrow = tbl_Personal.DataBodyRange.Rows.Count + tbl_Personal.HeaderRowRange.Row + 1
tbl_Personal.ListRows.Add 'Hier stürzt Excel ab
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
https://www.herber.de/bbs/user/155052.xlsm
Vielen Dank, Johannes
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Absturz Excel bei listobject.listrow.add
08.09.2022 10:54:36
Alwin
Hallo Johannes,
du musst, wenn du eine neue Zeile einfügst die Zeilennummer mit angeben, wo die Leerzeile innerhalb der Tabelle eingefügt werden soll.
z.B. so:

tbl_Personal.ListRows.Add 2
erzeugt eine Leerzeile in Zeile 2 des Listobjekts.
Gruß Uwe
Anzeige
AW: Absturz Excel bei listobject.listrow.add
08.09.2022 11:09:17
JoJa
Hey,
bei deiner Lösung stürzt Excel bei dann erst mit dem Verlassen der UserForm ab. Aber die Lösung von snb funktioniert dafür gut.
Danke trotzdem für deinen Vorschlag
LG, Jo
AW: Absturz Excel bei listobject.listrow.add
08.09.2022 11:09:52
JoJa
Perfekt. Wäre ich nicht drauf gekommen, habe noch viel zu lernen.
Danke, Jo
;
Anzeige

Infobox / Tutorial

Absturz bei listobject.listrow.add in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Erstelle eine UserForm, um die Dateneingabe zu erleichtern.

  2. Referenziere das ListObject: Stelle sicher, dass du das ListObject korrekt referenzierst. Beispiel:

    Dim tbl_Personal As ListObject
    Set tbl_Personal = Tabelle1.ListObjects("Personal")
  3. Zeile hinzufügen: Wenn du eine neue Zeile hinzufügen möchtest, verwende den folgenden Code:

    tbl_Personal.ListRows.Add

    Achte darauf, dass du die Zeilennummer angibst, wenn nötig:

    tbl_Personal.ListRows.Add 2 ' Fügt eine Zeile an zweiter Stelle hinzu
  4. UserForm-Initialisierung: Setze die RowSource des ListBox-Steuerelements in der UserForm:

    With Me.ListBox1
       .RowSource = tbl_Personal.DataBodyRange.Address
       .ColumnHeads = True
       .ColumnWidths = "90;90;50;50"
    End With
  5. Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um mögliche Abstürze zu vermeiden.


Häufige Fehler und Lösungen

  • Absturz beim Hinzufügen einer Zeile:

    • Problem: Excel stürzt ab, wenn .ListRows.Add verwendet wird.
    • Lösung: Überprüfe, ob das ListObject korrekt referenziert ist und ob sich die Tabelle nicht in einer geschützten Ansicht befindet.
  • Verlassen der UserForm führt zu Absturz:

    • Problem: Das Schließen der UserForm führt zu einem Fehler.
    • Lösung: Stelle sicher, dass alle Verweise auf die ListObject- und ListRow-Operationen korrekt sind und die UserForm keine fehlerhaften Daten enthält.

Alternative Methoden

  • Verwendung von Cells: Wenn .ListRows.Add nicht funktioniert, kannst du direkt auf die Zellen zugreifen:

    Dim lastRow As Integer
    lastRow = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
    Tabelle1.Cells(lastRow, 1).Value = "Neuer Eintrag"
  • Anpassung der RowSource: Manchmal kann das manuelle Aktualisieren der RowSource nach dem Hinzufügen einer Zeile helfen.


Praktische Beispiele

Hier ein einfaches Beispiel, um eine neue Zeile in einem ListObject hinzuzufügen:

Private Sub CommandButton1_Click()
    Dim tbl_Personal As ListObject
    Set tbl_Personal = Tabelle1.ListObjects("Personal")
    tbl_Personal.ListRows.Add
End Sub

In diesem Beispiel wird eine neue Zeile in der Tabelle "Personal" hinzugefügt, wenn der Button in der UserForm gedrückt wird.


Tipps für Profis

  • Performance verbessern: Um die Performance zu steigern, kannst du die Bildschirmaktualisierung während des Hinzufügens von Zeilen deaktivieren:

    Application.ScreenUpdating = False
    ' Deine Code-Logik hier
    Application.ScreenUpdating = True
  • Debugging: Nutze Debug.Print oder MsgBox, um den aktuellen Status deiner Variablen zu überprüfen und mögliche Fehlerquellen schneller zu identifizieren.


FAQ: Häufige Fragen

1. Warum stürzt Excel ab, wenn ich tbl_Personal.ListRows.Add benutze? Das kann passieren, wenn das ListObject nicht korrekt referenziert ist oder wenn sich die Tabelle in einer geschützten Ansicht befindet. Überprüfe die Referenzen und die Schutzbedingungen.

2. Wie kann ich eine Zeile in einer bestimmten Position hinzufügen? Du kannst eine Zeile in einer bestimmten Position hinzufügen, indem du die Zeilennummer angibst:

tbl_Personal.ListRows.Add 2 ' Fügt eine Zeile an zweiter Stelle hinzu

Mit dieser Anleitung solltest du in der Lage sein, die Probleme mit listobject.listrow.add zu beheben und effizienter mit Excel VBA zu arbeiten.

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