Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bedingte Formatierung mit Variable mögl.

Bedingte Formatierung mit Variable mögl.
03.08.2021 19:41:48
Die
Hallo in die Runde,
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
grundsätzlich.....
03.08.2021 19:50:17
ralf_b
.. wenn du Variablen nutzt, dann verwende keine Namen, die ein Zellbezug sein könnten. A30 ist so gar kein guter Variablenname.
Baue das um, dann sehen wir weiter.
gruß
rb
AW: Bedingte Formatierung mit Variable mögl.
03.08.2021 19:56:43
Daniel
Hi
Variablen dürfen nicht innerhalb von Anführungszeichen stehen.
tun sie das so wie bei dir, werden sie nicht als Variable erkannt sondern sind ganz normaler Text.
in deinem Fall entspricht der Variablenname mit "A30" einem korrekten Zellbezug, so dass eine gültige Formel entsteht, welche sich bei der ersten (aktiven) Zelle auf A30 bezieht und in den weiteren Zellen entsprechend der Regeln eines relativen Zellbezugs mit verschoben wird.
will man eine Variable in einen Text einfügen, muss man den Text vor der Variable beenden und die Teile mit & verketten:
die Anführungszeichen der Formel dürfen hierbei nicht vergessen werden, auch nicht, dass man diese Doppeln muss (weshalb man dann an dieser Stelle die Anführungszeichen genau zählen muss)

"=INDIREKT(E$1&15+$B15*30)=""" & A30 & """"
(wobei ich einen anderen Namen für die Variable verwenden würde, möglichst einen, der nicht mit was anderem verwechselt werden kann)
Gruß Daniel
Anzeige
AW: Bedingte Formatierung mit Variable mögl.
03.08.2021 19:59:45
Werner
Hallo,
warum der "Umweg" über eine Variable? Schreib doch den Zellbezug direkt in die Formel.

"=INDIREKT(E$1&15+$B15*30)=Übersicht!$A$30"
Und wenn eine Variable, dann als Variablennamen keine Zelladresse nehmen. Ob das jetzt tatsächlich Probleme macht weiß ich nicht, könnte aber sein.

Dim strWert as String
strWert = Worksheets("Übersicht").Range("A30")
'für die Formel dann:
"=INDIREKT(E$1&15+$B15*30)=" & strWert
Gruß Werner
AW: DANKE
08.08.2021 18:10:00
Die

"warum der "Umweg" über eine Variable? Schreib doch den Zellbezug direkt in die Formel."
Hallo,
1. Ich habe verstanden, dass "A30" eine gute Bezeichnung für eine Autobahn, aber eine blöde Bezeichnung für eine Variable ist. Sie war zwar nicht der Fehler, aber trotzdem nicht gut.
2. Fehlerhaft waren diverse fehlende Anführungszeichen.
3. Viel leichter war die Lösung nach dem obigen Hinweis - ich kann es mir auch manchmal kompliziert machen, oje.
Wieder einmal - danke an alle, die mir geholfen haben. Ich freue mich sehr.
Liebe Grüße
Die Johanna
Anzeige
kann wohl zu (owT)
09.08.2021 09:12:05
Pierre

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige