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

Forumthread: Excel: Bedingte Formatierung per VBA

Excel: Bedingte Formatierung per VBA
28.09.2016 10:43:19
Nik
Hallo zusammmen,
ich habe eine Exceltabelle in die ich per VBA 4 Bedingungen / Formeln einfügen möchte. Das Problem ist, dass ich das per Makrorekorder versucht habe aufzuzeichnen, das aber irgendwie nicht hinhaut. Der hat mir einfach nichts aufgenommen.
Vielleicht könnt ihr mir helfen:
Die Formeln sollen angewendet werden auf den Bereich von Zelle F2:F9999
Hier die Fälle:
1.
=WENN(ODER(F2="AZ";);1;)
-> Dann ausfüllen mit Farbe WEIß
2.
=WENN(ODER(F2="AS";F2="BH";F2="BM";F2="BO";F2="BP";F2="EI";F2="EP";F2="EX";F2="IA";F2="IC";F2="KA"; F2="KB";F2="KP";F2="KS";F2="PC";F2="PO";F2="R1";F2="RP";F2="RU";F2="SZ";F2="T1";F2="T2";F2="ZA"; F2="ZC";);1;)
-> Dann ausfüllen mit Farbe GRÜN
3.
=WENN(ODER(F2="FA";F2="FC";F2="FD";F2="FF";F2="HB";F2="KC";F2="KD";F2="KE";F2="KF";F2="KG";F2="KH"; F2="KJ";F2="KK";F2="KM";F2="TE";F2="TG";F2="TS";F2="WE";F2="WF");1;)
-> Dann ausfüllen mit Farbe BLAU
4.
=WENN(ODER(F2="03";F2="12";F2="13";F2="14";F2="15";F2="25";F2="27";F2="28";F2="2E";F2="2M";F2="2N"; F2="2S";F2="30";F2="31";F2="39";F2="4E";F2="4J";F2="4M";F2="61";F2="64";F2="6L";F2="83";F2="84"; F2="86";F2="B1";F2="B2";F2="B5";F2="B7";F2="B9";F2="BE");1;)
-> Dann ausfüllen mit Farbe BLAU
5.
=WENN(ODER(F2="40";F2="AR";F2="B1";F2="BA";F2="BE";F2="BG";F2="BJ";F2="C1";F2="C2";F2="CC";F2="CI"; F2="CK";F2="CM";F2="DH";F2="DX";F2="EC";F2="EE";F2="FF";F2="FL";F2="FW";F2="G1";F2="JM";F2="LD"; F2="MX";F2="O1";F2="O2";F2="OR";F2="RA";F2="RO";F2="SH";F2="SL";F2="VM";F2="VV";F2="WE");1;)
-> Dann ausfüllen mit Farbe BLAU
6.
=WENN(ODER(F2="BI";F2="BN";F2="BT";F2="BU";F2="BY";F2="CP";F2="CT";F2="CW";F2="D1";F2="GN";F2="GU"; F2="HC";F2="HM";F2="";F2="IH";F2="IP";F2="IT";F2="TH";F2="TI";F2="TN";F2="TP";F2="UP";F2="UZ";F2="G"; F2="H";F2="J";F2="L";F2="N";F2="Q");1;)
-> Dann ausfüllen mit Farbe GELB
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel: Bedingte Formatierung per VBA
28.09.2016 11:14:08
Werner
Hallo Nik,
zunächst mal nicht zu deinem Problem sondern ein Hinweis zu deinem Formelmonster.
=WENN(ODER(F2={"AS"."BH"."BM"."BO"."BP"."EI"."EP"."EX"."IA"."IC"."KA"."KB"."KP"."KS"."PC"."PO"."R1"."RP"."RU"."SZ"."T1"."T2"."ZA"."ZC"}) ;1;)
Sollte man aber bei Excel gut wissen.
Gruß Werner
Anzeige
AW: Excel: Bedingte Formatierung per VBA
28.09.2016 11:17:39
Nik
Danke Werner!
Man lernt nie aus.. und ich habe noch vieeeel zu lernen :-)
Gruß
Nik
Das geht nur in ZellFmln, ...
28.09.2016 12:31:08
Luc:-?
…Werner,
nicht aber in der BedingtFormatierung (keine MatrixBezüge!), was man ebenfalls wissen sollte… ;-]
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Zur Kenntnis genommen nund abgespeichert.
28.09.2016 13:18:46
Werner
Hallo Luc,
nehme ich zur Kenntnis und würde ich auch gelten lassen, wenn mein Excel Status gut wäre, was er aber beileibe nicht ist.
Gruß Werner
Weil mir unbekannt auch nur 'man'... ;-) owT
28.09.2016 13:21:51
Luc:-?
:-?
AW: Excel: Bedingte Formatierung per VBA
28.09.2016 11:15:25
Nik
Habe mir einen VBA Code zusammengeschustert. Funktioniert auch soweit, jedoch nur mit einer Bedingung. Ich weiß nur nicht wie ich mehrere "Kürzel" anführen muss, dass er die auch richtig einfärbt -> siehe erste Bedingung für ROTEN Hintergrund.
Danke im Voraus für eure Mühe!
Nik
Public Sub BedingtesAmpelFormat()
Dim Wert As Variant
Range("F2:F9999").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
'*** Bedingte Formatierung anlegen
.FormatConditions.Delete
' Bedingung für roten Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, "=""BN"";""CW""")
.Interior.ColorIndex = 3
End With
' Bedingung für grünen Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, "=""BU""")
.Interior.ColorIndex = 50
End With
' Bedingung für gelben Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, "=""CT""")
.Interior.ColorIndex = 6
End With
End With
End Sub

Anzeige
AW: Excel: Bedingte Formatierung per VBA
28.09.2016 11:30:24
Werner
Hallo Nik,
Bei der Trennung der Begriffe schon mal mit Komma versucht?
Noch was zu deiner Formel und der bedingten Formatierung. In der Form wie du die Formel jetzt hast (WENN(ODER(....) kann die bedingte Formatierung damit nichts anfangen, da sie nur auf WAHR oder FALSCH auswertet. Wenn, dann so:
~f~=ODER(F2={"AS"."BH"."BM"."BO"."BP"."EI"."EP"."EX"."IA"."IC"."KA"."KB"."KP"."KS"."PC"."PO"."R1"."RP"."RU"."SZ"."T1"."T2"."ZA"."ZC"})
Gruß Werner
Anzeige
AW: ~f~ vor dem = gehört natürlich nicht dazu. owT
28.09.2016 11:31:59
Werner
AW: ~f~ vor dem = gehört natürlich nicht dazu. owT
28.09.2016 11:43:43
Nik
Habe es jetzt schon in allen erdenklichen Variationen versucht, mit Komma, Semikolon.. bekomme es nicht hin.
        ' Bedingung für roten Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, "=""BN", "CW""")
.Interior.ColorIndex = 3
End With
Bei obiger Formel bringt er mir keinen Kompilierfehler, jedoch färbt er die Zellen auch nicht rot ein. :-/
Anzeige
AW: Excel: Bedingte Formatierung per VBA
28.09.2016 13:48:00
Daniel
HI
das funktioniert schon mit Recorder.
du musst "Formel als Regel" auswählen.
der Zellbereich F2:F9999 muss selektiert sein
die Zelle F2 muss aktiv sein.
dann kannst du die Regelformel eingeben. Die Formel muss für die aktive Zelle geschrieben werden, damit die relativen Zellbezüge passen.
da du viele "Alternativ-Werte" für die gleiche Farbe hast, musst du die Formel so schreiben, hierbei ist das WENN unnötig, die Formel sollte als Ergebnis WAHR oder FALSCH ergeben:
=IstZahl(Finden(","&F2&",";",AS,BH,BM,BO,PB,...,ZA,ZC,"))

(den Text für die Formel bitte ergänzen, einfach die "Wörter" mit "," getrennt anfügen, auch am anfang und ende muss das "," stehen.
wenn die Formel zu lang wird weils sehr viele Wörter sind, kannst du auch so vorgehen:
1. liste alle Wörter, bei denen die gleiche Farbe zugewiesen werden soll,auf einem anderen Tabellenblatt in einer Spalte untereinander auf
2. Verwende dann folgene Formel als Regel (Blattname und Spalte bitte anpassen)
=ZählenWenn(Tabelle2!A:A;F2)>0
Gruß Daniel
Anzeige
AW: Excel: Bedingte Formatierung per VBA
29.09.2016 07:48:54
Nik
Hallo Daniel,
danke für die Antwort. Ich werde das demnächst beim Aufzeichungen mit dem Makrorekorder berücksichtigen :-)
Habe es zwischenzeitlich mithilfe der anderen Hilfestellungen in VBA hinbekommen.
Sub Farbe_NET()
Range("H2:H9999").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.FormatConditions.Delete
' Bedingung für grünen Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, Formula1:="=ODER(H2=""AS"";H2=""weitere  _
Werte"")")
.Interior.ColorIndex = 43
End With

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bedingte Formatierung in Excel per VBA


Schritt-für-Schritt-Anleitung

Um die bedingte Formatierung in Excel per VBA zu erstellen, folge diesen Schritten:

  1. Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Menü "Einfügen" die Option "Modul", um ein neues Modul zu erstellen.

  3. Füge den folgenden VBA-Code in das Modul ein:

    Sub BedingteFormatierung()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Sheets("Tabelle1") 'Passe den Tabellennamen an
    
       ws.Range("F2:F9999").FormatConditions.Delete ' Löscht vorhandene Formatierungen
    
       ' Bedingung für weiße Zellen
       ws.Range("F2:F9999").FormatConditions.Add Type:=xlExpression, _
           Formula1:="=F2=""AZ"""
       ws.Range("F2:F9999").FormatConditions(1).Interior.Color = RGB(255, 255, 255)
    
       ' Bedingung für grüne Zellen
       ws.Range("F2:F9999").FormatConditions.Add Type:=xlExpression, _
           Formula1:="=ODER(F2=""AS"", F2=""BH"", F2=""BM"", F2=""BO"", F2=""BP"")"
       ws.Range("F2:F9999").FormatConditions(2).Interior.Color = RGB(0, 255, 0)
    
       ' Füge weitere Bedingungen hier hinzu
    End Sub
  4. Passe die Bedingungen und die Farben nach Deinen Anforderungen an.

  5. Schließe den VBA-Editor und führe das Makro aus, um die bedingte Formatierung zu aktivieren.


Häufige Fehler und Lösungen

  • Fehler: Zellen werden nicht gefärbt.

    • Lösung: Überprüfe, ob die Bedingungen korrekt formuliert sind und die Formatierung auf den richtigen Bereich angewendet wird.
  • Fehler: Kompilierfehler in der Formel.

    • Lösung: Achte darauf, dass die Syntax der VBA-Formeln korrekt ist, z. B. die Verwendung von "" für Text.
  • Fehler: Makro funktioniert nicht mit dem Recorder.

    • Lösung: Wähle "Formel als Regel" im Makrorekorder, um die vba bedingte formatierung korrekt zu erfassen.

Alternative Methoden

Es gibt verschiedene Wege, eine bedingte Formatierung zu implementieren:

  1. Direkte Anwendung in Excel:

    • Gehe zu "Start" > "Bedingte Formatierung" und wähle "Neue Regel". Hier kannst Du die Regeln manuell eingeben.
  2. Verwendung von Namen:

    • Du kannst eine Liste von Bedingungen in einem anderen Blatt erstellen und dann mit ZählenWenn arbeiten. Dies vereinfacht die Regelanwendung.
    =ZählenWenn(Tabelle2!A:A;F2)>0

Praktische Beispiele

Hier sind einige praktische Beispiele für die bedingte Formatierung in Excel mit VBA:

  1. Färbe Zellen basierend auf Text:

    With ws.Range("F2:F9999").FormatConditions.Add(Type:=xlExpression, _
       Formula1:="=F2=""FA""")
       .Interior.Color = RGB(0, 0, 255) ' Blau
    End With
  2. Färbe Zellen basierend auf Zahlen:

    With ws.Range("F2:F9999").FormatConditions.Add(Type:=xlCellValue, _
       Operator:=xlGreater, Formula1:=10)
       .Interior.Color = RGB(255, 0, 0) ' Rot
    End With

Tipps für Profis

  • Verwende xlCellValue für einfache Bedingungen: Dies vereinfacht die Syntax und erhöht die Lesbarkeit.
  • Kombiniere Bedingungen: Du kannst mehrere Bedingungen innerhalb einer Regel kombinieren, um komplexere Logiken zu erstellen.
  • Teste regelmäßig: Führe das Makro regelmäßig aus, um sicherzustellen, dass alle Bedingungen korrekt angewendet werden.

FAQ: Häufige Fragen

1. Wie füge ich mehrere Bedingungen in die bedingte Formatierung ein?
Du kannst mehrere FormatConditions.Add-Anweisungen für verschiedene Bedingungen verwenden.

2. Funktioniert die bedingte Formatierung in Excel Online?
Die Verwendung von VBA ist in Excel Online nicht verfügbar. Du musst die Bedingungen manuell in der Desktop-Version erstellen.

3. Wie kann ich die Farben individuell anpassen?
Verwende die RGB-Funktion, um benutzerdefinierte Farben zu definieren. Zum Beispiel: RGB(255, 255, 0) für Gelb.

4. Kann ich die bedingte Formatierung auch für andere Zellenbereiche anwenden?
Ja, passe einfach den Zellbereich in der Range-Funktion an, um die excel vba bedingte formatierung für mehrere Zellen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige