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

Forumthread: letzte beschriebene Zeile aus ListObject auslesen

letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 14:14:22
Anna
Hallo,
ich habe in einem Excel Sheet mehrere Tabellen als ListObjects benannt und
brauche jetzt die letzte beschriebene Zeile in Spalte 3 der jeweiligen Tabellen.
Ich steh gerade echt auf dem Schlauch. ich bekomme es hin mir die letzte beschriebene Zeile in einer Msg Box auszugeben...aber leider nicht als String (letzte Zeile = ....) zu speichern... Jemand eine Idee
Im Folgenden mein Code:
Sub test()
Dim oList As ListObject
Dim adr As String
With Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange
MsgBox .Cells(.Rows.Count, 3).End(xlUp).Row
End With
End Sub


Ich würde gerne sowas in der Art haben, aber es funktioniert nicht:

letzteZeile = Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange.Cells(Rows.Count, 3).End(xlUp).Row

Fehlerausgabe ist 1004: Anwendungs - oder objektdefinierter Fehler
Vielen Dank für eure Tipps
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 14:45:38
Matthias
Hallo
Ich mach das immer so
Mein ListObject ist Tabelle1
Tabelle1.Range("Tabelle1[[#Headers],[Datum]]").End(xlDown). _
Select
MsgBox Selection.Address
Datum ist hier die Überschrift der Spalte deren letzte belegte Zelladresse ich haben will.
Einfach anpassen, Du hast doch sicher eine Überschrift.
Gruß Matthias
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 15:34:50
Anna
Hallo Matthias,
vielen Dank für deine Antwort!
Dein code gibt mir auch die richtige Zeilenanzahl aus, jedoch ebenso als Msg Box. Gibt es eine Möglichkeit, diesen als String oder Integer zu bekommen?
Sowas in der Art?
letzteZeile = Worksheets("Liste1").ListObjects("Tabelle14").DataBodyRange.MsgBox.Cells(Rows.Count + 1, 3).End(xlUp).Row
Vielen Dank
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 15:45:30
Matthias

Dein code gibt mir auch die richtige Zeilenanzahl aus
Der Code gibt Dir die Zellaresse zurück, diese kannst Du auch in einer Variable speichern
Die Variable mußt Du nur richtig DIMensionieren (Variablen-Deklaration)
Ich werd aber nicht schlau daraus ob Du nun die Adresse oder die Zeilen-Nummer brauchst
Denn:
letzteZeile = ....).End(xlUp).Row
spricht ja eher dafür das Du die Zeile brauchst.
Gruß Matthias
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 21:10:51
Anna
Hallo Matthias,
du hast Recht. Ich brauche die ZeilenNummer & die gibt mir mein Code ja in einer Msg Box aus. Nur weiß ich leider immer noch nicht (auch durch vielfaches probieren) wieso ich den oben genannten Code nicht verwenden kann....bzw. wie kann ich mir die Zeilennummer denn abspeichern?
Ich steh wsl auf dem Schlauch...denn wenn ich es ohne ListObject probiere, klappt es ja auch nur nicht für die Tabelle14 sondern für das gesamte Dokument....
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
08.11.2018 01:52:36
Werner
Hallo Anna,
also ich versteh jetzt das Problem ehrlich gesagt nicht.
Sub test()
Dim loLetzte As Long
With Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
MsgBox loLetzte
End With
End Sub
Gruß Werner
Anzeige
Hallo Matthias...
08.11.2018 15:37:21
Werner
...da hast du natürlich recht. Funktioniert nur, wenn die Tabelle nicht vollständig gefüllt ist. Und das sollte ja eigentlich der Fall sein bei intelligenten Tabellen, die nicht auf "Vorrat" zu haben.
Das scheint ja aber wohl bei Anna der Fall zu sein, sonst bekäme sie je ein falsches Ergebnis.
Gruß Werner
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
08.11.2018 13:54:47
Anna
Hallo Werner,
vielen Dank! Du hast mir echt geholfen. Kurz zur Erklräung: Mir war nicht bewusst, dass ich in deinem Fall loletzte = .... in dem With - End With Block stehen darf. Natürlich klappt es so prima!
AW: hier die Lösung ...
08.11.2018 13:54:33
Anna
Hallo Matthias,
danke für deine Antwort + Datei! Hat mir sehr geholfen!
Hallo Werner,
Kurz zur Erklräung: Mir war nicht bewusst, dass ich in deinem Fall loletzte = .... in dem With - End With Block stehen darf. Natürlich klappt es so prima!
AW: letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 15:02:04
EtoPHG
Hallo Anna,
Dein Code test hat den winzigen Fehler, dass der Startpunkt der Aufwärtssuche (xlUp) eine Zeile zu niedrig ist. Korrigiere auf:
 MsgBox .Cells(.Rows.Count + 1, 3).End(xlUp).Row
Gruess Hansueli
Anzeige
AW: letzte beschriebene Zeile aus ListObject auslesen
07.11.2018 15:31:18
Anna
Hallo EtoPHG,
vielen Dank für deine Antwort! Ich glaube ich hab mich nicht genau ausgedrückt. Die MSG Box zeigt mir schon die richtige Zahl an, jedoch will ich keine Ausgabe in einer Msg Box sondern einen String, den ich im weiteren Code Verlauf benutzen kann.
Sowas geht halt nicht...
letzteZeile = Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange.MsgBox.Cells(Rows.Count + 1, 3).End(xlUp).Row
verstehst du jetzt was ich meinte?
Anzeige
Was ist ein String, und was soll drin sein? (owT)
07.11.2018 15:45:31
EtoPHG

AW: Was ist ein String, und was soll drin sein? (owT)
07.11.2018 21:17:11
Anna
Kurz zur Erklärung: Wenn ich mir die letzte beschriebene Zeile in einem normalen Sheet anzeigen lassen (ohne Tabellen als ListObjects) verwende ich folgenden Code:
letzteZeile = Worksheets("BI15_Wtl").Cells(Rows.Count, 5).End(xlUp).Row
Dabei ist letzteZeile als String deklariert
Dasselbe möchte ich nun innerhalb einer Tabelle(ListObject)in einem Sheet. Wobei unter der Tabelle natürlich auch noch Zeilen stehen...
wie kann ich denn nun die Zeilennummer als Variable (String) bekommen und diese dann auch innerhalb des Codes weiterverwenden
z.B.:
'With Worksheets("Liste12").Cells(letzteZeile + 1, 1)
.Value = "Kurzwahl"
.Font.Bold = True
'End With

Anzeige
Was ist ein String, und was soll drin sein? (owT)
07.11.2018 15:45:33
EtoPHG

OT hast Du doppelt gesendet? owT
07.11.2018 15:46:35
Matthias
Neeeeeeeeeeein, sag auch! sehr informativ! (owT)
07.11.2018 15:48:09
EtoPHG

Anzeige
was ist sehr informativ! (owT)
07.11.2018 15:51:55
Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Letzte beschriebene Zeile aus ListObject auslesen


Schritt-für-Schritt-Anleitung

  1. Öffne das VBA-Fenster: Drücke ALT + F11, um das VBA-Entwicklungsfenster zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste in den Projekt-Explorer, wähle Einfügen und dann Modul.

  3. Füge den Code ein: Verwende den folgenden VBA-Code, um die letzte beschriebene Zeile in einer ListObject (intelligente Tabelle) zu ermitteln:

    Sub test()
       Dim loLetzte As Long
       With Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange
           loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
       End With
       MsgBox loLetzte
    End Sub
  4. Führe den Code aus: Klicke auf F5 oder wähle Ausführen aus dem Menü, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler 1004: Anwendungs- oder objektdefinierter Fehler: Dieser Fehler tritt auf, wenn das ListObject nicht korrekt angesprochen wird. Stelle sicher, dass der Tabellenname (Tabelle14) und der Arbeitsblattname (Liste12) exakt stimmen.
  • Falsche Zeilenanzahl: Wenn der Code nicht die erwartete Zeilenanzahl zurückgibt, überprüfe, ob deine Tabelle vollständig gefüllt ist oder ob es Leerzeilen gibt.

Alternative Methoden

Wenn du die letzte beschriebene Zeile in einer ListObject ermitteln möchtest, gibt es verschiedene Ansätze:

  • Verwendung von .ListRows.Count:

    Dim letzteZeile As Long
    letzteZeile = Worksheets("Liste12").ListObjects("Tabelle14").ListRows.Count
  • Direktes Ansprechen der Zelle:

    Dim letzteZeile As Long
    letzteZeile = Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange.Cells(3, 1).Row

Praktische Beispiele

  1. Letzte Zeile in Spalte 3 ausgeben:

    Sub letzteZeileAusgeben()
       Dim loLetzte As Long
       With Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange
           loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
       End With
       Debug.Print "Die letzte Zeile in Spalte 3 ist: " & loLetzte
    End Sub
  2. Wert in die nächste Zeile schreiben:

    Sub WertInNaechsteZeileSchreiben()
       Dim loLetzte As Long
       With Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange
           loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row + 1
           .Cells(loLetzte, 3).Value = "Neuer Wert"
       End With
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Fehler bei der Variablen-Deklaration zu vermeiden, indem alle Variablen deklariert werden müssen.
  • Vermeide magische Zahlen: Statt 3 für die Spalte zu verwenden, definiere eine Konstante oder eine Variable, um die Lesbarkeit des Codes zu verbessern.
  • Nutze Error Handling: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler abzufangen und besser zu diagnostizieren.

FAQ: Häufige Fragen

1. Wie speichere ich die Zeilennummer als String? Du kannst die Zeilennummer als Integer speichern und bei Bedarf in einen String umwandeln:

Dim letzteZeile As Long
letzteZeile = Worksheets("Liste12").ListObjects("Tabelle14").DataBodyRange.Cells(Rows.Count, 3).End(xlUp).Row
Dim letzteZeileString As String
letzteZeileString = CStr(letzteZeile)

2. Was ist der Unterschied zwischen DataBodyRange und ListRows? DataBodyRange gibt den Bereich der Daten zurück, während ListRows eine Sammlung von Zeilen innerhalb des ListObjects darstellt. ListRows.Count gibt die Anzahl der belegten Zeilen zurück, während DataBodyRange auf die tatsächlich in der Tabelle enthaltenen Daten verweist.

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