Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bedingte Formatierung mit Variablen in Excel


Schritt-für-Schritt-Anleitung

  1. Zelle vorbereiten: Stelle sicher, dass du eine Zelle (z.B. A30) hast, die den Wert enthält, den du für die bedingte Formatierung verwenden möchtest.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  3. Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle Einfügen > Modul.

  4. Code eingeben: Füge den folgenden Code in das Modul ein:

    Sub BedingteFormatierungMitVariable()
       Dim strWert As String
       strWert = Sheets("Übersicht").Range("A30").Value
    
       With Selection.FormatConditions.Add(Type:=xlExpression, Formula1:="=INDIREKT(E$1&15+$B15*30)='" & strWert & "'")
           .Interior.Color = Sheets("Übersicht").Range("A30").Interior.Color
       End With
    End Sub
  5. Zellen auswählen: Wähle die Zellen in deiner Terminvergabeliste aus, die du formatieren möchtest.

  6. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Führe das Makro BedingteFormatierungMitVariable aus.


Häufige Fehler und Lösungen

  • Variablenname: Verwende keinen Namen, der mit einem Zellbezug verwechselt werden könnte. Der Name A30 ist ungeeignet. Wähle stattdessen einen aussagekräftigen Namen wie Projektkennung.

  • Anführungszeichen: Stelle sicher, dass deine Formel die richtigen Anführungszeichen verwendet. Wenn du eine Variable einfügst, musst du den Text und die Variable korrekt mit & verketten.

  • Falsche Farbzuweisung: Überprüfe, ob die Zelle A30 tatsächlich eine gültige Farbe enthält. Wenn nicht, wird möglicherweise eine andere Zelle eingefärbt.


Alternative Methoden

Eine einfachere Methode könnte sein, den Zellbezug direkt in die Formel einzufügen, anstatt mit Variablen zu arbeiten:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=INDIREKT(E$1&15+$B15*30)=Übersicht!$A$30"

Diese Methode vermeidet mögliche Fehler mit Variablen und ist oft einfacher zu verstehen.


Praktische Beispiele

  • Beispiel 1: Wenn du in A30 den Wert A hast und die Zellen in deiner Terminliste entsprechend einfärben möchtest, kannst du den oben beschriebenen VBA-Code verwenden.

  • Beispiel 2: Du kannst auch mehrere Werte in unterschiedlichen Zellen definieren und die Bedingungen anpassen, sodass verschiedene Farben für unterschiedliche Projekte angezeigt werden.


Tipps für Profis

  • Namen für Variablen: Wähle klare, sprechende Namen für Variablen, um Verwirrungen zu vermeiden. Anstelle von A30 nutze beispielsweise Projektname.

  • Verwendung von Konstanten: Wenn du oft dieselben Werte verwendest, definiere sie als Konstanten am Anfang deines Codes. Dies erhöht die Lesbarkeit und Wartbarkeit.

  • Regelmäßige Tests: Teste deinen Code regelmäßig, während du ihn schreibst, um Fehler frühzeitig zu erkennen und zu beheben.


FAQ: Häufige Fragen

1. Warum ist der Variablenname wichtig?
Ein aussagekräftiger Variablenname verhindert Verwirrung und potenzielle Fehler bei der Verwendung von Zellbezügen.

2. Wie kann ich mehrere bedingte Formatierungen gleichzeitig anwenden?
Du kannst mehrere With Selection.FormatConditions.Add-Blöcke in deinem VBA-Code verwenden, um unterschiedliche Bedingungen für verschiedene Werte zu definieren.

3. Was mache ich, wenn die Formatierung nicht funktioniert?
Überprüfe die Anführungszeichen und die Formel auf syntaktische Fehler. Achte auch darauf, dass die Zellen, die du formatieren möchtest, korrekt ausgewählt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige