3. Änderung der Zellfarbe in Abhängigkeit eines Wertes

Aufgabenstellung:

Bei Erreichen bestimmter Grenzwerte sollte die Schriftfarbe geändert werden.

Dieses Beispiel steht auch als Beispieldatei mit verschiedenen Varianten der bedingten VBA-Formatierung zum Download zur Verfügung.


In diesem Beispiel kommt eine VBA Lösung zum Einsatz. Realisiert wird das durch eine Select Case Anweisung.

Der Code ist in das VBA-Projekt der Tabelle einzufügen, in der er wirken soll.


Private Sub Worksheet_Change(ByVal Target As Range)
'Wenn mehr als eine Zelle markiert wurde dann Makro beenden
If Target.Cells.Count > 1 Then Exit Sub

Select Case Target
'Wenn der Wert zwischen 1 und 30 dann Schriftfarbe gelb
Case To 30
Cells(Target.Row, Target.Column).Font.ColorIndex = 44

'Wenn der Wert zwischen 50 und 80 dann Schriftfarbe blau
Case 50 To 80
Cells(Target.Row, Target.Column).Font.ColorIndex = 41

'Wenn der Wert zwischen 81 und 1000 dann Schriftfarbe rot
Case 81 To 1000
Cells(Target.Row, Target.Column).Font.ColorIndex = 3

'Wenn der Wert außerhalb der Bedingungen dann keine Schriftfarbe
Case Else
Target.Interior.ColorIndex = 0
End Select

End Sub
 

 


In einem 2. Beispiel sollte bei Überschreiten des Wertes in B2 die Hintergrundfarbe anfangen zu blinken.

Es kommt ebenfalls eine VBA Lösung zum Einsatz. Realisiert wird das durch eine Worksheet_Change Anweisung 


Private Sub 
Worksheet_Change(ByVal Target As Range)
'Wenn Wert in Zelle B2 gleich oder größer der zahl 10, dann...
If Range("B2") >= 10 Then

'Variable Zeit leeren und Makro "Erste_Farbe" starten
If Zeit = "" Then Erste_Farbe

'ansonsten
Else

'Anweisung beenden
Ende

'Abfrage Ende
End If
End Sub

und 3 Makros.


Sub 
Erste_Farbe()
'Hintergrundfarbe in Zelle B2 in rot ändern
ActiveSheet.Range("B2").Interior.ColorIndex = 3

'Zeittakt 1 sek.
Zeit = Now + TimeValue("00:00:01")

'Wenn die Zeit abgelaufen ist, Makro "Zweite_Farbe" starten
Application.OnTime Zeit, "Zweite_Farbe"
End Sub

Sub Zweite_Farbe()
'Hintergrundfarbe in Zelle B2 in rot ändern
ActiveSheet.Range("B2").Interior.ColorIndex = 0

'Zeittakt 1 sek.
Zeit = Now + TimeValue("00:00:01")

'Wenn die Zeit abgelaufen ist, Makro "Erste_Farbe" starten
Application.OnTime Zeit, "Erste_Farbe"
End Sub

Sub Ende()
'Wenn ein Fehler auftritt, dann mit nächster Anweisung weitermachen
On Error Resume Next

'Makro "Zweite_Farbe" beenden
Application.OnTime EarliestTime:=Zeit, Procedure:="Zweite_Farbe", Schedule:=False


'Makro "Erste_Farbe" beenden
Application.OnTime EarliestTime:=Zeit, Procedure:="Erste_Farbe", Schedule:=False

'Variable Zeit leeren
Zeit = ""

'Hintergrundfarbe der Zelle B2 in weiß ändern
ActiveSheet.Range("B2").Interior.ColorIndex = 0
End Sub

 


Dieses Beispiel wurde unter den in der Tabelle aufgeführten Versionen getestet.

  A B C D E
1        

2

 

Excel - Version

Getestet

 
3      
4   Excel 2007 12.0 a  
5   Excel 2003 11.0 a  
6   Excel 2002 10.0 a  
7   Excel 2000 9.0 a  
8   Excel 97 8.0    
9          
10   Anzahl der Downloads:

 
11          
12   Dieses Beispiel wurde bereits  x aufgerufen.  
13    
14          

 


> Beispieldatei herunterladen <

  Sollten beim Ausführen der Beispieldatei Fehler auftreten, bitte ich darum, mir eine Mail mit der Fehlerbeschreibung an fehler@excelbeispiele.de zu schicken.
Danke!

 Möchten Sie www.excelbeispiele.de in Ihre Favoriten aufnehmen? Dann Klicken Sie hier.
 

Kontakt:

letzte Aktualisierung am 06.01.2008

© 2004 - Copyright Oliver Scheckelhoff,
All Rights Reserved