Herbers Excel-Forum - das Archiv

Zelle abhängig von Wert formatieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 10:50:03
Guten Morgen ans Excelforum,
kurz vor Jahresende habe ich noch ein Formatierungsproblem, ich weiß aber nicht wie man das mit VBA hinbekommen kann.
Problem:
Der Farbhintergrund einer Zelle soll in Abhängigkeit von dem Wert der Zelle sein.
Praktisch wäre es wenn man Bereiche definieren könnte Bsp. Zelle a1 soll bei Werten zwischen 80 und 100 Zellhintergund grün haben, bei 60 bis 80 sollte ein gelber Hintergrund erscheinen und bei Unterschreiten von 60 ein roter Hintergund zu sehen sein. Die Zelle soll nach der Eingabe der Zahl in die Zelle a1 die Farbe wechseln, ohne das man das Makro startet.
Guten Rutsch schon mal und vielen Dank
Gruß Bernd
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk
Geschrieben am: 31.12.2006 10:55:00
Hallo Bernd,
Menüleiste - Format - Bedingte Formatierung. Den Rest schaffst du sicher alleine.
Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 11:08:01
Hallo Nepumuk,
das mit der bedingten Formatierung funktioniert einwandfrei. Ich würde das ganze aber gerne mit VBA realisieren, weil ich dann mehr Bedingungen setzen kann. Weiss jemand, wie man nach Eingabe in eine Zelle einen Makro automatisch aktiviert ?
Mfg Bernd
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk

Geschrieben am: 31.12.2006 11:12:48
Hallo Bernd,
klar, das wissen hier viele. Mit der Ereignisroutine "Worksheet_Change" im Klassenmodul der Tabelle. Wenn du dich mal im Archiv umsiehst Stichwort "Bedingte Formatierung mehr als drei Bedingungen" so wirst du garantiert mehr als 100 Hinweise finden.
Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 11:37:37
Hallo Nepumuk,
das ist eine sehr gute Idee. Ich habe in das Klassenmodul der Tabelle folgenden Code eingefügt, aber irgendwie ändert sich noch nichts in meiner Zelle.
Vielen Dank schon mal.
mfg Bernd
ClassModule: Planungsrechnung
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("B5")
If .Value < 60 Then
.Interior.ColorIndex = 3
Else
.Interior.ColorIndex = 5
End If
End With
End Sub

Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk
Geschrieben am: 31.12.2006 11:41:43
Hallo Bernd,
hast du ein Klassenmodul eingefügt, oder das immer vorhandene Modul der Tabelle benutzt? Ist die betreffende Zelle die Zelle B5 ?
Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd
Geschrieben am: 31.12.2006 11:50:36
Hallo Nepumuk,
zuerst habe ich ein Klassenmodul eingefügt und dann einen Bsp. Code aus dem Archiv dort eingefügt. Die Zelle reagiert aber bei einer Eingabe nicht.
Mfg Bernd
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk

Geschrieben am: 31.12.2006 12:01:22
Hallo Bernd,
du sollst kein Klassenmodul einfügen, sondern das der Tabelle benutzen. In Projektexplorer einen Doppelklick auf die Tabelle, oder von Excel aus einen Rechtsklick auf den entsprechenden Tabellenreiter - Code anzeigen. Das Klassenmodul kannst du wieder löschen. Rechtsklick in Projektexplorer - Entfernen. Die Frage, ob es sich um die Zelle B5 handelt ist noch offen. Denn so wie die Prozedur momentan aussieht, wird die Zelle bei jeder Eingabe in der Tabelle neu formatiert. Das ist Unsinn.
Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 12:15:00
Hallo Nepumuk,
wenn man den Code in der Tabelle einfügt, reagiert die Tabelle wie gewünscht. Echt Super.
Wofür braucht man denn die Klassenmodule ? Das Bsp. mit dem Klassenmodul war aus dem Forum.
Mfg Bernd
Titel: Farbänderung bei Änderung des Wahrheitswertes
Problem: Bei Änderung des Wahrheitswertes in Zelle B1 soll sich die Hintergrundfarbe dieser Zelle ändern. Die Bedingte Formatierung soll nicht eingesetzt werden.
Lösung: Geben Sie den Ereigniscode in das Klassenmodul des Arbeitsblattes ein.
ClassModule: Tabelle1
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("B1")
If .Value = True Then
.Interior.ColorIndex = 34
Else
.Interior.ColorIndex = 36
End If
End With
End Sub

Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk

Geschrieben am: 31.12.2006 12:25:05
Hallo Bernd,
Da steht es doch:
Geben Sie den Ereigniscode in das Klassenmodul des Arbeitsblattes ein.
Klassenmodule werden benötigt, um eine virtuelle Klasse zu erstellen. Das sind Objekt die es eigentlich nicht gibt. Eine genauere Erklärung würde aber deine Kenntnissen etwas überfordern.
Jetzt weiß ich aber immer noch nicht, welche Zelle reagieren soll. :-(
Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 12:46:04
Hallo Nepumuk,
das hatte ich dann wohl falsch verstanden mit dem Klassenmodul. Die Zelle ändert sich jetzt je nach Zahleneingabe. Die Zelle B5 soll bei Zahleneingabe je nach Wert die Farbe ändern, was sie auch tut. Der Code ist noch nicht vollständig, unterscheidet die Bereiche aber richtig.
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("B5")
If .Value <= 150 And .Value >= 100 Then
.Interior.ColorIndex = 3
End If
If .Value <100 And .Value >= 90 Then
.Interior.ColorIndex = 8
End If
End With
End Sub

Vielen Dank noch mal, das hätte ich bis Ostern nicht hinbekommen.
Mfg Bernd
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd
Geschrieben am: 31.12.2006 12:54:29
Hallo Nepumuk,
da ist gerade noch ein Problem aufgetaucht, die Änderung der Zellfarbe funktioniert nicht mit einem Drehfeld.
Mfg Bernd
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk

Geschrieben am: 31.12.2006 13:08:27
Hallo Bernd,
das hättest du aber auch gleich schreiben können. Das hätte 10 sinnlose Postings gespart. Dann in einem Standardmodul:
Sub Drehfeld1_BeiÄnderung()
    With Range(ActiveSheet.Shapes("Drehfeld 1").OLEFormat.Object.LinkedCell)
        If .Value <= 150 And .Value >= 100 Then
            .Interior.ColorIndex = 3
        ElseIf .Value < 100 And .Value >= 90 Then
            .Interior.ColorIndex = 8
        End If
    End With
End Sub

Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 13:26:53
Hallo Nepumuk,
für mich war das sehr lehrreich und sicherlich nicht sinnlos. Das Makro für das Drehfeld hängt noch, weil er das Element mit dem angegebenen Namen nicht finden kann. Das Drehfeld habe ich aus der Symbolleiste Formular eingefügt.
in der Zeile kommt die Fehlermeldung
With Range(ActiveSheet.Shapes("Drehfeld 1").OLEFormat.Object.LinkedCell)
Vielen Dank nochmals
Mfg Bernd
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 18:36:44
Hallo Nepumuk
Hier noch meine Lösung:
2 Ereignisse mit Spinbutton aus der Steuerelement Toolbox in Modul der Tabelle einfügen, dann funktioniert auch das andere Ergeignis mit dem Farbwechsel der Zelle.
Gutschen Rutsch ans Forum und danke für die Hilfe.
mfg Bernd
Änderung der Hintergrundfarbe abhängig vom Wert der Zelle b7
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$B$7" Then
If .Value <= 150 And .Value >= 100 Then
.Interior.ColorIndex = 8
ElseIf .Value < 100 And .Value >= 90 Then
.Interior.ColorIndex = 6
ElseIf .Value < 90 And .Value >= 85 Then
.Interior.ColorIndex = 5
End If
End If
End With
End Sub

Runterzählen der Zelle b7 mit spinbutton
Private Sub SpinButton1_SpinDown()
Range("b7") = Range("b7").Value - 1
End Sub

Hochzählen der Zelle b7 mit spinbutton
Private Sub SpinButton1_SpinUp()
Range("b7") = Range("b7").Value + 1
End Sub

Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Nepumuk

Geschrieben am: 31.12.2006 12:54:32
Hallo Bernd,
so ist's besser:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Address = "$B$5" Then
            If .Value <= 150 And .Value >= 100 Then
                .Interior.ColorIndex = 3
            ElseIf .Value < 100 And .Value >= 90 Then
                .Interior.ColorIndex = 8
            End If
        End If
    End With
End Sub

Gruß
Nepumuk
Bild

Betrifft: AW: Zelle abhängig von Wert formatieren
von: Bernd

Geschrieben am: 31.12.2006 13:07:31
Hallo Nepumuk,
Neues Problem:
Die Änderung der Zellfarbe mit dem entwickelten Makro funktioniert nicht mit einem Drehfeld, das den Zellinhalt von b5 verändert.
Mfg Bernd
 Bild
Excel-Beispiele zum Thema "Zelle abhängig von Wert formatieren"
Spalten bedingt summieren und Zellen formatieren Schriftart in Zeilen wechselweise fett/nicht-fett formatieren
Tagesliste eines Monats nach Eingaben aktualisieren und formatieren Tabelle gem. hinterlegten Zahlenformaten formatieren
UserForm-TextBox-Wert formatieren