Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
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
Inhaltsverzeichnis

Spalten sortieren

Spalten sortieren
19.10.2014 11:15:03
Guse

Hallo zusammen,
ich habe eine Tabelle von A2 - AD2. Die Spalten sollen in folgender Reihnenfolge via VBR sortiert werden. Leider sagt er mir immer Laufzeitfehler 91
Range("A2:AD900").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("Eingabe").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Eingabe").AutoFilter.Sort.SortFields.Add Key:= _
Range("D2:D900"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Eingabe").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("Eingabe").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Eingabe").AutoFilter.Sort.SortFields.Add Key:= _
Range("B2:B900"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Eingabe").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten sortieren
19.10.2014 13:05:42
fcs
Hallo Guse,
vor dem Sortieren muss du prüfen, ob der Autofilter-Modus schon aktiv ist.
Wenn ja, dann darfst du
Range("A2:AD900").Select
Selection.AutoFilter

nicht ausführen, da sonst der Autofilter deaktiviert wird, was dann anschließend beim Versuch, den nicht mehr vorhandenen Autofilterbereich zu sortieren, zum Fehler führt.
Zusätzlich kann man die mit dem Rekorder aufgezeichneten Code-Zeilen in der folgenden Form vereinfachen.
Gruß
Franz
Sub Test()
Dim wksEingabe As Worksheet
Set wksEingabe = ActiveWorkbook.Worksheets("Eingabe")
With wksEingabe
.Activate
'Prüfen, ob der Autofilter schon aktiv ist
If .AutoFilterMode = True Then
If .FilterMode = True Then
'                .ShowAllData
End If
Else
.Range("A2:AD900").Select
Selection.AutoFilter
End If
End With
With wksEingabe.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=wksEingabe.Range("D2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
With wksEingabe.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=wksEingabe.Range("B2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Gruß
Franz

Anzeige
AW: Spalten sortieren
19.10.2014 22:34:01
Guse
Vielen Dank
hat super geklappt.
Kannst du das auch noch in das o.g. Format bringen ???
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add(Range("A2:A595"), _
xlSortOnCellColor, xlDescending, , xlSortNormal).SortOnValue.Color = RGB(13, 13 _
, 13)
With ActiveWorkbook.Worksheets("Tabelle1").Sort
.SetRange Range("A1:F595")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

AW: Spalten sortieren
20.10.2014 08:39:08
fcs
Hallo Guse,
das sieht dann wie folgt aus.
Allerdings ist diese Sortierung dann in einer Tabelle ohne Autofilter.
Gruß
Franz
Sub Test2()
Dim wks As Worksheet, Zeile As Long
Set wks = ActiveWorkbook.Worksheets("Tabelle1")
With wks
Zeile = .UsedRange.Row + .UsedRange.Rows.Count - 1 'letzte benutzte Zeile
With .Sort
.SortFields.Clear
.SortFields.Add(wks.Range("A2"), xlSortOnCellColor, xlDescending, , _
xlSortNormal).SortOnValue.Color = RGB(13, 13, 13)
.SetRange wks.Range("A1:F" & Zeile)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub

Anzeige
AW: Spalten sortieren
20.10.2014 11:07:23
Guse
Hallo Franz,
danke.
wir würde es denn aussehen wenn es als Autofilter in die erste Code mit eingebaut wird ??

AW: Spalten sortieren
20.10.2014 12:54:02
fcs
Hallo Guse,
die Tabelle hat ja jetzt einen anderen Namen. Also müssen die entsprechenden Prüfungen ob Autofilter vorhanden ebenfalls wieder eingebaut werden.
Gruß
Franz
Sub test()
Dim wksEingabe As Worksheet
Dim wks As Worksheet, Zeile As Long
Set wksEingabe = ActiveWorkbook.Worksheets("Eingabe")
With wksEingabe
.Activate
'Prüfen, ob der Autofilter schon aktiv ist
If .AutoFilterMode = True Then
If .FilterMode = True Then
'                .ShowAllData
End If
Else
.Range("A2:AD900").Select
Selection.AutoFilter
End If
End With
With wksEingabe.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=wksEingabe.Range("D2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
With wksEingabe.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=wksEingabe.Range("B2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Set wks = ActiveWorkbook.Worksheets("Tabelle1") 'ggf. "Tabelle1" durch "Eingabe" ersetzen
With wks
.Activate
Zeile = .UsedRange.Row + .UsedRange.Rows.Count - 1 'letzte benutzte Zeile
'Prüfen, ob der Autofilter schon aktiv ist
If .AutoFilterMode = True Then
If .FilterMode = True Then
'                .ShowAllData
End If
Else
.Range("A2:AD" & Zeile).Select
Selection.AutoFilter
End If
End With
With wks.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add(Key:=wks.Range("A2"), SortOn:=xlSortOnCellColor, _
Order:=xlDescending, DataOption:=xlSortNormal).SortOnValue.Color _
= RGB(13, 13, 13)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige