Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 438 .SetRange

Forumthread: Laufzeitfehler 438 .SetRange

Laufzeitfehler 438 .SetRange
22.04.2013 13:29:46
Katharina
Hallo zusammen,
leider werde ich auch aus alten Beiträgen im Forum nicht schlau. In der Zeile .SetRange bleibt das Makro immer mit Laufzeitfehler 438 hängen.
Option Explicit
Dim i As Long, z As Long, y As Long, x As Long, c As Long
Dim wks_gr As Worksheet
Set wks_gr = Worksheets("general_report")
'benutzte Zeilenzahl ermitteln
z = Worksheets("general_report").Cells(Rows.Count, 1).End(xlUp).Row
'benutzte Spaltenzahl ermitteln
c = Worksheets("general_report").Cells(1, Columns.Count).End(xlToLeft).Column
'Spalte Time Spent finden
y = Worksheets("general_report").Application.Match("Time Spent", Worksheets("general_report").Rows(1), 0)
wks_gr.Sort.SortFields.Add Key:=wks_gr.Cells(1, y + 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("general_report").Sort
.SetRange = wks_gr.Range(wks_gr.Cells(1, 1), wks_gr.Cells(z, c))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Vielleicht bin ich auch einfach mal wieder zu blind.
Vielen Dank für eure Hilfe.
Gruß,
Katharina

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 438 .SetRange
22.04.2013 14:32:48
Beverly
Hi Katharina,
deiser Code gilt für die Excelversionen ab 2007. Wenn du also tatsächlich Excel2003 benutzt, dann ist es das beste, wenn du das Sortieren einmal von Hand aufzeichest und deine Variablen dann in diesen aufgezeichneten Code einbindest.


Anzeige
AW: Laufzeitfehler 438 .SetRange
22.04.2013 14:41:44
Katharina
Hallo Karin,
da hast du natürlich recht. Entschuldigung, habe mich wohl bei der Version verklickt, ohne es zu merken.
Beim Aufzeichnen bekomme ich immer nur die tatsächlichen Zellbezüge, ich brauche es aber über die Variablen.
z.B. With ActiveWorkbook.Worksheets("general_report").Sort
.SetRange Range("A1:BF10")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
In älteren Forumsbeiträgen hatte ich es so wie codiert gesehen. Nur leider funktioniert es nicht.
Gruß,
Katharina

Anzeige
AW: Laufzeitfehler 438 .SetRange
22.04.2013 16:14:37
Beverly
Hi Katharina,
   With wks_gr.Sort
.SortFields.Clear
.SortFields.Add Key:=Range(Cells(1, y + 1), Cells(z, y + 1)), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SetRange Range(Cells(2, 1), Cells(z, c))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


Anzeige
Klappt!!! - Eine Frage noch
23.04.2013 10:54:43
Katharina
Hallo Karin,
klappt perfekt. Vielen Dank.
Kannst du mir vielleicht auch noch erklären, warum mein Code nicht funktioniert hat. Kann es leider nicht nachvollziehen.
Viele Grüße,
Katharina

AW: Klappt!!! - Eine Frage noch
23.04.2013 11:01:43
Beverly
Hi Katharina,
mein Code: Range(Cells(2, 1), Cells(z, c))
dein Code: Range(Cells(1, 1), Cells(z, c))


Anzeige
AW: Klappt!!! - Eine Frage noch
23.04.2013 11:13:06
Katharina
Die Zeile hab ich aber ehrlich gesagt wieder geändert, da der Parameter für .Header = xlYes steht und ich ja sonst keine Überschriften habe. :o)
Du hast "wks_gr. " quasi vorangestellt und es dann später weggelassen, bei mir stand es jeweils vor Range und vor Cells. Warum das aber einen Fehler verursacht verstehe ich nicht :o(
Gruß,
Katharina

Anzeige
AW: Eine Frage noch
23.04.2013 12:33:17
Beverly
Hi Katarina,
es hängt offensichtlich damit zusammen, dass die Anweisung für SortFields.Add bei mir innerhalb der With-Anweisung für Sort steht und bei dir außerhalb.
Innerhalb der Sort-Anweisung ist der Bezug zum Tabellenblatt nicht erforderlich, da dieser ja in jedem Tabellenblatt der gleiche ist. Es gibt allerdings auch keinen Fehler, wenn der Name des Tabellenblattes davor steht, du also wks_gr.Range(wks_gr.Cells(2, 1), wks_gr.Cells(z, c)) verwendest, da es in diesem Tabellenblatt den Bereich ja abenfalls gibt.


Anzeige
Code ist für XL 2007ff und läuft darum nicht...
22.04.2013 14:38:57
EtoPHG
unter XL 2003, Katharina
eigentlich müsste für dich die Zeile
        wks_gr.Sort Key1:=wks_gr.Cells(1, y + 1), Order1:=xlAscending, Header:=xlYes, MatchCase: _
=False
, anstelle des ganzen With...End With Gedöns, genügen.
Gruess Hansueli

Anzeige
Hab mich bei der Version verklickt. Ist 2007
22.04.2013 15:03:09
Katharina
Sorry nochmal,
hab nicht gemerkt, dass ich die falsche Version angeklickt hab.
Gruß,
Katharina
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige