select entfernen? Breich verkleinern

Bild

Betrifft: select entfernen? Breich verkleinern
von: Thomas
Geschrieben am: 21.08.2015 15:12:05

Hallo Excelfreunde,
ich habe das untenstehende makro aufgezeichnet.
Es soll von F8 bis zur letzten gefüllten zelle in spalte F aufsteigend sortieren. (in f7 steht die überschrift). in den zeilen f1 bis f6 stehen auch daten die nicht davon berühert werden dürfen.
Hier ist es wichtig das nur die spalte F sortiert wird die Spalten rechts und links dürfen nicht mit sortiert werden .
Dies makro funktioniert auch aber mich stören diese Zeilen Range("F7:F1048576").Select und SetRange Range("F7:F1048576") erstmal habe ich wieder das blöde select was ich nicht machen soll und dann benötige ich ja nicht die gesamten 1048576 zeilen. So weit ich es bis jetzt verstanden hab soll man so etwas nicht machen ( ressourcenverschwendung ).
habe es mit Range("F7:F" & .UsedRange.Rows.Count).select versucht dies geht aber auch nicht. Und selecht ist auch wieder drin.
weiss jemand wie ich es besser machen könnte?
liebe grüsse thomas
Range("F7:F1048576").Select
ActiveWorkbook.Worksheets("Auswertung").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Auswertung").Sort.SortFields.Add Key:=Range _
("F7"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Auswertung").Sort
.SetRange Range("F7:F1048576")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Bild

Betrifft: AW: select entfernen? Breich verkleinern
von: Daniel
Geschrieben am: 21.08.2015 15:32:58
Hi
selektieren ist nicht notwendig.
man muss sich nur angewöhnen, die Zellbereiche immer vollständig, dh mit Angabe es Workbooks und des Worksheets zu referenzieren, auch wenn der Zellbezug innerhalb einer Formel steht.
um den schreibaufwand in Grenzen zu halten, kann man die WITH-Klammer verwenden.
in der WITH-Klammer wird am Anfang ein Objekt (z.B. das Worksheet) definert. Wenn in der Folge ein Ausdruck mit einem Punkt beginnt, setzt VBA dann automatisch das bei WITH definierte Objekt an dieser stelle ein.
in deinem Fall etwas so:


With ActiveWorkbook.worksheets("Auswertung")
    .Sort.Sortfields.Clear
    .Sort.Sortfields.Add Key:=.Range("F7"), SortOn:=xlSortonvalues, _
                         Order:=xlascending, DataOption:=xlsortnormal
    .Sort.SetRange .Range(.Cells(7, "F"), .Cells(.Rows.count, "F").end(xlup))
    .Sort.Header:=xlno
    .Sort.Matchcase = False
    .Sort.Orientation:=xlTopToBottom
    .Sort.SortMethod = xlPinYin
    .Sort.Apply
End with
allerdings verwende ich in VBA immer noch die alte 2003-Schreibweise fürs sortieren, weil die deutlich einfacher ist (wenn man sie selber schreibt)
With ActiveWorkbook.Sheets("Auswertung")
    With .Range(.Cells(7, "F"), .Cells(.Rows.count, "F").End(xlup))
        .Sort Key1:=.Cells(1, 1), order1:=xlascending, header:=xlno
    End with
end With
Gruß Daniel

Bild

Betrifft: super es passt
von: Thomas
Geschrieben am: 21.08.2015 16:32:21
Hallo Daniel,
hab vielen dank für die sehr schnellen und guten tipps und vorschläge. Es passt genau.
Ich werde auch dein 2003 vorschlag einbauen. Dies kann ich wenigstens nachverfolgen.
hab vielen dank.
liebe grüsse thomas

 Bild

Beiträge aus den Excel-Beispielen zum Thema "select entfernen? Breich verkleinern"