Bedingte Formatierung erweitern

Hi VBA Spetialisten,

ich stehe vor einem kleines Problem, das da währe:
Ich habe sogut wie keine Ahnung von VBA :wink:

Aber da könnt ihr mir bestimmt weiter helfen.

Es geht um die Erweiterung der Bedingten Formatierung von 3 auf 4 verschiedene Werte.

Dafür habe ich schon einige Lösungsvorschläge im Netz gefunden… Mein Problem ist jedoch das einer dieser Werte Variabel ist.

Beispiel:
Zellwert = „fertig“ (grün)
Zellwert = „nicht fertig“ (rot)
Zellwert „fertig“ oder „nicht fertig“ (Gelb)
Zellwert = „“ (Keine Einfärbung)

Die Zellen werden mithilfe einer Wenn - Funktion aus einem anderen Sheet gefüllt und enthalten einen Bearbeitungsstatus.

In Spalte 1 steht der Status (fertig oder nicht fertig)
In Spalte 2 stehet eine Erklärung/Anmerkung.

Wenn in Spalte 2 nichts steht, dann gibt mir die Wenn - Funktion die Spalte 1 zurück.

Da diese Erklärung variabel ist, stehe ich vor einem Problem.

Leider ist es nicht möglich mit dem Standart Assistenten blattübergreifend zu agieren, sonnst währe die Sache simpel.

Ich könnte mir eine Lösung über ein VBA Makro vorstellen, evtl. einfach via Wildcards
z.B. sowas wie:

Bedingung 1: Zellwert [" % " Wildcard für ein Belibiges Zeichen nicht leer]&[" * " Wildcard für belibige Anzahl des voherigen] (Gelb)
Bedingung 2: Zellwert = „fertig“ (grün)
Bedingung 3: Zellwert = „nicht fertig“ (rot)
Bedingung 4: Zellwert = „“ (Keine Einfärbung)

Ich weiß allerdings nicht wie ich das in VBA umsetzten könnte und hier brauche ich eure Hilfe.

Sollte es eine einfachere Lösung geben, dann auch immer her damit :wink: Ich bin für jeden Tipp dankbar.

Besten Gruß
Lucas

Hallo Lucas,

die gute Nachricht: Das geht auch ohne VBA.

Du fügst eine Spalte 3 ein, die anhand von Wenn-Funktionen den Status festlegt (zum Beispiel 1 = Grün, 2 = Rot, 3 = Gelb). Die Wenn-Funktion kannst Du ja nahezu beliebig komplex und auch Blatt-Übergreifend gestalten.

Dann fügst Du in Spalte ein die bedingte Formatierung ein, die sich auf den Wert der Spalte 3 bezieht.

Also: in A1 steht dann sinngemäß „Wenn c1 = 2 dann färbe Rot“.

So müsste es gehen und auch mit 3 Bedingungen auskommen, oder?

Viel Erfolg.

Ein Prima Beispiel für „Vor lauter Bäumen den Walt nicht sehen“

Danke Dubidu13 für die schnelle Antwort und Lösung :wink:

Besten Gruß
Lucas

Hallo Lucas,
so ganz habe ich das Problem nicht verstanden, auch nicht, wozu man da VBA brauchen sollte. Eine Wenn-Bedingung hat das Format =Wenn(;then";„else“). „Then“ und „Else“ können wieder Bedingungen sein, das lässt sich schachteln, also z.B. =Wenn(„Fertig“;„Grün“;Wenn(„Unfertig“;„Rot“;Wenn(„Leer“;„…“;…))).
Bin mir nicht ganz sicher, ob genügend schließende Klammern da sind und ob vor das geschachtelte WENN nicht auch ein = gehört, probiere es aus.
Viel Erfolg
Rainer

Hallo Lucas

Ein Tipp, den ich dir geben kann: du kannst eine der 4 Einfärbungen mit der Standard Farbe definieren. Dann brauchst du 1 Bedingte Formatierung weniger.

Bei deinen möglichen Werten komm ich nicht ganz nach. Vor allem das mit dem Gelb

Gruss
Marc

Grüezi Lucas

Zellwert = „fertig“ (grün)
Zellwert = „nicht fertig“ (rot)
Zellwert „fertig“ oder „nicht fertig“ (Gelb)
Zellwert = „“ (Keine Einfärbung)

Dafür benötigst Du nur 3 Bedingte Formatierungen:
Je eine für die drei Fälle in denen etwas in der Zelle steht. Die 4.Bedingung ist dann das Standard-Format der Zelle also für den Fall, dass sie leer ist.

In Spalte 1 steht der Status (fertig oder nicht fertig)
In Spalte 2 stehet eine Erklärung/Anmerkung.
Wenn in Spalte 2 nichts steht, dann gibt mir die Wenn :-Funktion die Spalte 1 zurück.

Da diese Erklärung variabel ist, stehe ich vor einem Problem.

Leider ist es nicht möglich mit dem Standart Assistenten
blattübergreifend zu agieren, sonnst währe die Sache simpel.

Ja, doch du kannst dich auf die Zelle daneben beziehen.

Bedingung 1: Zellwert [" % " Wildcard für ein Belibiges
Zeichen nicht leer]&[" * " Wildcard für belibige Anzahl des
voherigen] (Gelb)

Diese Erklärung kann ich nicht interpretieren - es reicht doch, wenn Du prüfst ob überhaupt etwas in der Zelle steht.

Bedingung 2: Zellwert = „fertig“ (grün)
Bedingung 3: Zellwert = „nicht fertig“ (rot)
Bedingung 4: Zellwert = „“ (Keine Einfärbung)

Die Reihenfolge der Bedingungen ist entscheidend, Du solltest sie wie folgt anordnen:

Bedingung 1: Zellwert = „fertig“ (grün)
Bedingung 2: Zellwert = „nicht fertig“ (rot)
Bedingung 3: Formel ist: =LÄNGE(A1)>0

…oder eben immer bezogen auf die Spalte daneben.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Lucas,

dazu brauchst Du kein VBA.
Nutze die normale „Bedingte Formatierung“ und mache folgendes:

1.Bedingung: Zellwert ist gleich „fertig“ dann (Format Muster - grün)
2.Bedingung: Zellwert ist gleich „nicht fertig“ dann (Format Muster - rot)
3.Bedingung: Formel ist und dann trägst du diese Formel ein: =WENN(UND(ODER(F9"fertig";F9"nicht fertig");LÄNGE(F9)>0);WAHR) dann (Format Muster - gelb)

Das sollte klappen.

Gruß,
Jochen

Hallo LucasM,

leider kann ich hier keine Lösung geben. Dafür reichen meine bescheidenen VBA-Kenntnisse leider nicht aus.

Gruß Hugo

na, da sind ja schon lauter antworten, denen ich nix zuzufügen habe. viel erfolg!

Hallo Lucas,

wenn ich das richtig verstehe, ist es tatsächlich einfacher zu haben:

Angenommen, „fertig“ usw, steht in Spalte A, dann gibst du unter Bedingter Formatierung folgendes ein:

Bedingung 1: (Formel) =$A1=„Fertig“
Bedingung 2: (Formel) =$A1=„nicht fertig“
Bedingung 3: (Formel)
=UND($A1"Fertig"; $a1"nicht fertig"; $a1"")

Dadurch, dass der 1 kein Dollarzeichen ($) vorangestellt ist, gilt sie dann für alle vorab markierten Zeilen in der Spalte A.

Dadurch hast du 4 Bedingungen geschaffen, da leere Zellen weiß bleiben.

Viele Grüße
Natator

Hallo Lucas,

die 4. Bedingung (Ergebnis = Leerstring) benötigst du doch eigentlich nicht. Wenn Ergebnis =„“ dann behält die Zelle „einfach“ die Farbe, die du für die Zelle per Formatieren vorgegeben hast.

Somit bist du wieder bei „nur“ 3 Bedingungen für die bedingte Formatierung.

Hier legst du die Bedingungen in folgender Reihenfolge fest:

1. Zellwert = "Fertig" -- Grün
2. Zellwert = "nicht Fertig" -- Rot
3. Formel =A2"" -- Gelb

Sind die 1. und 2. Bedingung nicht wahr, trifft die 3. Bedingung immer zu wenn die Zelle nicht leer ist.

A2 ist in der Formel dann die Adresse der 1. Zelle in dem Zell-Bereich für den du die bedingte Formatierung festlegst. Wichtig ist, dass die Adresse für die Zeile ohne absoluten Bezug (ohne $-Zeichen) angegeben wird!

Gruß
Franz

hallo lucasm
ich würds mit vba machen:
mach eine schlaufe über alle felder (z.B. zeilen) die du bearbeiten willst. für jede zelle kannst du dann folgenden code laufen lassen:

if cells(i, 1) „“ -> gelb einfärben
if cells(i, 1) = „fertig“ then -> grün einfärben
if cells(i, 1) = „nicht fertig“ -> rot einfärben

die befehle fürs einfärben findest du, indem du ein makro aufzeichnest und dann den code dort rauskopierst.

viel erfolg!
rolf

sorry, habe keine Lösung

Hallo, auf der Seite von Oliver Scheckelhoff findest du ein paar Beispiele zu dem Them „Bedingte Formatierung“.
http://ms-excel.eu/vba/vba-userform.html“.

mfg Softoldi