Code ändern um select zu vermeiden

Bild

Betrifft: Code ändern um select zu vermeiden
von: Lorenz
Geschrieben am: 24.10.2015 19:25:11

Hallo
Mit folgender Schreibweise funktioniert die Sortierung. Leider wird durch ".select" das "SelectionChange" bzw. "Worksheet_BeforeRightClick" Ereignis ausgelöst. Kann man den "Sortierbefehl" anders formulieren um "select-Reaktionen" zu unterbinden?
With wksKalender
.Range("A14:ABN97").Select
.Sort.SortFields.Add Key:=Range("ABN14:ABN97"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With wksKalender.Sort
.SetRange Range("A14:ABN97")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
Danke im Voraus
Gruß
Lorenz

Bild

Betrifft: AW: Code ändern um select zu vermeiden
von: Hajo_Zi
Geschrieben am: 24.10.2015 19:29:24
Hallo Lorenz,
.Range("A14:ABN97").Sort.SortFields.Add Key:=Range("ABN14:ABN97"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Gruß Hajo

Bild

Betrifft: AW: Code ändern um select zu vermeiden
von: Lorenz
Geschrieben am: 24.10.2015 19:42:55
Hallo Hajo
So löst es leider "Laufzeitfehler 1004 (die Sort-Eigenschaften des Range-Objektes kann nicht zugeordnet werden) aus.
Gruß
Lorenz

Bild

Betrifft: AW: Code ändern um select zu vermeiden
von: Hajo_Zi
Geschrieben am: 24.10.2015 19:44:31
Hallo Lorenz,
ich baue keine Datei nach. Vielleicht fehlte in Deinem Code nur ein Punkt?
.Range("A14:ABN97").Sort.SortFields.Add Key:=.Range("ABN14:ABN97"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Gruß Hajo

Bild

Betrifft: AW: Code ändern um select zu vermeiden
von: Lorenz
Geschrieben am: 24.10.2015 19:50:49
Hallo Hajo
Leider löst es so "laufzeitfehler 1004" (Die Sort-Eigenschaft des Range-Objektes kann nicht zugeordnet werden).
Gruß
Lorenz

Bild

Betrifft: AW: Code ändern um select zu vermeiden
von: Daniel
Geschrieben am: 24.10.2015 20:25:44
Hi
ich zeigs dir mal ohne das erste WITH (Tabellenblatt).
der Punkt wird zu schnell übersehen und es gibt beim Sortieren mehrere Stellen, die da kritisch sind:

wksKalender.Sort.SortFields.Add Key:=wksKalender.Range("ABN14:ABN97"), SortOn:=xlSortOnValues,  _
Order:=xlAscending, DataOption:=xlSortNormal
With wksKalender.Sort
.SetRange wksKalender.Range("A14:ABN97")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
abweichend von der Recorderaufzeichnung kann man den Code auch so strukturieren, dann wirds etwas übersichtlicher:
With ksKalender.Sort
    .SortFields.Add Key:=wksKalender.Range("ABN14:ABN97"), _
                    SortOn:=xlSortOnValues, _
                    Order:=xlAscending, _
                    DataOption:=xlSortNormal
    .SetRange wksKalender.Range("A14:ABN97")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

etwas blöde ist hier, das man das WITH gerne für das Tabellenblatt, aber auch für das Sortierobjekt verwenden möchte, aber das geht ja nicht, weil es immer nur ein WITH gleichzeitig gibt.
Ich bevorzuge hier immer noch die Schreibweise von Excel 2003:
With wksKalender.Range("A14:ABN97")
    .Sort Key1:=.Cells(1, "ABN"), order1:=xlascending, header:=xlguess
End With
gruss Daniel

Bild

Betrifft: AW: Code ändern um select zu vermeiden
von: Lorenz
Geschrieben am: 25.10.2015 08:30:18
Hallo Daniel
Danke für die Info(s) & Tipps. Habe die von dir von dir bevorzugte Variante verwendet (Hat entgegen der zwei anderen, s o f o r t funktioniert)
vielen Dank nochmals &
Grüsse Lorenz

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Code ändern um select zu vermeiden"