AW: mit eingen VERWEIS() möglich ...
09.03.2022 20:43:00
Yal
"die doppelten Stundennamen lassen sich mit bed. Formatierung viel einfacher nicht darstellen":
_ Es wird in den Zellen B2:B5 4 mal "4h NABU" geschrieben.
_ Hintergrundfarbe wird mit bed.For. "=Rechts(B2;4)="NABU" auf Blau gesetzt
_ Schriftfarbe wird mit "=UND(B2=B1";Rechts(B2;4)="NABU")" auf dieselben Blau gesetzt und damit ist der Text nicht sichtbar.
Für jeden Eintrag müssen 2 bed.For. angelegt werden. Dafür aber einfachere.
Nach dem Motto der faule Programmierer "mache nicht selber, was der Computer für dich machen kann": die Bedingte Formatierung per Makro setzen:
Sub FC_Setzen()
Dim P
Dim FC As FormatCondition
With Range("B2:F7")
.FormatConditions.Delete
For Each P In Array(Array("NABU", 15123099), Array("BNE", 49407), Array("Klima", 5296274), Array("xyz", 16777215))
Set FC = .FormatConditions.Add(Type:=xlExpression, Formula1:="=RECHTS(B2;" & Len(P(0)) & ")=""" & P(0) & """")
FC.Interior.Color = P(1)
FC.StopIfTrue = False
Set FC = .FormatConditions.Add(Type:=xlExpression, Formula1:="=UND(B1=B2;RECHTS(B2;" & Len(P(0)) & ")=""" & P(0) & """)")
FC.Font.Color = P(1)
FC.StopIfTrue = False
Next
End With
End Sub
Dann ist nur noch die Frage an dem "faulen" Programmierer: gibt es auch einen Trick, um die aktuelle Farbegebung, diese komischen Zahlen, zu lesen?
Na klar:
Sub Farbe_lesen()
Dim Z, D, s
Set D = CreateObject("Scripting.Dictionary")
On Error Resume Next
For Each Z In Worksheets(1).Range("B2:C7")
If Z.Value "" Then D.Add Mid(Z.Value, InStrRev(Z.Value, " ") + 1), Z.Interior.Color
Next
For Each Z In D.Keys
s = s & ",Array(""" & Z & """, " & D(Z) & ")"
Next
Debug.Print "Array(" & Mid(s, 2) & ")"
End Sub
(funkioniert aber nur, wenn die Farbe tatsächlich gesetzt und nicht per bed.For. "nur angezeigt" werden)
VG
Yal