Sortieren per makro

23/03/2011 - 19:12 von Peter Voigt | Report spam
Tach auch,

ich will in mehreren Tabellen per Makro (als Teilaufgabe) sortieren lassen.
Die Tabellen sind gleich aufgebaut, unterscheiden sich nur in der Anzahl der Zeilen.

Mein aufgezeichneter Makro sieht an der m.e. wichtigen Stelle so aus:
Cells.Select
ActiveWorkbook.Worksheets("zzz").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("zzz").Sort.SortFields.Add Key:=Range("I2:I7807"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("zzz").Sort
.SetRange Range("A1:Z7807")
Dabei möge "zzz" für den Blattnamen stehen. Mir geht es speziell um die Definition
von "A1:Z7807" (bzw. auch "I2:I7807"; das Fenster ist fixiert bzw. eingefroren). Die
7807 definiert hier die letzte Zeile der Tabelle. Das ist ja im Moment der
Aufzeichnung richtig - nur haben andere Tabellenblàtter eben andere Zeilenzahlen :-(
Wie kann ich das ohne VBA-Kenntnisse hinbiegen? - Bis jetzt helf ich mir, indem ich
einfach die 7807 mit 50000 überschrieben hab ;-)
Es muß aber noch was Eleganteres geben, oder?

The truth is out there.
 

Lesen sie die antworten

#1 Claus Busch
23/03/2011 - 19:31 | Warnen spam
Hallo Peter,

Am Wed, 23 Mar 2011 19:12:03 +0100 schrieb Peter Voigt:

Mein aufgezeichneter Makro sieht an der m.e. wichtigen Stelle so aus:
Cells.Select
ActiveWorkbook.Worksheets("zzz").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("zzz").Sort.SortFields.Add Key:=Range("I2:I7807"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("zzz").Sort
.SetRange Range("A1:Z7807")



als Key reicht die erste Zeile und mit UsedRange hast du den jeweils
ganzen Bereich abgedeckt:

With ActiveSheet.UsedRange
.Sort , key1:=[I2], order1:=xlDescending, Header:=xlGuess
End With


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Ähnliche fragen