AW: gefilterte Werte selektieren
27.12.2016 10:59:02
Daniel
HI
das kann verschiedene Gründe haben.
beispielsweise sind Zellen mit einer eigenständigen Formatierung für Hintergrundfarbe oder Rahmenlinien ebenfalls relevant für die Ermittlung der Usedrange und zählen dazu, auch wenn sie keinen Inhalt haben.
daher sollte man auf jeden Fall Formatierungen für ganze Zeilen oder Spalten vermeiden.
wenn man eine ganze Spalte oder Zeile formatiert, dann klappt das zunächst, aber sobald du dann hier wieder einzelne Zellen formatierst, kannst du ein Problem bekommen.
Außerdem arbeitet Excel für die Ermittlung der Usedrange nach dem Motto: lieber etwas zu groß als zu klein (zu klein darf auf keinen Fall passieren), daher kommt es dann manchmal zu solchen Fehlern.
auch wenn du das Duplikate-Entfernen anwendest musst du beachten, dass die Usedrange nicht angepasst wird wenn dadurch Zeilen gelöscht werden.
Um dieser Problematik grundsätzlich aus dem Weg zu gehen, kann man verschiedene Methoden anwenden (die allerdings wieder andere Einschränkungen haben:
anstelle von ActiveSheet.Usedrange
nimmt man:
Cells(1, 1).CurrentRegion.Select
das CurrentRegion orientiert sich nur nach dem tatsächlichen Zellinhalt und nicht nach Formatierungen.
Es ist aber erforderlich, dass in einer Zeile und in einer Spalte alle Zellen befüllt sind, so dass es keine durchgängigen Leerezeilen und -spalten innerhalb des zu markierenden Bereichst gibt.
oder man ermittelt über die END-Funktionen die letzte befüllte Zeile und die letzte befüllte Spalte.
hierzu muss es aber eine bekannte Zeile und Spalte geben, welche auch sicher bis zu letzten Zelle befüllt ist, in welcher man dan diese Sprungfunktion ausführen kann:
dim ZE as long
dim SP as long
ZE = Cells(Rows.Count, 1).End(xlup).Row
SP = Cells(1, Columns.Count).End(xltoleft).Column
Range(Cells(1, 1), Cells(ZE, SP)).Select
Gruß Daniel