Hallo liebe Leute,
heute habe ich einen Fehler in einem Code den ich nicht auflösen kann.
Ich möchte eine Spalte mit Datumswerten abwärts sortieren.
Also habe ich einen Schnipsel aus einem funktionierenden Code herausgezogen, den ich einmal erstellt hatte.
ActiveWorkbook.Worksheets(ZSheet).AutoFilter.Sort. _
SortFields.Add2 Key:=Range("M2:M" & EZeile), SortOn:=xlSortOnValues, Order:= _
xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Nun habe ich bei meinem neuen Code die Besonderheit, das die Spalte ZumKopieren leider nicht immer an der gleichen Spalte ist.
Also lasse ich nach der Spalte suchen und möchte danach den Wert in die Sortierfunktion einfügen.
Leider bekomme ich immer nur die Spaltennummer aus der Range "raFund" herausgezogen. Deshalb habe ich schon einiges versucht, um die Variable "ZumKopieren" in die Formel einzufügen, komme aber irgendwie nicht weiter.
Dim raFund As Range
Dim ZumKopieren As String
Spaltenname = "Zum Kopieren"
With Worksheets(QSheet.Name)
Set raFund = .Rows(1).Find(what:=Spaltenname, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
z = raFund.Column
'MsgBox "Spalte: " & z
ZumKopieren = z
End If
End With
' Sortieren nach Erstelldatum neueste oben
ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort. _
SortFields.Add2 Key:=Range(Cells(1, ZumKopieren), Cells(QletzteZeile, ZumKopieren)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Den Namen des ZSheet aus dem ersten Code habe ich bewusst in QSheet. Name umgesetzt.
Sobald der grüne Abschnitt zur Ausführung kommt bekomme ich einen VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler angezeigt.
Ich bin mir Ziemlich sicher, das es etwas mit dem Roten Abschnitt zu tun hat.
Ersetze ich den Kode mit der Aktuellen Position der Spalte (17 = Q) funktioniert es.
ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range("Q1:Q" & QletzteZeile), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
Wenn ich aus der RangeVariable raFund versuche .Name herauszu ziehen, bekomme ich einen Anwendungs- oder objektdefinierter Fehler angezeigt.
Ich habe während ich dies schrieb noch eine Idee bekommen.
Ich habe die Variable x (Dim y As String) anstelle der Variablen z (Dim z As Long) eingesetzt und den Code umgeschrieben:
Dim y As String
Dim ZumKopieren As String
Spaltenname = "Zum Kopieren"
With Worksheets(QSheet.Name)
Set raFund = .Rows(1).Find(what:=Spaltenname, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
y = raFund.Address
ZumKopieren = z
End If
End With
' Sortieren nach Erstelldatum neueste oben
ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range(ZumKopieren & "1:" & ZumKopieren & QletzteZeile), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Jetzt läuft der Code bis zu .Apply durch und gibt mir dann den VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler aus.
Gefunden:
ZumKopieren = z ist natürlich ZumKopieren = y
Jetzt geht es.
So, jetzt habe ich so viel geschrieben, vieleich hilft es ja jemand anderem.
Was ich nicht verstehe:
ZumKopieren = y = "$Q$1"
Das würde bedeuten, das
Range(ZumKopieren & "1:" & ZumKopieren & QletzteZeile),
Range("$Q$1" & "1:" & "$Q$1" & 20502), wäre. Etwas unsinnige Adresse oder?
Da müsste doch auch
ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range(ZumKopieren), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
gehen oder?
Tut es.
Verstehe ich zwar nicht, tut es aber. Beide Versionen.
Tschau und vieleicht hilft es ja jemand Anderem.
|