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

Sortieren mit bedingten Formatierungen

Sortieren mit bedingten Formatierungen
22.02.2017 19:28:27
Andreas
Hallo,
Ich habe mal wieder ein Problem.
Ich habe einen Kalender für ein Dienstplan erstellt. Die Samstage, Sonn- und Feiertage werden durch bedingte Formatierungen farblich gekennzeichnet. Die Dienste werden über VBA mit festen Farbformatierungen eingetragen. Dabei werden die bedingten Formatierungen wieder gelöscht, weil sonst die festen an Samstagen Sonn- und Feiertagen durch die bedingten nicht angezeit werden. Wird ein Dienst wieder (per VBA) gelöcht, wird die bedingte Formatierung wieder auf die Zelle kopiert.
Bis hier funtioniert alles einwandfrei.
Wenn ich aber die Tabelle sortiere (auch über VBA) entsteht in den Formatierungen Chaos, da die bedingten Formatierungen nicht mitsortiert werden sondern ihre Position behalten.
Wie können die bedingten Frmatierungen mit sortiert werden?
Hier einer meiner Sortiercodes:

Private Sub Absteigend()
Dim Zeilenanzahl As Integer
Worksheets("Dienstplan").Unprotect
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row 'letzte Zeile in Spalte B suchen
If ActiveSheet.Name  "Dienstplan" Then Exit Sub
If ActiveCell.Column > 1 And ActiveCell.Column  5 Then
ActiveWorkbook.Worksheets("Dienstplan").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dienstplan").Sort.SortFields.Add Key:=ActiveCell _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dienstplan").Sort
.SetRange Range(Cells(9, 2), Cells(Zeilenanzahl, 764))       '("B9:ACJ83")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Worksheets("Dienstplan").Protect
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Sortieren mit bedingten Formatierungen
22.02.2017 20:28:22
MB12
Hallo Andreas,
ich erfasse bei kritischen Dateienn, die sich oft ändern, alle bedingten Formatierungen per Makro, das ich am Ende des anderen Codes ablaufen lasse - sprich, zuerst alle bedingten Formatierungen löschen, dann neu anlegen.
Gruß, Margarete
AW: Sortieren mit bedingten Formatierungen
22.02.2017 20:38:07
Andreas
Hallo Margarete,
danke für die Antwort.
So was ähnliches habe ich mir auch schon überlegt. Nur muss ich dann auch bei allen Zellen in denen ein Dienst eingetragen ist auch die bedingte Formatierung wieder löschen, da sonst die eigentliche Dienstfarbe (Zellenformatierung) nicht gezeitg wird. Das heist bei jeden Sortiervorgang muß die komlette Tabelle neu formatiert werden, was den Sortiervorgang verlangsamt.
Gib es denn keine Möglichkeit die bedingten Formatierungen mitsortieren zu lassen?
Gruß Andreas
Anzeige
AW: ich kenne keine,...
23.02.2017 16:39:33
MB12
.., Andreas, aber wenn du per VBA sortierst, dann passe wie beschrieben deinen Code an - vielleicht hilft dir hier ja jemand. Nach deiner Beschreibung musst du ja eh einen Teil der bedFor bei Änderungen löschen.
Ich stelle mal den Beitrag auf offen.
Gruß, Margarete
Offen! Das hast du nicht getan, MB! ;-) owT
23.02.2017 20:29:18
Luc:-?
:-?
AW: Offen! Danke Luc :-) owT
24.02.2017 16:44:06
MB12
.
AW: Offen! Danke Luc :-) owT
24.02.2017 16:44:24
MB12
.
AW: Sortieren mit bedingten Formatierungen
25.02.2017 22:45:40
Piet
Hallo Andreas,
hallo Margarete
ich denke ich habe jetzt verstanden Warum sich die bedingte Formatierung nicht sortieren laesst!
Das Thema ist für mich Neuland, ich habe damit nie gearbeitet, kenne aber Excel Besonderheiten!
Beim Einrichten der Bedingten Formatierung setzt Excel üblicherweise die Zellangabe in $$ Zeichen.
Dabei handelt es sich um Absolute Bezüge, nicht um Relative Adressen. Absout ist m.W. nicht verschiebbar.
Wenn das stimmt ist eine Lösung die Formatierung mit dem Makro Recorder aufzeichnen, im aufgezeichneten
Makro mit Replace alle $$ zu löschen, und dann das Makro mit jetzt Relativen Adressen noch mal auszuführen!
Probiert es bitte einmal in einer Testdatei aus. Aber bitte nicht im Original! Ich weiss ja nicht ob es klappt?
mfg Piet
Anzeige
AW: Sortieren mit bedingten Formatierungen
28.02.2017 19:56:29
MB12
Hallo Andreas und Piet,
es ist richtig, dass Excel absolute Bezüge setzt, wenn man mit den voreingestellten Regeln arbeitet. Aber auch hier kann man über ""Regeln verwalten"" zumindest teilweise die dahinter stehenden Formeln bearbeiten. Die kann man erkennen, wenn man das Anlegen der bedForm per Makrorecorder aufzeichnet (siehe Code unten).
So gesehen ist dein Ansatz vermutlich korrekt, Piet: Also $-Zeichen bei den Zeilen raus.
Ich definiere bei aufwendigeren Dateien immer die Formeln manuell. Nachher nochmal auf "verwalten" gehen, damit man eventuelle Excel-Automatismen überlistet.
Trotzdem arbeite ich mit Makros, denn wenn man z.B. manuell etwas verschiebt und nicht den gesamten Bereich erwischt, erstellt Excel automatisch neue Regeln, die aber oft nicht funktionieren.
Hier mal ein gekürztes Makro mit zwei bed.For., das ich in bestimmten Abständen durchlaufen lasse:
Sub Main_1()
Dim varArray As Variant
Dim strSheet As String
Dim lngTMP As Long
'On Error GoTo Fin
Application.ScreenUpdating = False
strSheet = ThisWorkbook.ActiveSheet.Name
varArray = Array("Fertigung", "Techn.Montage")
For lngTMP = LBound(varArray) To UBound(varArray)
With ThisWorkbook.Worksheets(varArray(lngTMP))
If .FilterMode Then .ShowAllData
.Range("B6:B49").Font.Size = 14
'************erst mal alle alten bedingten Formatierungen löschen:
.Cells.FormatConditions.Delete
'************danach neu definieren:
With .Range("A6:H49")
.FormatConditions.Add Type:=xlExpression, Formula1:="=$D6=""x"""
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.ColorIndex = 19
End With
.FormatConditions(1).StopIfTrue = False
End With
With .Range("A6:L49")
.FormatConditions.Add Type:=xlExpression, Formula1:="=$M6=""na"""
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.ColorIndex = 15
End With
.FormatConditions(1).StopIfTrue = False
End With
Application.Goto .Range("A1"), True
End With
Next lngTMP
End Sub
Gruß, Margarete
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige