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

.End(xlUp).Row addiert jedesmal +1

Forumthread: .End(xlUp).Row addiert jedesmal +1

.End(xlUp).Row addiert jedesmal +1
04.06.2024 10:26:56
JozefV
Hallo zusammen,

ich habe Schwierigkeiten es zu verstehen, dass
unterezeile = Worksheets("DataTabellen").Cells(Rows.Count, tbl.Range.Column).End(xlUp).Row

bei jedem durchlauf eins hochzählt, obwohl sich in den betroffennen Zellen nichts ändert. Hätte jemand eine Erklärung für mich?

hier ist die ganze Sub:
Sub ResizeOBjTabelle()


Dim tbl As ListObject
Dim unterezeile As Long

Set tbl = Worksheets("DataTabellen").ListObjects("TabAlleObjekte")
unterezeile = 0
unterezeile = Worksheets("DataTabellen").Cells(Rows.Count, tbl.Range.Column).End(xlUp).Row

MsgBox (tbl.Range.Column)


'tbl.DataBodyRange.Delete
With tbl.Range
tbl.Resize .Resize(unterezeile)

End With

End Sub
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 10:43:59
Heli
Hi,

in welcher Zeile startet denn Deine Tabelle? Ich vermute mal nicht in Zeile 1... ;-)

Servus, Heli
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 11:34:20
UweD
Hallo

versuch mal .End(xlUp) doppelt anzugeben:

unterezeile = Worksheets("DataTabellen").Cells(Rows.Count, tbl.Range.Column).End(xlUp).End(xlUp).Row


Dann wir zuerst die unterste Zelle der Tabelle gefunden und dann von da der letzten Eintrag.

LG UweD
Anzeige
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 12:05:22
daniel
Hi
da muss aber noch eine Prüfung eingebaut werden, ob die erste angesprungene Zelle auch leer ist.
nur dann darf der zweite Sprung auch ausgeführt werden.

dim rngUZ as range

dim unterZeile as long

set rngUZ = Worksheets("DataTabellen").Cells(Rows.Count, tbl.Range.Column).End(xlUp)
if rngUZ.value = "" then set rngUZ = rngUZ.end(xlup)
untereZeile = rngUZ.row


Gruß Daniel
Anzeige
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 22:05:35
JozefV
Hallo Uwe, Hallo Daniel

tolle Ideen, danke sehr für die Hilfe. Ich wusste es nicht, dass Mann die Methode .End noch schachteln kann.

Gruß Jozef
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 10:49:23
JozefV
Hi Heli,

richtig, die Tabelle startet mit Header in der Zeile 2 und Body ist ab der Zeile 3. Spielt es eine Rolle? Die Funktion soll doch von unten nach oben schauen ob sich da etwas befindet, oder liege ich falsch?

Gruß Jozef
Anzeige
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 10:58:39
Heli
Hi,
bei Deinem Code wird mit jedem Durchlauf die Tabelle um eine Zeile erweitert da die letzte Zeile die ermittelt wird genau um eins größer ist als dein Tabellen-Range. Würde die Tabelle in Zeile 3 Starten wächst sie bei jedem Durchlauf um 2 Zeilen.

unterezeile ermittelt bei Dir z. B. Zeile 10 > da Deine Tabelle in Zeile 2 startet ist der Range der Tabelle nur 9 Zeilen und wird mit dem Resize-Befehl auf 10 erhöht. Beim nächsten Durchlauf ist dann unterezeile = 11 usw.

Servus, Heli

Anzeige
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 11:08:45
daniel
Hi
spiele es doch mal durch.
deine Tabelle hat 10 Zeilen und beginnt in Zeile 2 (Zeile 1 ist leer)
damit ist die letzte Zeile der Tabelle in Zeile 11.

du machst jetzt aber einen Resize auf den Wert der letzten Zeile und damit vergrößert sich die Tabelle um eine Zeile.
das "Letzte Zeile = Anzahl Zeilen" gilt nur, wenn die Liste in Zeile 1 beginnt.

eine Vergrößerung der Tabelle bei jedem Umlauf bekommst du, weil das End(xlup) bei einer formatierten Tabelle immer nur bis zu letzten Zeile der Tabelle springt, egal ob die Zellen leer sind oder nicht.
wenn du mit dem Resize die Tabelle um eine Leerzeile erweiterst, dann ist beim nächsten End(xlup) diese Leerzeile das Sprungziel und nicht wie erwartet, die letzte Zeile mit Inhalt. Das ist der Unterschied zwischen einer formatierten Tabelle und einem normalen Tabellenblatt.

wenn du die letzte Zeile mit Inhalt suchst, könntest du .Find verwenden und die letzte Zelle suchen, die einen Wert enthält:
Columns(x).Find(what:="?*", lookin:=xlformulas, searchdirection:=xlprevious)


Gruß Daniel
Anzeige
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 11:16:53
JozefV
Hallo Daniel,

danke für die Erklärung. ich habe es umgeschrieben und es funktioniert wie es soll.

Gruß
Jozef
AW: .End(xlUp).Row addiert jedesmal +1
04.06.2024 11:08:16
JozefV
Vielen Dank für deine schnelle Antwort und Erklärung.

Das heißt, auch wenn in der Zelle kein Wert steht, die Zelle aber als Teil einer Tabelle(Listobject) definiert ist, wird sie trotzdem als die letzte benutzte Zelle berechnet?
Ich muss also umdenken :(

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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