am 15. Juli habe ich hier nach dem Auslesen einer Formatierung aus einer Zelle gefragt. Dieses Format sollte dann für eine bedingte Formatierung verwendet werden. Die Antworten waren wie immer klasse und hilfreich - danke sehr. Jetzt hänge ich noch an einem Ergänzungsproblem - hat jemand eine Lösung?
Beschreibung: in einer "Terminvergabeliste" färben sich die Zellen abhängig vom ersten Buchstaben. Ich definiere z.B. 'A ' (A mit Doppel-Blank) für das Projekt A. Trage ich dann am nächsten Montag von 08:00 Uhr bis 09:00 Uhr ein 'A Meier' ein, färbt sich das Feld in der gewünschten Farbe, die ich dem 'A ' zugewiesen habe. Das 'A ' definiere ich auf einem anderen Blatt in der Beispielzelle A30. Dies erfolgt ganz prima (dank euer Hilfe) mit dem Code (genauso sieht der Code auch für 12 andere Buchstaben aus):
' A30
Selection.FormatConditions.Add Type:=xlTextString, String:=Sheets("Übersicht").Range("A30"), _
TextOperator:=xlBeginsWith
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Bold = Sheets("Übersicht").Range("A30").Font.Bold
.Italic = Sheets("Übersicht").Range("A30").Font.Italic
.Color = Sheets("Übersicht").Range("A30").Font.Color
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = Sheets("Übersicht").Range("A30").Interior.Color
.TintAndShade = 0
End With
Beschreibung 2: Wenn ich nun den ganzen Tag blocken möchte, trage ich das 'A ' in die oberste Zeile des Tages. Mit einem kleinen Schnipsel fülle ich dann sämtliche Stunden des Tages in derselben Farbe ein. Das Indirekt sucht in der Spalte B nach dem richtigen Wochentag und der richtigen Kalenderwoche. Damit sich sichergestellt, dass sich nur der eine Tag einfärbt. Auch dieser Code klappt:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=INDIREKT(E$1&15+$B15*30)=""A """
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = Sheets("Übersicht").Range("A30").Interior.Color
.TintAndShade = 0
End With
Herausforderung: Nun würde ich gerne das (im Beispiel) 'A ' nicht fest verdrahten, sondern den Inhalt der Zelle A30 auslesen und als Variable übergeben. Falls also ein Kollege statt eines 'A ' ein 'X ' einsetzt, dann soll sich halt die Zelle bei einem 'X ' einfärben.
Ich hoffe, mein Anliegen ist einigermaßen verständlich. Ich habe die Variable erfolgreich definiert mit:
Dim A30 As String
A30 = Sheets("Übersicht").Range("A30")
und die Formel dann angepasst: "=INDIREKT(E$1&15+$B15*30)= A30 "
Diese Formel ist jedoch falsch und zeitigt ganz merkwürdige Folgen. Alle möglichen Zellen färben sich ein, ein System habe ich nicht herausgefunden. Hat jemand eine bessere Idee?
Danke und viele derzeit regnerische Grüße
Die Johanna