Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1476to1480
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

Nach Farbe sortieren mit VBA

Nach Farbe sortieren mit VBA
26.02.2016 13:15:36
Oliver
Hallo Zusammen,
habe bei einem größeren VBA Makro nur noch ein Problem, bei dem ich nicht weiterkomme. Vielleicht kann mir hier jemand weiterhelfen ?!
Ich habe in einer Tabelle einen Bereich markiert und möchte nur diesen Bereich nach 2 Kriterien sortieren:
1. Spalte E nach Werten, aufsteigend
2. Spalte B nach Farbe, grau oben
Hatte anfänglich beides nach Wert sortiert mit folgendem Befehl:
Selection.Sort Key1:=Selection.Cells(1, 5), order1:=xlAscending, Key2:=Selection.Cells(1, 1), order1:=xlAscending
Leider finde ich nirgends die entsprechende Syntax um nach Farbe zu sortieren.
Der Makro-Rekorder bringt mich hier nicht weiter, da er sich auf den absoluten Zellbereich bezieht. Dieser kann aber unterschiedlich sein.
Für einen Tip wäre ich sehr dankbar.
Gruß Oliver

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

Betreff
Datum
Anwender
Anzeige
AW: Nach Farbe sortieren mit VBA
26.02.2016 13:43:09
Michael
Hi Olli,
kein Wunder, daß Du die "Syntax" nicht findest: die gibt es nämlich nicht.
Ich würde eine Hilfsspalte anlegen und aus der Farbe abgeleitete Werte (in der Reihenfolge, wie Du sie eben haben willst) reinschreiben.
Abgesehen davon: hast Du die Zellen händisch gefärbt oder mit bedingter Formatierung?
So oder so stehen Dir ja die Formeln zur Verfügung, mit der Du die Färbung vorgenommen hast...
Schöne Grüße,
Michael

AW: Nach Farbe sortieren mit VBA
26.02.2016 13:48:17
Oliver
Hallo Michael,
okay, dann habe ich mich wohl etwas verrannt !
Die Zellen wurden zuvor auch mit einem VBA Code eingefärbt.
Aber mit welchem Befehl kann ich mir den Wert in eine Zelle schreiben ?
Ich könnte jetzt natürlich wieder ewig danach googeln, aber vielleicht kannst
du mir ja schneller auf die Sprünge helfen !
Im Voraus vielen Dank
Oli

Anzeige
AW: Nach Farbe sortieren mit VBA
26.02.2016 14:52:46
Oliver
Habe mittlerweile rausgefunden wie ich die Farbe auslese.
Sub Farbe()
' Liest in den Zellen B1 bis B10 die Farnummern aus
' und schreibt sie in die Zellen C1 bis C10
For r = 1 To 10                                    ' Beginn der For To Next Schleife
Cells(r, 3) = Cells(r, 2).Interior.ColorIndex   ' Hintergrundfarbe auslesen und schreiben
Next r                                              ' Ende der For To Next Schleife
End 

Sub                                             ' Ende des Makros
Nun habe ich noch das Problem, daß ich die Funktion nicht absolut,
sondern nur in allen Zeilen meines markierten Bereichs ausführen möchte.
Damit wäre ich kurz vorm Ziel.
Bitte nochmal um Hilfestellung.
Danke Gruß Oliver

Anzeige
hat sich wohl überschnitten
26.02.2016 15:00:10
Michael
Hi Oli,
übrigens hast Du in Deinem 1. Post einen "Zählfehler": offensichtlich markierst Du die Spalten A bis E, aber wenn Du nach Spalte E und B sortieren willst, darf es bei B nicht cells(1,1) heißen.
Um die Farbwerte in C zu schreiben, mußt Du "nur" die Konstruktion mit Offset/Replace anpassen.
Schöne Grüße,
Michael

AW: hat sich wohl überschnitten
26.02.2016 15:24:59
Oliver
Hallo nochmal,
Irgendwie bin ich zu blöd dafür........
Nein wie in meinem ersten Post geschickt markiere ich eigentlich alle Spalten
aber immer einen unterschiedlichen Bereich von Zeilen.
Mit dem Code von dir bekomme ich ein Problem mit der Resize Funktion.
Ich habe mal eine kleine Bsp.Tabelle angehängt,
in der ein Bereich markiert ist. Aber wie gesagt, variiert der.
Wenn ich die fehlende VBA-SUb durch die im Bild gezeigte Sortierung ersetze,
funktioniert der Rest meines Makro´s.
Vielleicht habe ich das ganze auch zu schlecht erklärt, sorry.
https://www.herber.de/bbs/user/103909.xls
Userbild
Danke für deine Mühe
Gruß Oli

Anzeige
AW: hat sich wohl überschnitten
26.02.2016 15:51:35
Michael
Hi Oli,
das weiß ich doch nicht, daß Du komplette Zeilen markierst...
Kannst ja nix dafür, aber man sollte einfach nix ohne Datei machen!
So, probier mal das:
Option Explicit
Sub machen()
Dim c As Range, hilf As Range, sel As Range
Set sel = Selection
Set hilf = Intersect(sel, Columns(3))
For Each c In hilf
c.Value = 10 ^ 8 - c.Offset(0, -1).Interior.Color
Next
sel.Sort Key1:=sel.Cells(1, 5), _
order1:=xlAscending, _
Key2:=sel.Cells(1, 3), _
order1:=xlAscending
End Sub
Aber Dir muß natürlich klar sein, daß die Spalte C dabei glattgebügelt wird. Besser wäre eine Spalte "rechts außen".
Außerdem ist das Ding mit komplett markierten Zeilen ziemlich lahm - aber ich habe jetzt keine Zeit mehr, das zu optimieren.
Schöne Grüße,
Michael

Anzeige
AW: hat sich wohl überschnitten
26.02.2016 15:58:36
Oliver
Okay, danke für alles und schönes WE.
Probiere noch etwas herum und gebe dann Feedback.
Gruß Oli

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige