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

Forumthread: mit VBA Zellen farbig hinterlegen

mit VBA Zellen farbig hinterlegen
23.01.2013 16:48:13
Dominic
Hi,
wie kann ich mit VBA anhand zweier definierter variabler Kriterien bestimmte Zellbereiche mit einer Farbe hinterlegen? Hellrot und Hellgrün werden benötigt.
Zweitens - die wichtigste Frage dazu, wie kann ich diese der bedingten Formatierung ähnlichen Formel auf einen großen Zellbereich möglichst einfach übertragen.
In C37:O39 sind Währungsbeträge angegeben, diese sollen wenn der Wert kleiner als der Wert der in C24 eingetragen werden kann hellrot hinterlegt werden, bei größer als Wert der in D24 eingetragen werden kann hellgrün.
In C40:O40 sind Prozentwerte hinterlegt. Hier sollen diese hellrot hinterlegt werden wenn kleiner als der Wert der in C25 eingetragen werden kann, und hellgrün wenn er größer/gleich dem Wert ist, der in D25 eingetragen werden kann.
In C41-O41 sind wieder Eurowerte hinterlegt. Same Procedure wie in C37:O39.
Danach die Zeile 42 ist leer und dann beginnt das gleiche Spiel vom neuen. Heißt
in C43-O45 Währungsbeträge, in C46-O46 sind es wieder Prozentwerte und in C47-O47 wieder Währungsbeträge.
Zeile 48 ist wieder leer. Das ganze geht so weiter bis Zeile 2004.
Kann ich diese Formel bzw. den VBA Code auch so anpassen, dass die Zeilen die die Währungsangaben beinhalten im Währungsformat mit € Zeichen formatiert werden, und die Prozentzeilen selbstverständlich in % Formatierung?

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit VBA Zellen farbig hinterlegen
23.01.2013 17:35:38
Beverly
Hi Dominic,
weshalb willst du das denn per VBA lösen - dafür ist doch die bedinte Formatierung da.


AW: mit VBA Zellen farbig hinterlegen
24.01.2013 10:31:50
Dominic
Hi,
aber ich möchte doch nicht jede Zeile manuell markieren - bis Zeile 2004! Da sitze ich morgen noch am Rechner ;-). Denn ich kann wie oben beschrieben nicht den vollständigen Bereich markieren, da immer dazwischen eine Zeile steht die Prozentwerte anzeigt. Ich muss das zwar nur einmalig einrichten, aber das ist mir so zu aufwändig.
Außerdem habe ich bei der bedingten Formatierung festgestellt, dass es zumindest mit der Zellformatierung auf "Währung" oder "Prozent" nicht immer einwandfrei funktioniert / automatisch wechselt je nachdem welcher Wert in B2 eingetragen wird. Bei VBA funktioniert diese Formatierung einwandfrei, da ich den VBA Code auf mein Formularsteuerlement gelegt habe, und dann automatisch jedesmal die Anpassung erfolgt.

Anzeige
AW: mit VBA Zellen farbig hinterlegen
24.01.2013 16:05:57
Dominic
Hi,
und kann mir vielleicht schon jemand weiterhelfen?
Vielen Dank im Voraus!

AW: mit VBA Zellen farbig hinterlegen
24.01.2013 17:07:06
Daniel
Hi
probier mal folgendes:
1. Markiere die Zellen C37 bis O2004 (also deinen Zellbereich)
2. vergib für die Formatierung "hellrot" ein bedingts Format mit folgender Regel:
=Und(C37<>"";C37<Wahl(Rest(Zeile();6)+1;$A$1;$C$24;$C$24;$C$24;$C$25;$C$24))
3. für hellgrün dann eben analog mit D24 und D25
das mit Prozent- und Währungsformat könntest du über ein benutzerdefinertes Zahlenformat lösen (vorausgetzt, du gibst dich nicht mit Centbeträgen ab):
markiere alle Zellen und vergib folgendes benutzerdefiniertes Zahlenformat:
[<=1]0%;0,00
In der Eckigen Klammer steht die Bedingung, danach folgt das Zahlenformat für diese Bedingung.
das Zahlenformat ohne bedingung gilt dann für den Rest.
Damit werden Werte kleiner gleich 1 als Prozent und alle Werte grösser 1 als Währung formatiert.
funktioniert natürlich nur, wenn Prozentwerte und Währungsbeträge sich nicht überschneiden.
ansonsten würde ich so vorgehen:
1. alle Zelle als Währung formatieren
2. in eine Hilfsspalte die Formel: =Rest(Zeile();6) eintragen
3. Hilfsspalte nach der Zahl 4 Filteren, dann sollen nur die Zeilen mit den Prozentwerten sichtbar sein, falls nicht, andere Zahl wählen
4. für diese Zellen das Format Prozent einstellen. In gefilterten Tabellen werden nur die sichtbaren Zeilen bearbeitet.
Gruß Daniel

Anzeige
AW: mit VBA Zellen farbig hinterlegen
24.01.2013 17:56:19
Beverly
Hi Dominic,
vom Prinzip her kannst du es mit folgendem Code versuchen:
Sub Formatieren()
Dim rngZelle As Range
' Währung
For Each rngZelle In Union(Range("C37:O39"), Range("C41:O41"), Range("C43:O45"))
If rngZelle.Value  Range("D24") Then
rngZelle.Interior.ColorIndex = 4
End If
Next rngZelle
' Prozent
For Each rngZelle In Union(Range("C40:O40"), Range("C43:O45"), Range("C46:O46"))
If rngZelle.Value = Range("D25") Then
rngZelle.Interior.ColorIndex = 4
End If
Next rngZelle
End Sub
In die Union musst du alle die Bereiche erweitern mittels Range(....) eintragen, in denen die entsprechenden Bedingungen zutreffen sollen.


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen farbig hinterlegen mit VBA in Excel


Schritt-für-Schritt-Anleitung

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Formatieren()
        Dim rngZelle As Range
        ' Währung
        For Each rngZelle In Union(Range("C37:O39"), Range("C41:O41"), Range("C43:O45"))
            If rngZelle.Value < Range("C24").Value Then
                rngZelle.Interior.ColorIndex = 3 ' Hellrot
            ElseIf rngZelle.Value > Range("D24").Value Then
                rngZelle.Interior.ColorIndex = 4 ' Hellgrün
            End If
        Next rngZelle
        ' Prozent
        For Each rngZelle In Union(Range("C40:O40"), Range("C46:O46"))
            If rngZelle.Value < Range("C25").Value Then
                rngZelle.Interior.ColorIndex = 3 ' Hellrot
            ElseIf rngZelle.Value >= Range("D25").Value Then
                rngZelle.Interior.ColorIndex = 4 ' Hellgrün
            End If
        Next rngZelle
    End Sub
  4. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle Formatieren und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler 1004 - Anwendung oder objektdefinierter Fehler: Stelle sicher, dass die angegebenen Zellbereiche korrekt sind und existieren.
  • Farbe wird nicht angezeigt: Überprüfe, ob die Bedingungen im VBA-Code korrekt sind. Stelle sicher, dass die Zellwerte die Bedingungen erfüllen.
  • Makro läuft nicht: Vergewissere dich, dass du Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Makros.

Alternative Methoden

Falls du nicht mit VBA arbeiten möchtest, kannst du auch die Bedingte Formatierung verwenden. Hier ist, wie du das machst:

  1. Markiere den Bereich C37:O2004.

  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.

  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden".

  4. Für hellrot kannst du folgende Formel verwenden:

    =UND(C37<>"", C37<C24)
  5. Für hellgrün verwende:

    =UND(C37<>"", C37>D24)
  6. Wähle die gewünschte Farbe und bestätige mit OK.


Praktische Beispiele

Angenommen, du hast folgende Werte:

  • In C24 steht 100.
  • In D24 steht 200.
  • In C25 steht 50.
  • In D25 steht 75.

Wenn du das Makro ausführst, werden alle Zellen in C37:O39 hellrot markiert, deren Werte unter 100 liegen, und hellgrün, wenn sie über 200 liegen. Für die Prozentwerte in C40:O40 wird das gleiche Prinzip angewendet.


Tipps für Profis

  • Erweiterung des Codes: Du kannst den VBA-Code leicht anpassen, um weitere Zellbereiche hinzuzufügen. Nutze die Union-Funktion, um mehrere Bereiche zu kombinieren.
  • Benutzerdefinierte Zahlenformate: Wenn du möchtest, dass die Zellen automatisch als Währung oder Prozent formatiert werden, kannst du dies ebenfalls im VBA-Code hinzufügen.
  • Regelmäßige Ausführung: Wenn du das VBA-Skript regelmäßig nutzen möchtest, kannst du es an ein Ereignis, wie das Öffnen der Datei oder das Ändern einer Zelle, binden.

FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Zellbereiche verwenden? Ja, passe einfach die Zellbereiche in der Union-Funktion an, um andere Bereiche in deinem Arbeitsblatt zu berücksichtigen.

2. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code sollte in allen modernen Versionen von Excel funktionieren, die VBA unterstützen (Excel 2007 und neuer).

3. Wie kann ich die Farben anpassen? Du kannst die ColorIndex-Werte im Code ändern, um verschiedene Farben zu verwenden. Eine Liste der ColorIndex-Werte findest du in der Excel-Dokumentation.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige