Excel-VBA-Sortieren einen benannten Bereich, der von einer bestimmten Spalte

Habe ich einen Bereich ausgewählt und in diesem Bereich möchte ich Sortieren nach einer bestimmten Spalte, so dass jede Zeile ist immer die gleiche, d.h. die Sortieren-Funktion verschiebt das gesamte Zeilen basierend auf welcher Spalte ich ausgewählt habe, zu Sortieren.

Mein code bisher ist:

Sub CustomSortAscendingExcel(ByVal control As IRibbonControl, ByRef cancelDefault As Variant)
Dim selRange As range
Dim usedRange As range
Dim checkRange As range
Dim shtData As Worksheet
Set shtData = Worksheets("Data")
shtData.Activate
shtData.Unprotect
Set selRange = Selection
Set usedRange = returnUsedRange
Set checkRange = Intersect(usedRange, selRange)
If Not Application.Intersect(usedRange, selRange) Is Nothing Then
With ActiveSheet
    usedRange.Sort Key1:=selRange, Order1:=xlAscending, DataOption1:=xlSortNormal, MatchCase:=False, SortMethod:=xlPinYin, _
    Header:=xlNo, Orientation:=xlSortColumns
    .Sort.Apply
End With

Und ähnliche für die Sortierung Absteigend. Dies funktioniert gut für column1. Mein problem ist, dass für die Spalten 2, 3, 4, es funktioniert nur richtig für diejenigen Zeilen, die einen Wert in Spalte 1 nicht für alle, die nicht. Zum Beispiel in dem Bild unten ist die Sortierung nach Spalte 3 richtig verschiebt die ersten 9 Zeilen, aber nicht die letzten beiden.

Kann jeder jeden schlagen eine Möglichkeit dieses Problem zu beheben? Danke!

Excel-VBA-Sortieren einen benannten Bereich, der von einer bestimmten Spalte

die Fläche bezieht sich auf usedRange im code?
usedRange bezieht sich hier auf die ganze Tabelle (A:2, D:11), selRange bezieht sich auf die Spalte, die ich ausgewählt habe zu Sortieren
Idee ist gut, es zu lösen... "+1 " für ihn unten.

InformationsquelleAutor baarkerlounger | 2013-05-02

Schreibe einen Kommentar