Range(strSpH & 1 & AnzahlDaten)
Das sieht fragwürdig aus - soll das wirklich so sein?
So würde ich es machen:
Option Explicit
Sub Test1234()
Dim myCustomList As Variant
Dim myCustomListIndex As Long
myCustomList = Array("H", "A", "B")
On Error Resume Next
myCustomListIndex = 0
myCustomListIndex = Application.GetCustomListNum(myCustomList)
On Error GoTo 0
If myCustomListIndex = 0 Then
'# create CustomList
Call Application.AddCustomList(myCustomList)
myCustomListIndex = Application.GetCustomListNum(myCustomList)
End If
With ThisWorkbook.Worksheets("Tabelle1") '<- anpassen
Dim rngTable As Excel.Range
'Datenbereich (inkl. Kopfzeile)
'* Dem Beispiel nach ergibt das hier 'A1:I%', wobei die Zeile '%' sich aus der Suche in Spalte A - von unten nach oben - ergibt.
' Range(<BEREICH_ZELLE_UNTEN_LINKS>, <BEREICH_ZELLE_OBEN_RECHTS>)
Set rngTable = .Range(.Cells(.Rows.Count, "A").End(xlUp), "I1")
With .Sort
With .SortFields
'Einstellungen für den Sort setzen
.Clear
'1. Spalte (dem Beispiel nach => Spalte A)
.Add2 Key:=rngTable.Columns(1), _
SortOn:=xlSortOnValues, _
Order:=XlSortOrder.xlAscending, _
DataOption:=XlSortDataOption.xlSortNormal
'2. Spalte (dem Beispiel nach => Spalte H)
.Add2 Key:=rngTable.Columns(8), _
SortOn:=xlSortOnValues, _
Order:=XlSortOrder.xlAscending, CustomOrder:=myCustomListIndex, _
DataOption:=XlSortDataOption.xlSortNormal
'3. Spalte (dem Beispiel nach => Spalte G)
.Add2 Key:=rngTable.Columns(7), _
SortOn:=xlSortOnValues, _
Order:=XlSortOrder.xlDescending, _
DataOption:=XlSortDataOption.xlSortNormal
End With
'diverse Einstellungen setzen
.Orientation = xlTopToBottom
.Header = XlYesNoGuess.xlYes
.MatchCase = False
.SortMethod = xlPinYin
'der Bereich, auf den der Sort angewendet werden soll
Call .SetRange(rngTable)
'den Sort den Einstellungen nach anwenden
Call .Apply
End With
End With
End Sub
|