Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro läuft nicht

Makro läuft nicht
mike49
Hallo,
ich nehme meinen Thread nochmals auf, da er nicht abgeschlossen wurde.
Das dort vorgeschlagene Sortiermakro läuft nicht.
Es wird ein Laufzeitfehler '424' angezeigt und diese Zeile ist gelb unterlegt:
Set Bereich = UsedRange.Resize(, 1)

Das Makro lautet komplett:

Sub Sortieren2()
Dim rng As Range
Dim Bereich As Range
Dim rDate As Range
Set Bereich = UsedRange.Resize(, 1)
' Sortieren2 Makro
Bereich.Offset(1, 0).Resize(Bereich.Rows.Count - 1).Sort Key1:=Range("D2"), Order1:= _
xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For Each rng In Bereich.Cells
Set rDate = rng.Offset(0, 2)
If Month(CDate(rDate))  Month(rDate.Offset(1, 0)) Then
With rng.EntireRow.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
End If
Next rng
Range("A1").Select
End Sub

Nochmals zur Erläuterung:
Es soll die Geburtstagsliste nach Spalte D sortiert werden. Dort stehen die zu den Geburtstagen (Format: dd.mm.yyyy) in Spalte C gehörenden Ordnungszahlen.
Durch eine fette Rahmenlinie (Spalte A:E) sollen die Monate optisch getrennt werden.
Beginnen soll alles mit Zeile 2 und nach unten für Neueinträge offen sein.
Weiß noch jemand Rat?
Gruß
mike49
ActiveSheet.UsedRange.... owT
09.09.2011 10:44:51
Rudi
AW: ActiveSheet.UsedRange.... owT
09.09.2011 11:03:04
mike49
Hallo Rudi,
danke für die schnelle Hilfe.
Ich habe das Makro jetzt so abgeändert:

Sub Sortieren2()
Dim rng As Range
Dim Bereich As Range
Dim rDate As Range
Set Bereich = ActiveSheet.UsedRange.Resize(, 1)
' Sortieren2 Makro
Bereich.Offset(1, 0).Resize(Bereich.Rows.Count - 1).Sort Key1:=Range("D2"), Order1:= _
xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For Each rng In Bereich.Cells
Set rDate = rng.Offset(0, 2)
If Month(CDate(rDate))  Month(rDate.Offset(1, 0)) Then
With rng.EntireRow.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
End If
Next rng
Range("A1").Select
End Sub

Leider funzt das auch so nicht. Gemeldet wird ein Laufzeitfehler '1004' (Sortierbezug ungültig) und dieser Bereich ist gelb unterlegt:
Bereich.Offset(1, 0).Resize(Bereich.Rows.Count - 1).Sort Key1:=Range("D2"), Order1:= _
xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Was läuft da noch schief?
Gruß
mike49
Anzeige
AW: ActiveSheet.UsedRange.... owT
09.09.2011 11:16:47
Matthias
Hallo
Warum zeigst Du nicht einfach Deine Datei?
Einfach Namen ändern und hochladen.
Du hattest ja hier schon den Beitrag begonnen
https://www.herber.de/forum/archiv/1228to1232/t1229006.htm#1229006
Ich hatte das übrigens gestern für mich so gelöst, aber Du hattest schon
eine Antwort von Felix erhalten. Deshalb hatte ich es nicht gepostet.
Hier mal meine Beispieldatei:
https://www.herber.de/bbs/user/76538.xls
Gruß Matthias
Anzeige
AW: ActiveSheet.UsedRange.
09.09.2011 11:47:34
mike49
Hallo Matthias,
schön, dass du auch wieder an Bord bist.
In deiner Beispieldatei klappt das prima.
Ich lade mal meine Datei hoch. Es betrifft aber nur die Sortierung des Blattes "Geburtstagsliste(2)". Vielleicht ist es damit besser zu lösen.
https://www.herber.de/bbs/user/76541.xls
Gruß
mike49
Blatt referenzieren!
09.09.2011 12:12:16
Matthias
Hallo

Sub Sortieren2()
With Tabelle5.Range("A2:E53")
.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End Sub
Gruß Matthias
Anzeige
AW: Blatt referenzieren!
09.09.2011 12:43:09
mike49
Hallo Matthias,
danke für die schnelle Antwort. Aber so wollte ich es eigentlich nicht. Vielmehr sollte die Sortierung mit den Monatstrennlinien so wie in deiner Beispielmappe durchgeführt werden.
Der Sortierbereich sollte nach unten offen sein, damit neue Mitgliedseinträge angefügt und richtig einsortiert werden können.
Ist das zu machen?
Gruß
mike49
Anscheinend ist es . . .
09.09.2011 17:37:12
mike49
doch schwieriger, das Problem zu lesen. Ich lege das Vorhaben ad acta.
Nichtsdestotrotz danke bei euch für eure Hilfe und Lösungsvorschläge.
Gruß
mike49
Sortieren mit Monatstrennlinie
10.09.2011 11:10:13
Matthias
Hallo
Machs doch einfach so:
https://www.herber.de/bbs/user/76553.xls
Gruß Matthias
Anzeige
AW: Sortieren mit Monatstrennlinie
10.09.2011 14:48:35
mike49
Hallo Matthias,
danke, dass du dich nochmals gemeldet hast.
Leider gelingt es mir nicht, dein "MySort"-Makro in mein Tabellenblatt einzuarbeiten.
Ich lade deshalb nochmals meine aktuelle Mappe hoch:
https://www.herber.de/bbs/user/76554.xls
Es betrifft dort nur das Blatt"Geburtstagsliste(2)". Dem "Sortieren"-Button im Blatt ist das Makro "Sortieren2" im Modul2 zugeordnet. Sortiert wird nach Spalte D, die die Geburtstage in Spalte C als Ordnungszahlen darstellt. So benötigt man nur eine Spalte zum Sortieren. Diese Spalte blende ich aber aus. Die Geburtstagsspalte C ist mit einer bedingten Formatierung zur farblichen Hervorhebung des zum aktuellen Datum bezogenen, nächsten Geburtstages belegt.
Die fetten Monatstrennlinien müssten aber ins Makro noch eingearbeitet werden.
Würde mich freuen, wenn du das "auf die Reihe" kriegen würdest.
Gruß
mike49
Anzeige
AW: klar ... ich bekomms "auf die Reihe" ;o)
11.09.2011 18:02:35
Matthias
Hallo

Ersetze einfach das Makro in der Datei Sub Linie() damit:
Sub Linie()
Range("A" & LinienZeile & ":E" & LinienZeile).Borders(xlEdgeBottom).Weight = xlThick
End Sub
das reicht schon aus.
Gruß Matthias
Quatsch ... (xlEdgeTop)
11.09.2011 18:08:39
Matthias
Hallo
Range("A" & LinienZeile & ":E" & LinienZeile).Borders(xlEdgeTop).Weight = xlThick
Gruß Matthias
Fantastisch. So wie ich's wollte . . .
12.09.2011 18:06:35
mike49
vielen Dank für deine Mühe Matthias.
Gruß
mike49
AW: ActiveSheet.UsedRange.... owT
09.09.2011 11:18:46
Rudi
Hallo,
was soll das überhaupt?
Set Bereich = ActiveSheet.UsedRange.Resize(, 1)
Du versuchst einen 1-Spaltigen Bereich nach der 4.Spalte zu sortieren!
Bereich.Offset(1, 0).Resize(Bereich.Rows.Count - 1).Sort ....
Versuchs mit Range("A1").Sort .....
Gruß
Rudi
AW: ActiveSheet.UsedRange....
09.09.2011 11:53:22
mike49
Sorry Rudi,
ich kenne mich da nicht so aus.
Matthias hat vorgeschlagen, meine Datei mal hochzuladen:
https://www.herber.de/bbs/user/76541.xls
Kannst es dir vielleicht auch mal anschauen. Freue mich auch auf deine Lösung.
Gruß
mike49
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige