Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Bedingte Formatierung mit VBA
#21
Anbei die angepasste Datei!


Angehängte Dateien
.xlsm   Urlaubskalender_2025.xlsm (Größe: 71,83 KB / Downloads: 3)
Antworten Top
#22
(09.05.2024, 11:38)Andyle schrieb: Anbei die angepasste Datei!

Ich habe folgende Formatierungen für die Ferien:

von bis
=WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;"<="&G6;Ferien_bis;">="&G6))

Einzeltage
=WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;">="&G6;Ferien_von;"<="&G6))

angewendet auf
=$G$6:$L$12;$N$6:$S$12;$U$6:$Z$12;$AB$6:$AG$12;$G$16:$L$22;$N$16:$S$22;$U$16:$Z$22;$AB$16:$AG$22;$G$26:$L$32;$U$26:$Z$32;$AB$26:$AG$32;$N$26:$S$32


Code:
If Target.Interior.ColorIndex <> 3 And aktive_zelle <> "" And Range("G37") = "" Then

   'Löscht Hintergrund wenn Ferien
   .FormatConditions.Delete
   'Ende

   .Interior.ColorIndex = 3
   Else
   .Interior.ColorIndex = 0


'Hier müssten die Bedingten Formatierungen verknüpft werden.


   End If

End If
Nur komme ich irgendwie nicht auf ein Codeergebnis. Huh


Angehängte Dateien
.xlsm   Urlaubskalender_2025.xlsm (Größe: 72,96 KB / Downloads: 6)
Antworten Top
#23
Wie kann ich die Formel hier als Bedingung einfügen?

=WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;"<="&G6;Ferien_bis;">="&G6))

Code:
With Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32").FormatConditions.Add(xlExpression, _
Formula1:="   Hier die Bedingung!      ")
   .Interior.Color = vbBlue 'vbYellow
End With
Danke
Antworten Top
#24
Hallöchen,

mal oT - hier wäre z.B. einer wo man sich das Eine oder Andere zur Markierung von Ferien usw. anschauen kann.

Kalender-Ferien-und-Feiertage
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#25
Die Ferienmarkierung funzt ja!

Nur wollte ich es als VBA in den Doppelklick einbauen.

Grund:
Lösche ich den Roten Hintergrund (Urlaub) per Doppelklick wieder soll er die Gelbe markierung wieder setzen, wenn es ein Ferientag ist.
Antworten Top
#26
(10.05.2024, 18:05)Andyle schrieb: Die Ferienmarkierung funzt ja!

Nur wollte ich es als VBA in den Doppelklick einbauen.

Grund:
Lösche ich den Roten Hintergrund (Urlaub) per Doppelklick wieder soll er die Gelbe markierung wieder setzen, wenn es ein Ferientag ist.

Hab noch einen angepassten code gefunden. Nur macht er nicht dass, wass er soll! Huh 

Code:
Sub BedingteFormatierungBeispiel()

'Bereich definieren
Dim MeinBereich As Range
Set MeinBereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32")

'Vorhandene bedingte Formatierung aus dem Bereich löschen


MeinBereich.FormatConditions.Delete


'Bedingte Formatierung anwenden
MeinBereich.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=ZÄHLENWENN(Ferien_von;" >= "&G6)", Formula2:="=ZÄHLENWENN(Ferien_bis;" <= "&G6)"
MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub
er sollte eigendlich so aussehen:
Code:
Sub BedingteFormatierungBeispiel()
'Bereich definieren
Dim MeinBereich As Range
Set MeinBereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32")
'Vorhandene bedingte Formatierung aus dem Bereich löschen

----------------------------------
Nur alle gelben Zellen löschen!
MeinBereich.FormatConditions.Delete
-------------------------------------

'Bedingte Formatierung anwenden
MeinBereich.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=ZÄHLENWENN(Ferien_von;" >= "&G6)", Formula2:="=ZÄHLENWENN(Ferien_bis;" <= "&G6)"

---------------------------------------------------------------------------------------------------------------
Formula1 soll folgende Formel stehen: =WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;"<="&G6;Ferien_bis;">="&G6))
---------------------------------------------------------------------------------------------------------------

MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
'alle Zellen sollen nach Formula1 gelb markiert werden!
End Sub

(11.05.2024, 10:56)Andyle schrieb: Hab noch einen angepassten code gefunden. Nur macht er nicht dass, wass er soll! Huh 

Code:
Sub BedingteFormatierungBeispiel()

'Bereich definieren
Dim MeinBereich As Range
Set MeinBereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32")

'Vorhandene bedingte Formatierung aus dem Bereich löschen


MeinBereich.FormatConditions.Delete


'Bedingte Formatierung anwenden
MeinBereich.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=ZÄHLENWENN(Ferien_von;" >= "&G6)", Formula2:="=ZÄHLENWENN(Ferien_bis;" <= "&G6)"
MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub
er sollte eigendlich so aussehen:
Code:
Sub BedingteFormatierungBeispiel()
'Bereich definieren
Dim MeinBereich As Range
Set MeinBereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32")

'Vorhandene bedingte Formatierung aus dem Bereich löschen
----------------------------------
Nur alle gelben Zellen löschen!
MeinBereich.FormatConditions.Delete
-------------------------------------

'Bedingte Formatierung anwenden
MeinBereich.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=ZÄHLENWENN(Ferien_von;" >= "&G6)", Formula2:="=ZÄHLENWENN(Ferien_bis;" <= "&G6)"

---------------------------------------------------------------------------------------------------------------
Formula1 soll folgende Formel stehen: =WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;"<="&G6;Ferien_bis;">="&G6))
---------------------------------------------------------------------------------------------------------------

MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
'alle Zellen sollen nach Formula1 gelb markiert werden!
End Sub
Antworten Top
#27
Hallo

Ich suche nach einer Möglichkeit bedingte Formatierungen mit VBA umzusetzen.

Ich habe folgende zweiFormatierungen mut gelben Hintergrund:

=WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;">="&G6;Ferien_von;"<="&G6))

=WENN(UND($AE$38="Ja";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;"<="&G6;Ferien_bis;">="&G6))


Diese zwei Formatierungen sollen per VBA gelöscht werden und per VBA neu geschrieben werden.

Folgenden Code habe ich, der allerdings nicht wirklich funktioniert.
Code:
Sub BedingteFormatierungBeispiel()

'Bereich definieren
Dim MeinBereich As Range
Set MeinBereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32")

'Vorhandene bedingte Formatierung aus dem Bereich löschen

MeinBereich.FormatConditions.Delete

'Bedingte Formatierung anwenden    Between
MeinBereich.FormatConditions.Add Type:=xlExpression, _
        Formula1:="=ZÄHLENWENN(Ferien_von;" >= "&G6)", Formula2:="=ZÄHLENWENN(Ferien_bis;" <= "&G6)"
MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub
Antworten Top
#28
Anbei die Datei. Feiertage, Brückentage, Schulferien


Angehängte Dateien
.xlsm   Urlaubskalender_2025.xlsm (Größe: 76,86 KB / Downloads: 3)
Antworten Top
#29
Hallöchen,

hier was funktionierendes für eine Bedingung.
Ich habe die mal in eine Variable genommen, muss aber nicht sein. Für die zweite Formel könntest Du eine zweite Variable nehmen oder DU bildest ein Array.
Knackpunkt ist die deutsche Syntax im deutschen Excel. Willst Du es international, müsstest Du die englische Syntax verwenden und in die landesspezifische "übersetzen" (z.B. englische Formel mit Formula in eine Zelle packen und mit FormulaLocal zurückholen).
 
Wenn Du alle Bedingungen löschst und wieder benötigst, müsstest Du auch alle neu erstellen.


Code:
Sub BedingteFormatierungBeispiel()

'Bereich definieren
Dim MeinBereich As Range
Dim strFormula As String

Set MeinBereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32")

strFormula = "=WENN(UND($AE$37=""Ja"";ZÄHLENWENN(Feiertage;G6)<>1);ZÄHLENWENNS(Ferien_von;""<=""&G6;Ferien_bis;"">=""&G6))"
MeinBereich.FormatConditions.Delete

'Bedingte Formatierung anwenden    Between
MeinBereich.FormatConditions.Add Type:=xlExpression, _
        Formula1:=strFormula
MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub

PS: Ich habe die beiden Themen zusammengefügt
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#30
Erstmal vielen Dank!

Stimmt, wenn ich schreibe, löscht er alle Formatierungen, da der Bereich der Hauptbereich ist.
Code:
MeinBereich.FormatConditions.Delete

Nur komme ich jetzt nicht weiter, wie ich zur Hintergrundfarbe auch die Schriftfarbe im Code definiere.

Code:
'Ferien
MeinBereich.FormatConditions.Add Type:=xlExpression, _
        Formula1:=strFormula
MeinBereich.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
MeinBereichx.FormatConditions.Add Type:=xlExpression, _
        Formula1:=strFormulax
MeinBereichx.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
'Samstag
MeinBereich3.FormatConditions.Add Type:=xlExpression, _
        Formula1:=strFormula3
MeinBereich3.FormatConditions(1).Font.Color = RGB(0, 0, 255) 'Richtig?
'Sonntag
MeinBereich4.FormatConditions.Add Type:=xlExpression, _
        Formula1:=strFormula4
MeinBereich4.FormatConditions(1).Font.Color = RGB(255, 0, 0) 'Richtig?
'Feiertage
MeinBereich5.FormatConditions.Add Type:=xlExpression, _
        Formula1:=strFormula5
MeinBereich5.FormatConditions(1).Interior.Color = RGB(255, 204, 153) '+Schriftfarbe Rot ????
Danke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste