Sortieren in Excel 2003 VBA

Gizmo0815

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.655
Hallo Leute,

ich habe da ein Excel Macro das ich von verschiedenen anderen Macros aus aufrufe um eine Tabelle nach unterschiedlichen Gesichtspunkten zu sortieren.

Code:
Sub Sortiere(Eins, Zwei, Drei)
    Range("B3").Select
    Selection.Sort Key1:=Range(Eins), Order1:=xlAscending, Key2:=Range _
     (Zwei), Order2:=xlAscending, Key3:=Range(Drei), Order3:= _
     xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False _
     , Orientation:=xlTopToBottom
    Range("A1").Select
End Sub

Sub Pflanze()
    Call Sortiere("B3", "C3", "D3")
End Sub

Jetzt wollte ich auch noch den Wert von "Order:1" flexibel machen, was mir aber nicht gelingen will.

So geht es schon mal nicht:

Code:
Sub Sortiere(Eins, Richtung, Zwei, Drei)
    Range("B3").Select
    Selection.Sort Key1:=Range(Eins), Order1:=Richtung, Key2:=Range _
     (Zwei), Order2:=xlAscending, Key3:=Range(Drei), Order3:= _
     xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False _
     , Orientation:=xlTopToBottom
    Range("A1").Select
End Sub

Sub Pflanze()
    Call Sortiere("B3", "xlAscending", "C3", "D3")
End Sub

Wie muss ich "Order1:=" und die Variable "Richtung" miteinander verknüpfen?

Auch den ganzen String "Order1:=xlAscending" in die Variable zu packen ist mir nicht gelungen.

Danke schon mal für eure Hinnweise.

Gruß gizmo0815
 
Versuchs mal mit 1 (xlAscending) bzw. 2 (xlDescending):

Code:
Sub Pflanze()
  Call Sortiere("B3", [B][COLOR="Red"]1[/COLOR][/B], "C3", "D3")
End Sub
 
Danke!

Das funktioniert schon mal.

Gibt es aber auch eine Möglichkeit einen String da rein zu packen?

Gruß gizmo0815
 
Schon, aber das wäre ja nicht unbedingt besonders hilfreich, oder?

Dann hast du da halt einen String, aber den könntest du ja auch erst direkt im Makro eintragen.
 
Ich glaube du hast mich falsch verstanden.

Ich würde eventuell auch mal andere Sachen so übergeben. z.B. "Orientation:=xlTopToBottom".

Da wäre es im Sinne der Verständlichkeit schon schöner wenn man den Text und nicht nur eine Zahl übergeben könnte.

Wenn ich nur eine Zahl übergeben kann, muss ich ja später mal wissen was bedeutet "1" oder "2" oder "0" !?

Gruß gizmo0815
 
Hab's mal probiert, du kannst auch xlTopToBottom reinschreiben, aber ohne "", sonst ist es eben einfach ein String - ist ja eigentlich logisch.

Ohne Anführungszeichen ist es quasi einfach eine Variable (bzw. hier eine Konstante: xlTopToBottom = 1).
 
Das war jetzt einfacher als erwartet. Danke!

Manchmal ist man wohl ein wenig Betriebsblind. :-)

Gruß gizmo0815
 
Zurück
Oben