Nicht ganz einfach mit der Beispieldatei. Das ist ein Komplex aus 28MB.
Ich denke, dass eine Beispieldatei auch gar nichts an Erkenntnissen bringt.
Ich gebe daher nochmal die Ablauffolge an.
Nach Eingabe der Kriterien kommt der Spezialfilter.
Code:
Worksheets("Tools").Range("A1:DS10000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("Auswahl").Range("A1:DS2"), CopytoRange:=Worksheets("Auswahl").Range("A3"), Unique:=False
Anschließend ermittele ich die Anzahl der Datensätze für die Listbox
Code:
For n = 4 To Worksheets("Auswahl").Cells(Rows.Count, 26).End(xlUp).Row: Next n
n = Worksheets("Auswahl").Cells(Rows.Count, 26).End(xlUp).Row - 3 '-3, weil der Beginn erst ab Zeile 4 ist
Jetzt wird die gefilterte Auswahl sortiert durch Klick auf einen Optionbutton.
In diesem Code für den Optionbutton steht dann z.B.
Code:
Sort_A = "A4"
Sort_B = "E4"
Sort_C = "Z4"
Call Sortieren 'Modul 9
Nun kommt dein Code, der funktioniert.
Code:
With Worksheets("Auswahl")
With .Range(.Cells(4, 1), .Cells(n + 3, 125))
.Columns(1).NumberFormat = "@"
.Columns(1).TextToColumns Destination:=.Cells(1, 1), _
DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 2)
ListBox1.RowSource = "Auswahl!" & .Address
End With
End With
Modul9
Code:
Sub Sortieren()
With Worksheets("Auswahl").Range("A4:DS10000")
.Sort Key1:=.Range(Sort_A), Order1:=Richtung, Key2:=.Range(Sort_B) _
, Order2:=xlAscending, Key3:=.Range(Sort_C), Order3:=xlAscending, Header:= _
xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers, DataOption2:=xlSortNormal, DataOption3 _
:=xlSortNormal
End With
End Sub
So funktioniert es NICHT.
Erst, wenn ich den Aufruf CALL Sortieren rausnehme, dann macht DEIN Code exakt das, was ich haben will.
Eine Änderung von
DataOption1:=xlSortTextAsNumbers
in
DataOption1:=xlSortNormal
ändert nichts.