Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Bedingte Formatierung mit Auswertung VBA

Forumthread: Bedingte Formatierung mit Auswertung VBA

Bedingte Formatierung mit Auswertung VBA
14.01.2026 10:24:11
mckater
Ich habe ein Problem mit der "Bedingten Formatierung" in Excel
Wenn z.B. Zelle K wie Zelle M folgendes haben von Messdaten die lt. bedingter Formatierung ROT bzw. schwarz gehalten werden
(rot natürlich für außerhalb der Toleranz und der VBA Code liest es und macht ein x oder eine o)....per Makro

Also wenn die überprüfte Zelle in der Zelle K schon rot hat, kommt raus ein x für nicht bestanden
Wenn dann die Zelle K gut ist und in der Toleranz ist, aber Zelle M rot ist, kommt auch ein x für nicht bestanden raus.
Das klappt super!....aber das Problem trifft auf....die Zellen K wie M sind mit bedingten Formatierungen bestückt.
Wenn also in der Zelle M kein Wert steht, nimmt der VBA Code an, ist vbred und das ist schlecht.(bedingte Formatierung)

Die Zellen K wie M sind entscheidend wichtig für den Prüfbericht.
Es kann sein das man nur in der Zelle K Werte schreibt und nicht in der Zelle M
Wenn ich die Werte lösche, also die bedingte Formatierung klappt das super....aber ich will ja, das VBA sieht, kein Wert okay und wenn Zelle K außerhab der Toleranz ist mach x

Um nicht so kompliziert zu schreiben:
Wenn Zelle von K rot ist, dann ist schon mal das Ergebnis x in einer anderen Zelle
Wenn Zelle von K rot ist und auch die Zelle M rot ist, dann ist das Ergebnis x in einer anderen Zelle
Wenn die Zelle K grün wäre, ich meine innerhalb der Toleranz wäre das okay und dann prüfen wir noch Zelle M mit Offset und wen die rot hat ist oder sollte das Ergebnis x für nicht bestanden sein.
Wenn die Zelle K grün wäre und auch die Zelle M grün und innerhalb der Toleranz muss es ein o geben für die Auswertung.
Ich könnte das Thema noch so fortführen.....
Im Prinzip klappt es super:
Problem:
Ich habe in Zelle M wie Zelle K eine bedingte Formatierung!
Muss auch so sein, weil es kann ja nicht nur einen Messwert geben in M bzw. K
Sobald ich keine Messwerte in K habe, glaubt Excel, das ist vbred und falsch!!!

Im Prinzip müsste ich mir einen Prüfbericht immer selben erstellen, wo ich sage, der hat nur einen Messwert oder die anderen zwei....das ist nicht VBA oder der Sinn....funktioniert super...aber sollte es nicht einfacher gehen mit Codes?


mein Code:
If (ActiveCell.DisplayFormat.Font.Color = vbRed Or Selection.Offset(0, 2).DisplayFormat.Font.Color = vbRed) _
And ActiveCell > "" Then

Er überprüft die Zellen und wenn eine leer ist, dann auch

Ich möchte eigentich, er soll beide Zellen prüfen auf vbred und dann auch noch wenn die Zelle M leer ist mach es so, wenn Zelle M schon nicht bestanden hat

Irgendwie versuche ich alles und komme nicht auf den Punkt
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
14.01.2026 10:32:36
SF
Hola,
und du glaubst jetzt dass nach dem ganzen langen Text irgendjemand gezielt helfen kann?
Für mich hört sich das an als wären die bedingten Formatierungen nicht ganz ausgereift, aber die sieht hier ja niemand.
Lade eine Exceldatei hoch und trage händisch ein was du dir genau wann vorstellst.
Gruß,
steve1da
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
14.01.2026 11:34:52
GerdL
Moin,

bitte die Farbnummern ggf. anpassen.
Sub Unit()


With ActiveCell
If .Column > 11 Then Exit Sub 'nur in Spalte K

If DisplayFormat.Font.Color = vbRed Or .Offset(0, 2).DisplayFormat = vbRed Then
.Offset(0, 3) = "x"
ElseIf .DisplayFormat.Font.Color >= vbGreen And .Offset(0, 2).DisplayFormat.Font.Color >= vbGreen Then
.Offset(0, 3) = "o)"
Else
.Offset(0, 3) = ""
End If
End With

End Sub


Oder in der bed.F.
UND($K2>"";$M2>"" ;..........)
ergänzen.

Gruß Gerd
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
14.01.2026 13:21:14
daniel
Hi
so?
ZielZelle ist die Zelle mit dem Ergebnis. die bitte hier entsprechend einfügen
if activeCell = "" AND ActiveCell.Offset(0, 2).value = "" then

ZielZelle = ""
Elseif ActiveCell > "" AND ActiveCell.DisplayFormat.Font.Color = vbRed then
ZielZelle = "x"
ElseIf ActiveCell.offset(0, 2) > "" AND ActiveCell.Offset(0, 2).DisplayFormat.Font.Color = vbRed then
ZielZelle = "x"
Else
ZielZelle = "o"
End if


allerdings hast du noch nicht beschrieben, was das Ergebnis sein soll, wenn in K ein Wert steht und dieser grün ist und in M noch kein Wert.


Gruß Daniel
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
14.01.2026 13:22:21
Piet
Hallo

bei VBA gibt einen einen Super einfachen Trick Leerzellen zu überspringen (mit ElseIf)
If Offset(0, 2) = Empty Then 'nix weiter, bei Empty passiert jetzt nix!
ElseIf (ActiveCell.DisplayFormat.Font.Color = vbRed Or Selection.Offset(0, 2).DisplayFormat.Font.Color = vbRed) _
And ActiveCell > "" Then


mfg Piet
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
14.01.2026 13:31:55
Carlos
Hallo,
aus dem Thread:
Die Zellen K wie M sind entscheidend wichtig für den Prüfbericht.
Es kann sein das man nur in der Zelle K Werte schreibt und nicht in der Zelle M
Wenn ich die Werte lösche, also die bedingte Formatierung klappt das super....aber ich will ja, das VBA sieht, kein Wert okay und wenn Zelle K außerhab der Toleranz ist mach x

Wo findet man diese Adressen?

Beispieldatei wäre von Vorteil . . . .
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
16.01.2026 17:05:13
Piet
Nachtrag: kann man sonst noch was verbessern??
AW: Bedingte Formatierung mit Auswertung VBA
17.01.2026 16:37:48
mckater
Hallo Piet!
Hilfe brauch ich immer mit dem Gesamtprojekt VDA Prüfbericht(automatsiert)
Funktioniert auch super in so kurzer Zeit 200 Seiten Auswertung mit x Bauteilen....
Das mit dem Coden muss ich noch besser lernen, weil den könnte man genialer einsetzen wie kürzer schreiben.
Es funktioniert aber und ich will dich nicht stressen, weil sonst musst dir den gesamten Code auch noch ansehen und wirst lachen....das geht doch einfacher usw.*gg*

Deine Hilfe war genial!
Weil es war so richtig eine große Hürde bei meinem Problem. (Ich nannte es den red-check)
Der erfüllt ja alles, was man sich nur träumen lassen kann in einer Vorlage für den Ablauf von VBA!
Kürzer kann man diesen CODE nicht mehr schreiben, weil es werden ca. 8 Bedinungen erfüllt.

Das ist sozusagen Dein Finishcode für mich, der zu 100% "funzt"....also genial...egal was man eingibt, er macht es so wie es sein soll.
Vielleicht für andere: Hier ist die Datei einzusehen mit den Codes von Dir Piet als Beispielvorlage für andere.
https://www.herber.de/bbs/user/180040.xlsm

Naja, jetzt bist ja nicht mehr in der Heimat Deutschland und ich der Ösi.....mach Dir keine Sorgen....Fußball ist mir egal*gg*


Du hast gesagt ob du mir noch helfen kannst?
Ich kann Dir ja nicht gleich den funktionierenden VBA Messbericht zeigen lassen mit Vorlagen die verknüpft sind und irgendwie genial....aber beim VBA Coden könnte man da noch was machen....ein paar Baustellen würde es schon noch geben....nicht gravierende, aber so vom Code schöner machen usw.

Dann mal schöne Grüße aus dem gar nicht so kalten Ösiland in der Mitte des Herzens.
Schneeschaufeln ist heute nicht angesagt, mehr Coden*gg*

mfg mckater




Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
14.01.2026 18:57:08
mckater
Ich weiß es ist sehr komplex das Thema aber ich will es wieder schaffen wie man das umsetzen kann.
Es handelt sich um einen Prüfbericht, der so viele SUBS wie schon die Vorlagen enthalten.....
Den ganzen Code zu lesen, für das ich Monate gebraucht habe um es umzusetzen ist schon wow....
Im Anhang meine Frage wie man das lösen kann?
Weil ich habe Probleme mit dem "red check" mit o oder x in einer Zelle
https://www.herber.de/bbs/user/180020.xlsm

Das da oben wäre mal so ein fast Produkt vom Prüfbericht....er geht eh super, aber ist halt nicht so wie das Original...
Problem: Ich habe hier zwei SUB im Makro von Excel....die prüfen halt ob der Wert zwischen beiden Zellen innerhalb sind.

alles funktioniert eigentlich super!
aber wenn in der Nebenspalte kein Wert steht, obwohl der in der ersten okay ist, sagt der, nix da, draußen usw.
Jede Zelle ist mit den Positionen verknüft mit einer "bedingten Formatierung"...die Basis einfach....aber wenn der mir sagt mit VBA Code, ...
Besser gesagt...wenn Zelle a Rot ist und Zelle b okay ist, mach ein x für nicht in Ordnung
Macht er auch!....aber wenn ich in der Nebenzelle nix drinnen habe wie nur die Formatierung mit "bedingter Formatierung"....sagt sich der Bursch, das ist nicht gut
Der ganze Prüfbericht lauft super, aber das mit o und x erkennt der nicht......
Im Grunde einfach, ich müsste alle Formatieringen weg lassen was und es klappt wie auch noch was Rot ist in VBA ROT markieren und toll...aber das ist doch keine Programmierung oder?

SUB eins macht das super....SUB2 macht das super!
Problem, wenn der Wert wo die bedingte Formatierung leer ist und Excel sagt, das ist x wie rot und das ist ein Problem
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
15.01.2026 09:06:27
Piet
Hallo

du hattest fast die Lösung, habe deinen Code mit For Next übernommen.
Dir fehlte nur die Farbe2 mit Zelle > Empty zu verknüpfen.
Würde mich freuen wenn es jetzt klappt. Bei mir klappt es .

mfg Piet

Option Explicit

Dim AC As Range, FB As Variant


Sub Gut_oder_nicht_gut()
Sheets("Tabelle1").Select
Application.ScreenUpdating = False
'Auswertung M+N löschen
Range("M3:N16").ClearContents
'Messbereich prüfen
For Each AC In Range("I3:I16")
FB = AC.Offset(0, 2).DisplayFormat.Font.Color
If AC.Value > Empty Then
If (AC.DisplayFormat.Font.Color = vbRed Or _
AC.Offset(0, 2) > "" And FB = vbRed) Then
AC.Offset(0, 4) = "o"
AC.Offset(0, 5) = "x"
Else
AC.Offset(0, 4) = "x"
AC.Offset(0, 5) = "o"
End If
End If
Next AC
End Sub
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
16.01.2026 10:15:46
mckater
Moin an die Excel Comunity User hier,

möchte mich mal bedanken bei allen Ihren Hilfestellungen vorerst mit einigen Vorschlägen und Codes.
Habe von einigen Usern hier Codes bekommen und wollte das mal ausprobieren....immer knapp dran und dann doch wieder eine Lücke wo ich scheitere ganz knapp.
Ich bin ja nicht der Programmierer, der das in der Kürze der Würze macht mit sehr viel Hintergrundwissen.

Aber nun zu meinem Problem:
Wenn Zelle 1 wie Zelle 2 leer sind mach das: funktioniert!
Wenn Zelle 1 und Zelle 2 rot sind mach das: funktioniert.
Wenn Zelle 1 und Zelle 2 vbBlack sind mach das: funktioniert.

Aber ich will nicht so viel schreiben, weil es sehr komplex ist.

Anbei habe ich eh meine Erklärung geschrieben, was da nicht RUND läuft.

https://www.herber.de/bbs/user/180029.xlsm
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
16.01.2026 11:31:10
Piet
Hallo

in deiner Eröffnung sah ich keinen Hinweis auf den Bindestrich. Schau mal ob mein makro jetzt passt?
Würde miche freuen wenn es jetzt klappt.

mfg Piet

Option Explicit

Dim AC As Range, Wert As Variant
Dim FB1 As Variant, FB2 As Variant


Sub Gut_oder_nicht_gut()
Sheets("Tabelle1").Select
Application.ScreenUpdating = False
'Auswertung M+N löschen
Range("M3:N16").ClearContents
'Messbereich prüfen
For Each AC In Range("I3:I16")
Wert = AC.Offset(0, 2)
FB1 = AC.DisplayFormat.Font.Color
FB2 = AC.Offset(0, 2).DisplayFormat.Font.Color
'Bindestrich entfernen
If AC.Value = "" Or Wert = "" Then
AC.Offset(0, 1) = ""
End If
'zuerst Spalte I auswerten
If AC.Value > Empty Then
If FB1 = vbRed Or Wert > "" And FB2 = vbRed Then
AC.Offset(0, 4) = "o"
AC.Offset(0, 5) = "x"
Else
AC.Offset(0, 4) = "x"
AC.Offset(0, 5) = "o"
End If 'dann Spalte K auswerten
ElseIf AC.Value = "" And Wert > "" Then
If FB2 = vbRed Then
AC.Offset(0, 4) = "o"
AC.Offset(0, 5) = "x"
Else
AC.Offset(0, 4) = "x"
AC.Offset(0, 5) = "o"
End If
End If
Next AC
End Sub
Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
16.01.2026 13:19:22
mckater
Hallo Piet!

der Code funktioniert prima und perferkt!
den musst unbedingt mit Copyright 2026 Piet eintragen in den VBA Code....der funzt super!

Der ganze VBA Prüfbericht ist ja sehr komplex mit der Vorlage, den Verschiebungen, wie viele Bauteile usw....
Der "red-check" war eine große Herausforderung....wo das X und wo nicht und so viele andere Dinge....

Der macht das eh in 5sek alles, alles fertig für den Druck und da reden wir aber von bis 200 Seiten.....die dann verknüft sind....
Mein VBA Bericht läuft super ab, aber solche VBA Kenntnisse wie du habe ich da nicht....ich hab es mir mit Stück für Stück irgendwie bebastelt und ein paar Dinge wären da noch, weil der Code, die Subs so lange sind und man das besser machen könnte.
Mir gefällt dein Code, wie du die Options einsetzt!
Du definierst was und das wird getan, kurze Programmierung in VBA und nicht endlos mit.....

Dein Code funktioniert super! Alles...aber muss ich eine 3. Option einbinden, wenn meine Zelle I und Zelle K Werte enthalten....müssen die immer einen Bindestrich haben in Zelle J

Ich drücke mich schon wieder so blöd aus!
Wenn beide Zeilen einen Wert haben, egal ob vbRed oder vbBlack...der Bindestrich muss bleiben!!! Weil zwei Messergebnisse
Wenn beide Zeilen einen Wert haben, auch wenn die alle vbRed sind, muss der Bindestrich auch bleiben.

Ich mach ja das nur, wenn unfähige Excel User Daten eingeben, soll es Excel mit dem VBA Code abfangen.


Du hast ja den Code ja schon perfekt gemacht!
Wer gibt schon in die Zelle 2 einen Wert ein und innerhalb der Toleranz....wird mit deinem Code abgefangen!
Wer gibt schon in die Zelle 2 einen Wert ein und außerhalb der Toleranz....wird mit deinem Code abgefangen!
Wenn man nur einen Wert hat, gibt man es in die erste Zelle ein....aber darum soll VBA das überprüfen und du hast es gelöst!

Der letzte Schritt wäre noch....
Wenn beide Zellen Werte enthalten, dann muss ein Bindestrich stehen


Das wäre dann das Finish für den Code

LG mckater

Anzeige
AW: Bedingte Formatierung mit Auswertung VBA
16.01.2026 17:03:51
Piet
Hallo

freut mich sehr das dir mein Code gefällt. Ich bin nicht der beste Programmierer.
Aber mit 76 freut man sich wenn etwas gut klappt. Mein Vorbild ist snb, ein echter Profi.
PS ich habe mir alles selbst beigebracht, durch viel tüffteln bis es klappte!
Grüsse an die Heimat aus Izmir/TR

mfg Piet

       'Bindestrich entfernen oder einfügen!

If AC.Value = "" Or Wert = "" Then
AC.Offset(0, 1) = ""
ElseIf AC.Value > "" And Wert > "" Then
AC.Offset(0, 1) = CStr("-")
End If
Anzeige

Forumthreads zu verwandten Themen

Anzeige