Excel: Kann man eine Zelle automatisch markieren, wenn ein "roter" Text drin steht?

4 Antworten

Die in der AW von Topotek im Link genannte Funktion (DH für den Link!) Zelle.zuordnen hat für die Schriftfarbe eine andere Nummer (als für den Hintergrund), steht i' wo in der Hilfe zur Formel.

ABER: kommt die Schriftfarbe durch eine bedingte Formatierung zustande, geht das nicht, das ist eine völlig andere Eigenschaft. Ist leider auch mit Makros unterschiedlich.

Es ist wahrscheinlich tatsächlich die beste Lösung, wie gfntom vorschlägt, die Feiertage zu ermitteln, wobei ich das aber nicht per Makro machen würde, sondern per Formel: Die Feiertage haben entweder ein festes Datum (1.Jan., 6.Jan(regional), 1.Mai, 15.Aug.(reg), 3.Okt., Weihnachten)

oder eine feste Differenz zu Ostern (von Weiberfastnacht bis Fronleichnam),

und Ostern kann man auch mit Gauss ebenfalls per Formel ermitteln. (müsste ich tief graben, hab ich aber, evtl auch aus dem kommentar von A-Chris zum gfntom-µ ableitbar.

Nur der Buß-und Bettag hat als 3.Mi im November eine etwas kompliziertere Formel, aber machbar (ähnlich auch 1.-4. Adventssonntag).

Bei Bedarf hier nachfragen (und viel Geduld mitbringen).

Fürs Einfärben braucht man dann entweder die bedingte Formatierung oder ein Makro.

Da es dir darum geht, Feiertage anzuzeigen, hier eine Kopie einer Antwort, die ich auf ein ähnliches Thema gegeben habe.

Die Lösung mit der bedingten Formatierung über die Farbe einer anderen Zelle ist nicht gerade elegant. Vielleicht helfen dir mein Code.

Hier die meine selbstgeschriebenen Funktionen für das Osterdatum und die Feiertage. In der Version wird bei =Feiertag(Datum) WAHR zurückgeliefert, wenn es sich um einen österreichischen Feiertag habdelt, ansonstens wird FALSCH zurückgeliefert.
Welche Tage als Feiertage gelten, kann in der If / ElseIf-Konstruktion am Ende der Funktion "Feiertag" angepasst werden.
Function Ostern(J%) As Date
  Dim A%, B%, C%, D%, E%, M%, N%, P%
  A = J Mod 19
  B = J Mod 4
  C = J Mod 7
  M = 24
  N = 5
  D = (19 * A + M) Mod 30
  E = (2 * B + 4 * C + 6 * D + N) Mod 7
  P = 22 + D + E
  If P > 31 Then
    If P = 56 And D = 28 And A > 10 Then
      Ostern = DateSerial(J, 4, 18)
      ElseIf P = 57 Then
        Ostern = DateSerial(J, 4, 19)
      Else
        Ostern = DateSerial(J, 4, P - 31)
      End If
    Else
    Ostern = DateSerial(J, 3, P)
  End If
End Function

Function Feiertag(X) As Date
Dim D%, M%, Y%, O
D = Day(X)
M = Month(X)
Y = Year(X)
O = Ostern(Y)
Feiertag = False
If X = O Or X = O + 1 Or X = O + 39 Or X = O + 50 Or X = O + 60 Then
  Feiertag = True
  ElseIf (M = 1 And (D = 1 Or D = 6)) Or (M = 5 And D = 1) Or (M = 8 And D = 15) Or _
   (M = 10 And D = 26) Or (M = 11 And D = 1) Or (M = 12 And (D = 8 Or D = 25 Or D = 26)) Then Feiertag = True
  End If

   
End Function



augsburgchris  16.03.2018, 11:58

Gauß funktioniert auch ohne VBA:

Jahr in A1.

=RUNDEN((TAG(MINUTE(A1/38)/2+55)&".4."&A1)/7;)*7-6

gfntom  16.03.2018, 12:16
@augsburgchris

DH!

DASS es ohne VBA funktioniert, war mir klar, allerdings nicht in der Kürze.

Auch wenn die Formel nicht für alle Zeiten korrekt arbeitet, so ist sie doch elegant und brauchbar.

Hallo,

was ist denn die Bedingung für rote Schrift? Z.B. bei negativen Zahlen ist die Bedingung klar. Ich schaue gleich mal nach der VBA Codierung - per Makro kann an der Stelle ganz einfach eine Bedingung erstellt werden.

Auch bei nicht negativen Zahlen - z.B. wenn ein Wert (z.B. eine Zielmarge) unterschritten wird.

LG
Henri


HenriOhHenri  16.03.2018, 19:54

Hi, sorry, ich stehe auf dem Schlauch. Meinst du, dass innerhalb einer Zelle zwei verschiedene Farben entstehen sollen?

Schick am besten mal einen Screenshot wenn möglich ...

LG

Pueppi41 
Beitragsersteller
 16.03.2018, 08:25

Es geht um einen Kalender wenn da zum Beispiel rechts in rot ein Feiertag steht dann soll die Zeile rot sein!das Problem ist das rechts auch noch anderer Text steht was keine Feiertage sind deswegen muss es von der Text Farbe zwingend abhängig sein!