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

Farbe aus Bedingter Formatierung Erkennen

Forumthread: Farbe aus Bedingter Formatierung Erkennen

Farbe aus Bedingter Formatierung Erkennen
18.03.2015 18:20:55
Daniel
Guten Tag Zusammen,
ich hoffe auf eure Hilfe.
Es geht um einen Urlaubsplan der in Tabellenblatt 1 ist und einen Dienstplan in Tabellenblatt2, wenn im Urlaubsplan an Tag XY ein "T" eingetragen wird, ist am gleichen Tag in dem Dienstplan die Zelle hellrot eingefärbt. Dies habe ich über Bedingte Formatierung gelöst.
Nun zum Problem:
im Dienstplan soll im Bereich1 die Eingabe gelöscht werden sobald diese hellrot ist da es ja sonst zu Überschneidungen kommt, genauso wie an Feiertagen und an Wochenenden.
Mit meinem VBA Code klappt alles ganz gut bis auf die Erkennung von diesem hellrot (oder auch andere Farben) Ich vermute ganz stark dass dies mit der bedingten Formatierung zusammenhängt
bei Wochenenden und Feiertagen klappt dies ganz gut.
hier der Code:

If Not Intersect(Target, Range("C11", "KV22")) Is Nothing Then
Application.EnableEvents = False
Target.Value = Trim(UCase(Target.Text)) 'Leerzeichen entfernen und Kleinschreibung  _
ersetzen
If Target.Cells.Interior.Color = RGB(191, 191, 191) Then 'Wenn Wochenende  _
dann Inhalt Löschen
Target.Cells(1) = "" 'Löschen der Eingabe
ElseIf Target.Cells.Interior.Color = RGB(146, 208, 80) Then 'Wenn Feiertag  _
dann Inhalt Löschen
Target.Cells(1) = "" 'Löschen der Eingabe
ElseIf Target.Cells.Interior.Color = RGB(255, 143, 143) Then 'Wenn Belegung  _
durch Jahresplan dann Inhalt Löschen
Target.Cells(1) = "" 'Löschen der Eingabe
Else
If Not Target.Cells.Interior.Color = RGB(191, 191, 191) Or Target. _
Cells.Interior.Color = RGB(146, 208, 80) Or Target.Cells.Interior.Color = RGB(255, 143, 143) Then
Select Case Target.Text
Case "SC" ' erlaubte eingaben
Target.Select
Target.Cells.Interior.Color = RGB(0, 176, 240)
Case "" 'Legt fest das Eingaben wie Enter ignoriert werden
Target.Cells.Interior.Color = RGB(255, 255, 255)
Target.Cells.Font.Color = RGB(0, 0, 0)
Case Else
Target.Parent.Activate
Target.Select 'bei Fehler zurück zum Eingabefeld
Target.Cells(1) = "" 'Löschen der Eingabe
MsgBox ("Diese Eingabe ist nicht möglich." & vbNewLine & " _
Ihre Eingabe wurde gelöscht!")  'Textbox
End Select
End If
End If
Application.EnableEvents = True
End If

Vielen Dank für eure Hilfe
Gruß Daniel

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
geht nicht....
18.03.2015 18:36:04
Helmut
Hallo,
ich glaube hier gelesen zu haben, dass man die Bedingung der Formate auswerten muss.
Glaube . es war Neopa ;-)
Gruß

AW: geht nicht....
18.03.2015 18:46:18
Daniel
Es ist auf jeden Fall sehr kompliziert, die Formate der Bedingten Formatierung auszuwerten.
Hier im Forum wird schon seit längerem eine immer mal wieder hitzig aufschwallende Diskussion zwischen einigen Experten darüber geführt, wie man das am besten macht.
Wenn man die Bediungnen kennt die zu den jeweiligen Farben führen, ist es auf jeden Fall leichter, diese Bedingungen auf Basis von Zellwerten auszuwerten anstatt die Farben.
Gruß Daniel

Anzeige
Die von Helmut neopa zugeschriebene ...
19.03.2015 02:42:48
Helmut
…Empfehlung konnte man schon vor mindestens 13 Jahren in der PCWelt und einschlägigen Xl-Kompendien lesen, Daniel,
und sie ist immer noch gültig, obwohl das, was dein (Vor-)Namensvetter schreibt, richtig ist: Einige können das, aber das ist eher nichts für dein VBA-Level, zumal es dafür kaum Fertig-Tools und dann (bis auf wahrscheinlich nur eine Ausnahme für deine Xl-Version) häufig auch mit eingeschränkter Nutzbarkeit.
Aber entscheide selbst! Wenn du der zuletzt hier und dort geführten Diskussion folgen kannst…(?) ;-]
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Danke für die Links
20.03.2015 20:19:17
Daniel
Vielen Dank an alle für die Infos und die Links sehr informativ :)
ich versuche es mal aber ich denke es gibt auch andere Lösungen die für mich funktionieren
Gruß
Daniel
;
Anzeige
Anzeige

Infobox / Tutorial

Farbe aus Bedingter Formatierung Erkennen


Schritt-für-Schritt-Anleitung

Um die Farbe aus der bedingten Formatierung in Excel zu erkennen, kannst du die folgenden Schritte ausführen:

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

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblatt)", wähle "Einfügen" und dann "Modul".

  3. Code einfügen: Kopiere den folgenden Code und füge ihn in das Modul ein:

    Function FarbcodeErkennen(Zelle As Range) As Long
       On Error Resume Next
       FarbcodeErkennen = Zelle.DisplayFormat.Interior.Color
       On Error GoTo 0
    End Function
  4. Farbcode verwenden: Du kannst nun die Funktion FarbcodeErkennen in einer Zelle verwenden, um den Farbcode der bedingten Formatierung zu ermitteln. Zum Beispiel: =FarbcodeErkennen(A1)

  5. Farben vergleichen: Vergleiche den zurückgegebenen Farbcode mit den RGB-Werten, die du in deinem VBA-Skript verwendest.


Häufige Fehler und Lösungen

  • Problem: Der Farbcode wird nicht korrekt erkannt.

    • Lösung: Stelle sicher, dass du DisplayFormat verwendest, um die Farben aus der bedingten Formatierung abzurufen. Der Standard Interior.Color funktioniert nicht bei bedingter Formatierung.
  • Problem: Der Code gibt einen Fehler zurück.

    • Lösung: Überprüfe, ob die Zelle tatsächlich eine bedingte Formatierung hat. Andernfalls kann der Farbcode nicht ermittelt werden.

Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du die Bedingungen der bedingten Formatierung direkt auswerten:

  1. Bedingte Formatierung prüfen: Überprüfe die Regeln der bedingten Formatierung, um die Bedingungen zu verstehen, die zu den jeweiligen Farben führen.
  2. Formeln verwenden: Erstelle Formeln, die die gleichen Bedingungen wie die bedingte Formatierung abbilden, anstatt die Farben direkt zu verwenden.

Praktische Beispiele

Wenn du im Urlaubsplan eine "T" eingibst, wird die entsprechende Zelle im Dienstplan hellrot eingefärbt. Du kannst die Funktion FarbcodeErkennen verwenden, um sicherzustellen, dass nur die hellrote Füllung (RGB: 255, 143, 143) erkannt wird:

If FarbcodeErkennen(Target) = RGB(255, 143, 143) Then
    Target.Value = ""
End If

Tipps für Profis

  • Verwendung von RGB-Werten: Achte darauf, die richtigen RGB-Werte für die hellrote Füllung zu verwenden (255, 143, 143), um die bedingte Formatierung korrekt zu erkennen.
  • Ereignisse optimieren: Setze Application.EnableEvents = False, bevor du Änderungen vornimmst, um zu verhindern, dass das Makro in eine Endlosschleife gerät.
  • Debugging: Verwende Debug.Print oder MsgBox, um den erkannten Farbcode während der Ausführung des Codes anzuzeigen.

FAQ: Häufige Fragen

1. Wie kann ich den Farbcode für eine andere Farbe erkennen? Du kannst die Funktion FarbcodeErkennen auf die Zelle anwenden, um den Farbcode zu ermitteln, und dann mit den RGB-Werten vergleichen.

2. Funktioniert dies in allen Excel-Versionen? Die beschriebenen Methoden funktionieren in den meisten aktuellen Excel-Versionen, jedoch können einige Funktionen in älteren Versionen eingeschränkt sein.

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