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

Forumthread: Bedingte Formatierung mit Farbübernahme VBA

Bedingte Formatierung mit Farbübernahme VBA
10.09.2017 20:32:33
Matthias
Hallo Zusammen,
ich habe bereits versucht mir mit fertigen Makros aus dem Internet zu helfen, was allerdings nur begrenzt funktioniert hat. Deshalb bräuchte ich nun eure Hilfe, da ich nicht mehr weiterkomme und meine VBA Kenntnisse noch nicht ausreichend vorhanden sind.
Im Folgenden nun mein Problem:
Ich benötige ein Makro für eine bedingte Formatierung(Bereich J13:FV13) mit Übernahme einer Farbe aus der Zelle(F13). Die Zellen sollten eingefärbt werden wenn sie nicht leer sind. Da der Kapazitäten Plan variabel ist und über mehrere Mitarbeiter gehen soll, müsste das Makro über mehrere Zeilen gehen, eigentlich über den ganzen Bereich. Also soll eine Zeile nach der anderen abgearbeitet werden. Jede Zeile soll die Farbe der Zelle annehmen, die in der Spalte F ist.
Ich hoffe mein Problem ist klar geworden und ihr könnt mir helfen.
Vielen Dank im Voraus!
Die Grobversion des Kapaplans findet ihr hier:
https://www.herber.de/bbs/user/116145.xlsm
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Musterlösung
10.09.2017 21:11:32
Fennek
Hallo,
der folgende Code ist ein Muster, um per VBA eine bedingte Formatierun zu setzen. Den Range, die Formel und die Farbe musst du anpassen.

Sub Test1()
With Range("A1:G15")
.FormatConditions.Delete 'sonst wird hinzugefügt
.FormatConditions.Add xlExpression, , "=A10"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).Interior.Color = vbGreen
'.FormatConditions(1).StopIfTrue = False
End With
End Sub
mfg
Anzeige
AW: Musterlösung
11.09.2017 14:49:09
Matthias
Hallo Fennek,
Danke für den schnellen Lösungsansatz. Ich denke ich habe es noch nicht richtig dargestellt. Ich benötige die Bedingte Formatierung für jede Zeile, da sich in jeder Zeile ein anderer Auftrag befindet.
Beginnen soll es bei der Zeile 13. Das heißt der Bereich der Zeile 13 wäre J13:FV13 und die Farbe die Verwendet werden soll ist die Zellefüllung in F13, aber nur wenn es nicht weiß ist und der Bereich J13:FV13 nicht leer ist. Bei der nächsten Zeile J14:FV14 und Farbe aus F14. Das sollte sich Zeile für Zeile bis zu einer bestimmten Zeile durchziehen(z.B.: 100).
MfG
Anzeige
AW: Makro?
11.09.2017 15:38:24
Fennek
Hallo,
meine Antwort war: hier ist Hammer und Nagel, aber das Bild mußt du selbst aufhängen.
Die Aufgabe mit einer Formel für bedingter Formatierung zu lösen, ist mir zu komplex / zu zeitaufwändig!
_____________________________
Die Konkretisierung in der Antwort sollte mit einem Makro relativ gut zu lösen sein.
mfg
Anzeige
AW: Makro?
11.09.2017 20:28:40
Matthias
Okay, aber wenn man noch nie ein Bild aufgehängt hat wird es schwierig.
Kann mir sonst noch wer helfen?
Nachfrage
14.09.2017 11:02:32
Michael
Hallo!
So wie ich es bisher verstanden habe, willst Du in jeder Zeile im Grunde eine eigene "bedingte Formatierung", weil bspw. Zellfarben immer von der ersten Zelle der Zeile abhängen. Willst Du das wirklich über die bedingte Formatierung lösen? Eigene Bedingungen pro Zeile ist eigentlich nicht sonderlich performant. Einfach wäre es die gewünschten Formatierungen zwar per Makro auf die entsprechenden Zellen anzuwenden, in einem Rutsch, aber eben direkt und nicht über je eigene Konstruktionen der bedingten Formatierung.
Die Frage ist auch: Soll diese Formatierung einmalig erfolgen, oder soll sich das wiederholen, wenn bspw. weitere Daten (nach Zeile 100) eingegeben werden? Falls sich das wiederholen soll kann man die Formatierung per Makro entweder manuell (per Schaltfläche) auslösen lassen, oder man setzt auf ein Ereignis und führt die Formatierung immer aus, wenn bspw. in einer bestimmten Spalte Werte neu eingetragen werden.
LG
Michael
Anzeige
AW: Nachfrage
14.09.2017 22:34:27
Matthias
Hallo Michael,
Eigentlich sollte es immer durchlaufen wenn etwas geändert wird. Die Farbe dient zur Übersicht. Man erkennt sofert welche Mitarbeiter an welchen Auftrag Arbeiten oder welche Mitarbeiter zusammen an einem Auftrag arbeiten. Da der Plan sehr flexibel ist, wollte ich es Zeile für Zeile bis zu einer Zeile übernehmen lassen. Drum würde ich es auf eine Zeile beschränken und wenn es nötig ist, wollte ich diese dann anpassen.
Die Farbübernahme in die Spalte F hab ich schon hinbekommen. Das heißt er sucht in einer Tabelle im zweiten Tabellenblatt nach der Auftragsnummer und übernimmt die Farbe die direkt daneben steht in das erste Tabellenblatt. Jetzt wollte ich diese Farbe für den Planungsbereich übernehmen und mein gedanke war bedingte Formatierung.
Hast du eine Lösung? Die Datei habe ich im ersten Beitrag hochgeladen.
Danke schön mal im voraus.
LG
Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bedingte Formatierung mit Farbübernahme in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine bedingte Formatierung in Excel mit VBA durchzuführen, die die Farbe aus einer bestimmten Zelle übernimmt, kannst du diesen Schritten folgen:

  1. Öffne das Visual Basic for Applications (VBA) Fenster:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub BedingteFormatierungFarbe()
       Dim ws As Worksheet
       Dim lastRow As Long
       Dim i As Long
    
       Set ws = ThisWorkbook.Sheets("DeinTabellenblatt") ' Passe den Blattnamen an
       lastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row ' Bestimme die letzte Zeile in Spalte F
    
       For i = 13 To lastRow
           If ws.Range("F" & i).Interior.Color <> vbWhite And _
              Application.WorksheetFunction.CountA(ws.Range("J" & i & ":FV" & i)) > 0 Then
               ws.Range("J" & i & ":FV" & i).Interior.Color = ws.Range("F" & i).Interior.Color
           End If
       Next i
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus:

    • Du kannst das Makro über Entwicklertools > Makros oder durch Drücken von F5 im VBA-Editor ausführen.
  5. Überprüfe das Ergebnis:

    • Die Zellen im Bereich J13:FV100 sollten nun die Farbe von der jeweiligen Zelle in Spalte F übernehmen, wenn sie nicht leer sind und nicht weiß.

Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht oder gibt einen Laufzeitfehler aus.

    • Lösung: Überprüfe den Blattnamen in der Zeile Set ws = ThisWorkbook.Sheets("DeinTabellenblatt"), um sicherzustellen, dass er mit dem tatsächlichen Namen übereinstimmt.
  • Problem: Die Farben werden nicht angewendet.

    • Lösung: Stelle sicher, dass die Zellen in Spalte F tatsächlich eine Farbe haben und nicht weiß sind. Überprüfe auch, ob die Zellen im Bereich J bis FV Leer sind.

Alternative Methoden

Eine alternative Methode zur bedingten Formatierung könnte sein, die Formatierungen direkt über die Excel-Oberfläche vorzunehmen, anstatt VBA zu verwenden. Dies kann jedoch bei großen Datenmengen weniger effizient sein. Für eine einmalige Anwendung kann die Standardfunktion von Excel ausreichen.


Praktische Beispiele

Hier ist ein Beispiel, wie das VBA-Skript angewendet wird:

  • Beispiel: Wenn in Zelle F13 die Farbe Rot ist und die Zellen im Bereich J13:FV13 nicht leer sind, wird der gesamte Bereich in Rot eingefärbt. Dies gilt für jede Zeile bis zur letzten Zeile in Spalte F.

Tipps für Profis

  • Effizienz steigern: Wenn du häufig Daten aktualisierst und die Formatierung automatisch anwenden möchtest, kannst du das Makro an ein Ereignis binden, wie zum Beispiel Worksheet_Change, um die Formatierung sofort bei Änderungen anzuwenden.

  • VBA-Formatierung optimieren: Verwende vba stopiftrue, um die Ausführung des Makros zu optimieren, falls du in einer großen Datei viele Daten hast.


FAQ: Häufige Fragen

1. Frage
Wie viele Zeilen kann ich mit diesem Makro bearbeiten?
Antwort: Das Makro kann die Zellen bis zur letzten gefüllten Zeile in Spalte F bearbeiten. Du kannst den Bereich anpassen, indem du die Variable lastRow änderst.

2. Frage
Kann ich die Farben auch manuell anpassen?
Antwort: Ja, du kannst die Farben in Spalte F manuell ändern, und das Makro wird diese Anpassungen beim nächsten Ausführen übernehmen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige