Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1468to1472
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

Syntax Sortiercode für jedes Arbeitsblatt

Syntax Sortiercode für jedes Arbeitsblatt
28.01.2016 09:06:00
Alex
Servus,
für jedes Arbeitsblatt sollte folgender Sortier-code durchlaufen.
Problem: 'BIS HIERHIN läuft der Code auf allen Tabellenblätter, nur das Sortieren funktioniert nicht.
Ich denke es liegt daran, dass ws nicht eingebunden ist in die Sortierfunktion. Wie ist denn da die richtige Syntax?

Sub sor(ws As Worksheet)
Dim rng As Range
For Each rng In ws.Range(ws.Cells(1, 1), ws.Cells(Rows.Count, 1).End(xlUp))
rng.Cells(, 3) = "f" & rng.Cells(, 1)
rng.Cells(, 3).Font.ColorIndex = 1 'BIS HIERHIN
Columns("A:C").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp)).ClearFormats
Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp)).Clear
Next rng
End Sub

Danke!
Gruß Alex

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Syntax Sortiercode für jedes Arbeitsblatt
28.01.2016 09:16:16
EtoPHG
Hallo Alex,
Vielleicht, wenn du vor jeden unqualifizierten Bereich, dein ws Objekt voranstellst?
Also statt:
Columns("A:C")
Range(Cells(1, 3),
ws.Columns("A:C")
ws.Range(ws.Cells(1, 3), 

etc.
Gruess Hansueli

AW: Syntax Sortiercode für jedes Arbeitsblatt
28.01.2016 10:19:40
Alex
Hey Hansueli,
habe ich schon alles probiert :(
Wenn ich vor Columns("A:C")
ws.Columns("A:C") schreibe, kommt ein Fehler: Laufzeitfehler 1004, der Sortierbezug ist ungültig.
Gruß Alex

Lade eine Beispielmappe hoch! (owT)
28.01.2016 10:35:57
EtoPHG

AW: Lade eine Beispielmappe hoch! (owT)
28.01.2016 12:25:03
selli
hallo alex,
du hast als schlüssel zur sortierung C1 angegeben.
in deiner beispielmappe sind alle spalten C leer.
was soll da auch sortiert werden?
gruß
selli

nochwas
28.01.2016 12:31:04
selli
hallo alex,
die abzuarbeitenden zellen, die ja mit dem makro beschrieben werden sollen in spalte C werden falsch angesprochen.
so sollten diese auch beschrieben werden:

Sub sor(ws As Worksheet)
Dim rng As Range
For Each rng In ws.Range(ws.Cells(1, 1), ws.Cells(Rows.Count, 1).End(xlUp))
Cells(rng.Row, 3) = "f" & Cells(rng.Row, 1)
Cells(rng.Row, 3).Font.ColorIndex = 1
Columns("A:C").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Next rng
ws.Range(ws.Cells(1, 3), ws.Cells(Rows.Count, 3).End(xlUp)).ClearFormats
ws.Range(ws.Cells(1, 3), ws.Cells(Rows.Count, 3).End(xlUp)).Clear
End Sub

gruß
selli

Anzeige
AW: und nochwas
28.01.2016 12:33:33
selli
hallo alex,
das sortieren sollte ausserhalb der schleife erfolgen, damit nicht jedesmal sondern nur einmal sortiert wird:
Sub sor(ws As Worksheet)
Dim rng As Range
For Each rng In ws.Range(ws.Cells(1, 1), ws.Cells(Rows.Count, 1).End(xlUp))
Cells(rng.Row, 3) = "f" & Cells(rng.Row, 1)
Cells(rng.Row, 3).Font.ColorIndex = 1
Next rng
Columns("A:C").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
ws.Range(ws.Cells(1, 3), ws.Cells(Rows.Count, 3).End(xlUp)).ClearFormats
ws.Range(ws.Cells(1, 3), ws.Cells(Rows.Count, 3).End(xlUp)).Clear
End Sub
gruß
selli

Anzeige
AW: Lade eine Beispielmappe hoch! (owT)
28.01.2016 12:35:57
Alex
Hallo Selli,
genau, nach C1 soll sortiert werden, weil Excel ja mit 1.1 - 1.2 - 1.10 Probleme hat zu sortieren.
Daher kopiert mein Code Inhalt A1 in C1 und fügt ein f mit ein: f1.1 - f1.10 - f.1.2 und damit
wird richtig sortiert. Danach wird Spalte C wieder gelöscht.
Habs im Code kommentiert, wo die Spalte C beschrieben wird.

Sub sor(ws As Worksheet)
Dim rng As Range
For Each rng In ws.Range(ws.Cells(1, 1), ws.Cells(Rows.Count, 1).End(xlUp))
rng.Cells(, 3) = "f" & rng.Cells(, 1) ' Hier wird Spalte C beschrieben
rng.Cells(, 3).Font.ColorIndex = 1
Columns("A:C").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Next rng
ws.Range(ws.Cells(1, 3), ws.Cells(Rows.Count, 3).End(xlUp)).ClearFormats
ws.Range(ws.Cells(1, 3), ws.Cells(Rows.Count, 3).End(xlUp)).Clear
End 

Sub 
Gruß Alex
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige