Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
464to468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
464to468
464to468
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Gefährlicher Code Letzte Zeile/Zelle

Gefährlicher Code Letzte Zeile/Zelle
04.08.2004 23:21:25
Klaus
Hallo Forum,
habe mal eine grundsätzliche Frage zu einem Code. Folgenden Code habe ich benutzt, um die Zeilennummer der letzten Zelle mit vorhandenen Daten zu ermitteln:

Sub LetzteZelle()
LetzteZelle = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
End Sub

Allerdings musste ich bei mir feststellen, das der Code nicht mehr wie gewünscht funktioniert, wenn ich in dem Datenbereich einen Filter setze. Der Code zeigt mir dann nicht mehr die letzte Zelle des KOMPLETTEN Datenbereichs, sondern nur noch die letzte Zelle des GEFILTERTEN Bereichs an.
Meine Frage: Habe ich einen Fehler bei mir im System oder kann man diesen Code halt nur in einem bestimmten Bereich benutzen ?
Wenn letzteres zutreffen sollte, so suggerieren viele Internetseiten halt was anderes, nämlich dass man IMMER die letzte Zelle des GANZEN Datenbereichs ermittelt.
Kann sich hierzu vielleicht jemand grundsätzlich äußern ?
Kann man diesen Code bewusst dazu benutzen, die letzte, gefilterte Zeile zu ermitteln ?
Nachdem ich mir leider ungewollt mit dem oberen Code einige Einträge überschrieben habe, benutze ich mittlerweile folgende Variationen, da die sich offensichtlich nicht an einen gefilterten Bereich stören, :

Sub LetzteZelle()
LetzteZeile = ActiveSheet.UsedRange.Rows.Count
'oder
LetzteZeile = ActiveSheet.Range("A65536").End(xlUp).Row
'oder
LetzteZeile = ActiveSheet.Cells(65536, 1).End(xlUp).Row
End Sub

Vielen Dank für Antworten
Gruß Klaus

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

Betreff
Datum
Anwender
Anzeige
AW: Gefährlicher Code Letzte Zeile/Zelle
Boris
Hi Klaus,
auch deine Variationen sind Murks:
LetzteZeile = ActiveSheet.UsedRange.Rows.Count
Der UsedRange ist ein dermaßen unsicherer und bescheidener Kandidat, dass ich auf ihn so gut wie immer verzichten würde.
LetzteZeile = ActiveSheet.Range("A65536").End(xlUp).Row
'oder
LetzteZeile = ActiveSheet.Cells(65536, 1).End(xlUp).Row

Funkdioniert analog
ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
Berücksichtigt werden immer nur sichtbare Zellen.
Alternativ:
Wenn es sich um Text handelt, dann ist relativ flott:

Sub letzte()
MsgBox WorksheetFunction.Match("", [a:a], -1)
End Sub

Für Zahlen:

Sub letzte()
MsgBox WorksheetFunction.Match(-1E+307, [a:a], -1)
End Sub

Grüße Boris
Anzeige
AW: Gefährlicher Code Letzte Zeile/Zelle
05.08.2004 00:07:12
Klaus
Hallo Boris,
vielen Dank für deine Antwort.
Hab mir beim Antesten der unteren Variationen offensichtlich selbst ein Bein gestellt, habe beim Nachtesten festgestellt,dass du natürlich recht hast.
Die Variationen
LetzteZeile = ActiveSheet.Range("A65536").End(xlUp).Row
und
LetzteZeile = ActiveSheet.Cells(65536, 1).End(xlUp).Row
kommen natürlich auch zu dem "falschen" Ergebnis,
sie sind ja auch im Prinzip das gleiche wie
LetzteZelle = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
Danke auch für deine Vorschläge, die Excel-Funktionen sind halt wahrscheinlich das Beste. Kannst du mir vielleicht noch sagen, warum die Variation
LetzteZeile = ActiveSheet.UsedRange.Rows.Count
so unsicher ist, zumal ich diese Version in verschiedenen Excel-Büchern gesehen habe ?
Gruß Klaus
Anzeige
Nachfrage erledigt !
05.08.2004 00:17:07
Klaus
Hallo Boris,
durch die Antwort von K.Rola hat sich meine Nachfrage bezüglich UsedRange erledigt!
Vielen Dank nochmal
Gruß Klaus
AW: Gefährlicher Code Letzte Zeile/Zelle
K.Rola
Hallo,
gib mal in einem jungfräulichen Blatt in D10 und F20 was ein und teste:
ActiveSheet.UsedRange.Select
MsgBox ActiveSheet.UsedRange.Rows.Count
Alles klar?
Der Rest, siehe {Boris}
Gruß K.Rola
AW: Gefährlicher Code Letzte Zeile/Zelle
05.08.2004 00:14:33
Klaus
Hallo K.Rola,
damit hat sich meine Nachfrage weiter oben dann wohl erledigt, vielen Dank !
Habe dieses Problem noch nicht gehabt, da ich bisher immer zusammenhängende, durchformatierte Datenbereiche hatte, wo UsedRange meines Wissens wohl funktioniert.
Werde dann mal auf die neu gewonnenen Erkenntnisse umsteigen :-))
Gruß Klaus
Anzeige
Stopp...
K.Rola
Hallo,
Boris hat völlig Recht, Usedrange ist ein unsicherer Kandidat. Meist wird er nur dann aktualisiert, wenn die Datei gespeichert wurde und selbst dann kann man sich nicht 100%
darauf verlassen. Besser nicht verwenden oder nur dann, wenn kein Schaden zu erwarten ist.
Gruß K.Rola
AW: Stopp...
05.08.2004 00:32:51
Klaus
Hallo K.Rola,
hab's kapiert,werde ich ändern. Zusätzlich habe ich mir derzeit noch 'ne Prüfung eingebaut die verhindert, dass nochmal versehentlich was überschrieben wird.
Tja, da meint man jahrelang, es ist alles in Ordnung und plötzlich wird man doch eines Besseren belehrt !
Vielen Dank nochmal !
Gruß Klaus
Anzeige
Zusatz
Ramses
Hallo Klaus
UsedRange bezieht sich auf ALLES was in einem Worksheet EINGEFÜGT oder FORMATIERT wurde.
Schreib mal in A1 "1"
Formatiere die Zelle k1000 mit der Schriftart weiss, Sonst nichts reinschreiben, und schau mal was UsedRange.Select nun macht :-)
Deshalb ist die Anweisung, Bücher hin oder her, für den normalen Gebrauch unbrauchbar.
Das geht sogar soweit, dass wenn du in X10000 was reinschreibst und wieder löscht,... der UsedRange nun eben bis zu dieser Zelle geht.
Gruss Rainer
AW: Zusatz
07.08.2004 14:11:42
Klaus
Hallo Rainer,
vielen Dank auch dir für deinen Hinweis.
Du hast recht! Genau das, was du beschreibst, habe ich gearde durch meine eingebaute Prüfroutine bemerkt!
Ich werde UsedRange nicht mehr benutzen !!!
Gruß Klaus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige