Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Bedingte Formatierung aus Tabellenblatt in Makro übernehmen

Forumthread: Bedingte Formatierung aus Tabellenblatt in Makro übernehmen

Bedingte Formatierung aus Tabellenblatt in Makro übernehmen
27.03.2025 16:46:19
Ina.Laska
Hallo,

ich habe mir eine Statusübersicht für Projekte gebastelt in Form eines Gantt-Charts, die aufgrund von bedingten Formatierungen die einzelnen Phasen in einem dynamischen Kalender zeigt. Wenn man neue Daten eingibt, muss ein Makro gestartet werde, dass die gewünschte bedingte Formatierung herstellt. Ohne das Makro müsste bei jedem Einfügen einer neuen Zeile die bedingte Formatierung erst angepasst werden.

Wenn ich die Namen der Projekte ändere oder auch die Farbe im Gantt-Chart muss ich dazu jedes Mal das Makro anpassen. Um das Ganze zu vereinfachen, würde ich gern die Formatierung in einer zweiten Tabelle festlegen.

Ich habe zum besseren Verständnis eine Beispieldatei angefügt: https://www.herber.de/bbs/user/176467.xlsm

So stelle ich mir das Ganze in der Theorie vor:

Phase 1 soll jetzt Phase A heißen und nicht mehr rot sondern rosa sein. Dazu möchte ich Phase 1 in Zelle A2 mit Phase A überschreiben und die Farbe in Spalte B2 in die gewünschte Farbe ändern. Um die neue Farbe in das Makro übernehmen zu können, müsste dazu zunächst den Farbcode ausgelesen werden, der dann als Variable ins Makro eingebaut wird.

Hat dafür jemand eine Lösung?

Der Code ist ziemlich lang, daher habe ich mal einen Teil rauskopiert, der hier relevant ist:

 Range("H9:RD999").Select

Range("H9:RD999").Activate
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=UND(JAHR(H$7)+MONAT(H$7)/100>=JAHR($E9)+MONAT($E9)/100;JAHR(H$7)+MONAT(H$7)/100=JAHR($F9)+MONAT($F9)/100;$D9=Farben!$A$5)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False


Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung aus Tabellenblatt in Makro übernehmen
28.03.2025 02:34:56
ralf_b
https://www.herber.de/bbs/user/176473.xlsm

schau mal ob du damit zurechtkommst. Ich habe dir im Change_event des Blattes einen Aufruf des Makros für die bedingte Formatierung gesetzt. Wenn also in Spalte E oder F ein Datum eingetragen wird und die Phase eingetragen ist, dann wird die bedingte Formatierung neu geschrieben. Die bedingte Formatierung habe ich auf die Tabelle mit den Farben ausgerichtet. Zusätzlich habe ich die Kalenderwoche anders erzeugt im Blatt. Damit fällt eine Formatierung weg. Der Bereich für die Gültigkeit wird je nachdem neu ermittelt.
Anzeige
AW: Bedingte Formatierung aus Tabellenblatt in Makro übernehmen
28.03.2025 13:53:41
Ina.Laska
Hallo Ralf, das hilft mir schon sehr viel weiter. der Code ist um einiges übersichtlicher (auch wenn ich den noch nicht komplett verstehe), die neue Anpassung mit den Kalenderwochen ist auch mega gut.

Ich hätte gern, dass man die Farben nicht über die Nummer auswählt, sondern wirklich nur die Farbe auswählt und die Nummer sich daraus generiert. Ich habe das jetzt so gelöst, dass ich in einem anderen Tabellenblatt eine Farbskala definiert habe und auf die Fabnummer per SVerweis verweise und die ausgewählte Farbe dann über die bedingte Formatierung angezeigt wird. So hübsch wie du bekomme ich die Codierung aber nicht hin mit der bedingten Formatierung. Kannst du da vielleicht noch anders gestalten, dass wenn ich die Farbskala anpasse auch die das Ganttchart gleich angepasst wird?

Damit das besser nachvollziehbar ist, habe ich hier die neue Datei: https://www.herber.de/bbs/user/176475.xlsm

Anzeige
AW: Bedingte Formatierung aus Tabellenblatt in Makro übernehmen
28.03.2025 14:30:33
daniel
Hi
probier mal dieses Makro:

Sub Bedingte_Formatierung()

Dim Zelle As Range
With Sheets("Gant_Verfahren")
With .Range("H9", .Cells.SpecialCells(xlCellTypeLastCell))
.FormatConditions.Delete 'alte Bedingte Formate löschen
For Each Zelle In Sheets("Farben").Cells(1, 1).CurrentRegion.Columns(1).Cells
If Zelle.Row > 1 Then
If Zelle.Value > "" Then 'Überschrift überspringen
With .FormatConditions.Add(Type:=xlExpression, Formula1:="=" & Zelle.Offset(0, 5))
.Interior.Color = Zelle.Offset(0, 1).DisplayFormat.Interior.Color
.Interior.PatternColorIndex = Zelle.Offset(0, 1).DisplayFormat.Interior.PatternColorIndex
.Interior.TintAndShade = Zelle.Offset(0, 1).DisplayFormat.Interior.TintAndShade

End With
End If
End If
Next
End With
End With
End Sub


dieses löscht zuerst die bestehenden bedingten Formate.
dann läuft es mit einer Schleife über die Zellen des Sheets "Farben" und erzeugt aus dessen angaben die Bedingte Formatierung.
das Format der Zelle wird dabei direkt aus der Zelle in der Spalte B ausgelesen.

Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen