Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Schaltfläche automatisch färben

Betrifft: Schaltfläche automatisch färben von: Tim
Geschrieben am: 17.09.2020 15:22:29

Hallo zusammen,


nach mehrstündiger Suche nach einer Lösung hoffe ich das mit jemand von euch weiterhelfen kann. Nun zu meinem Problem:

Und zwar möchte ich die Hintergrundfarbe einer Schaltfläche/Befehlsschaltfläche anhand eines Wertes (z. B. aus Zelle A1) automatisch anpassen, allerdings geht hier ein Abgleich voraus. Wenn ein Text oder die Ziffer 0 vorhanden ist, soll der Hintergrund der Schaltfläche/Befehlsschaltfläche weiterhin weiß bleiben. Bei einem Wert zwischen 1 und 50 Dunkelrot, zwischen 51 und 75 Rot und zwischen 76 und 99 Orange. Ausschließlich bei einem Wert von 100 soll der Hintergrund Grün gefärbt werden.

Gibt es hierzu eine Lösung?


Grüße

Betrifft: AW: Schaltfläche automatisch färben
von: Oberschlumpf
Geschrieben am: 17.09.2020 15:28:26

Hi,

zeig mal bitte per Upload eine Bsp-Excel-Datei mit weißer Befehlsschaltfläche.
Zusätzlich trag in die Tabelle ein - welches - Dunkelrot, Rot und Orange du bei den bestimmten Werten haben willst. Dazu kannst du ja den Zellenhintergrund jeweils mit deiner Wunschfarbe einstellen.

Ciao
Thorsten

Betrifft: AW: Schaltfläche automatisch färben
von: Daniel
Geschrieben am: 17.09.2020 15:45:09

Hi
vielleicht mit folgendem Workaround:

1. erstelle auf einem zweiten Tabellenblatt eine Zelle, die so groß ist wie deine geplante Schaltfläche und die auch den Schaltflächentext enthält.
Färbe diese Zelle über die Bedingte Formatierung mit den gewünschten Farben in Abhängigkeit.

2. kopiere diese Zelle und füge sie im Zielblatt als Verknüpfte Grafik ein

3. weise diesem Bild über das Kontextmenü das auszuführende makro aus einem allgemeinen Modul zu.

Gruß Daniel

Betrifft: AW: Schaltfläche automatisch färben
von: Tim
Geschrieben am: 17.09.2020 15:45:09

Hallo Thorsten,

hier die Musterdatei.

https://www.herber.de/bbs/user/140292.xlsm

Grüße

Betrifft: AW: Schaltfläche automatisch färben
von: Mullit
Geschrieben am: 17.09.2020 16:01:45

Hallo,

sowas geht mit einem Event, Code gehört zwingend in das Modul Deiner Tabelle1:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$8" Then
  With CommandButton1
        Select Case Target.Value
             Case 1 To 50: .BackColor = RGB(171, 38, 48)
             Case 51 To 75: .BackColor = vbRed
             Case 76 To 99: .BackColor = RGB(255, 127, 0)
             Case Is = 100: .BackColor = RGB(0, 205, 0)
             Case Else: If Target.Value = 0 Or Not IsNumeric(Target.Value) Then _
                   .BackColor = vbWhite
        End Select
   End With
End If
End Sub




VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit

Betrifft: AW: Schaltfläche automatisch färben
von: Tim
Geschrieben am: 18.09.2020 09:03:59

Hallo Mullit,

vielen Dank für deine Unterstützung.

In der Musterdatei funktioniert das hervorragend, in meiner richtigen Datei leider nicht. Ich denke ich habe auch schon eine mögliche Ursache identifiziert. Und zwar beziehe ich mich auf eine Zelle, in der mit folgender Formel eine Autosumme gebildet wird.

=WENNFEHLER(MITTELWERTWENN(H25:H34;"X";I25:I34);"")

Die manuelle Eingabe bringt das gewünschte Ziel, ein Bezug auf eine andere Zelle und die Hintergrundfarbe ändert sich nicht.

Gibt es hierfür auch eine Lösung?

Gruß Tim

Betrifft: AW: Schaltfläche automatisch färben
von: Daniel
Geschrieben am: 18.09.2020 09:11:31

naja, das Change-Event reagiert nur auf Eingaben des Anwenders in eine Zelle direkt und nicht auf das geänderte Ergebnis einer Neuberechnung einer Formel.
dafür brauchts dann schon das Calculate-Event.
oder du überwachst im Change-Event nicht die Zelle mit der Formel (J8) sondern die Zellen, die die Formel für die Berechnung verwendet, sofern dort nicht auch wieder Formeln stehen, sondern der Anwender direkt eingibt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("H25:I34")) is Nothing Then
  With CommandButton1
        Select Case Range("J8").Value
hast du dir auch mal meine Alternativlösung angeschaut?
(Zelle mit bedingter Formatierung verwenden anlegen, diese Zelle kopieren und als verknüpfte Grafik einfügen, dieser Grafik das makro zuweisen und somit als Button verwenden).

Gruß Daniel

Betrifft: AW: Schaltfläche automatisch färben
von: Tim
Geschrieben am: 18.09.2020 09:21:58

Hallo Daniel,

deine Nachricht hatte ich leider überlesen. Mit deiner Codeergänzung bin ich gerade zum Ziel gekommen. Besten Dank!

Gruß Tim

Betrifft: AW: Schaltfläche automatisch färben
von: Tim
Geschrieben am: 18.09.2020 10:33:57

Hi,

wie kann man es aufbauen, wenn mehrere Schaltflächen integriert werden müssen? Ich hatte versucht, eine zweite Schaltfläche einzubauen, aber sobald das der Fall ist, wird keine Formatierung mehr übernommen. So ist es aktuell hinterlegt:

Option Explicit
Private Sub Worksheet_Change1(ByVal Target As Range)
If Not Intersect(Target, Range("H25:I34")) Is Nothing Then
  With CommandButton1
        Select Case Range("I24").Value
             Case 0 To 50: .BackColor = RGB(171, 38, 48)
             Case 51 To 75: .BackColor = vbRed
             Case 76 To 99: .BackColor = RGB(255, 127, 0)
             Case Is = 100: .BackColor = RGB(0, 205, 0)
             Case Else: If Target.Value = 101 Or Not IsNumeric(Target.Value) Then _
                   .BackColor = vbWhite
        End Select
   End With
End If
End Sub
Option Explicit
Private Sub Worksheet_Change2(ByVal Target As Range)
If Not Intersect(Target, Range("N25:O34")) Is Nothing Then
  With CommandButton2
        Select Case Range("024").Value
             Case 0 To 50: .BackColor = RGB(171, 38, 48)
             Case 51 To 75: .BackColor = vbRed
             Case 76 To 99: .BackColor = RGB(255, 127, 0)
             Case Is = 100: .BackColor = RGB(0, 205, 0)
             Case Else: If Target.Value = 101 Or Not IsNumeric(Target.Value) Then _
                   .BackColor = vbWhite
        End Select
   End With
End If
End Sub


Betrifft: AW: Schaltfläche automatisch färben
von: Daniel
Geschrieben am: 18.09.2020 10:43:52

ich verweise da nochmal auf meine Alternativlösung.
die braucht für das Färben keine Programmierung.

ansonsten, es gibt immer nur ein Change-Event-Makro.
die Benennungen der Eventmakros dürfen auch nicht verändert werden, weil Excel nur an dieser Benennung erkennt, dass es ein Eventmakro ist.
mit veränderter Benennung wird aus dem Automatisch startenden Eventmakro ein ganz normales Makro, welches nur bei explizitem Aufruf ausgeführt wird.

du musst hier beide Abfragen in einem Makro unterbringen.
mit der vorhandenen Prüfung, welche Zellen geändert wurden, sollte das auch kein Problem sein.

Gruß Daniel

Betrifft: AW: Schaltfläche automatisch färben
von: GerdL
Geschrieben am: 18.09.2020 10:45:39

Moin
Private Sub Worksheet_Change1(ByVal Target As Range)

If Not Intersect(Target, Range("H25:I34")) Is Nothing Then
  With CommandButton1
        Select Case Range("I24").Value
             Case 0 To 50: .BackColor = RGB(171, 38, 48)
             Case 51 To 75: .BackColor = vbRed
             Case 76 To 99: .BackColor = RGB(255, 127, 0)
             Case Is = 100: .BackColor = RGB(0, 205, 0)
             Case Else: If Target.Value = 101 Or Not IsNumeric(Target.Value) Then _
                   .BackColor = vbWhite
        End Select
   End With
End If

If Not Intersect(Target, Range("N25:O34")) Is Nothing Then
  With CommandButton2
        Select Case Range("024").Value
             Case 0 To 50: .BackColor = RGB(171, 38, 48)
             Case 51 To 75: .BackColor = vbRed
             Case 76 To 99: .BackColor = RGB(255, 127, 0)
             Case Is = 100: .BackColor = RGB(0, 205, 0)
             Case Else: If Target.Value = 101 Or Not IsNumeric(Target.Value) Then _
                   .BackColor = vbWhite
        End Select
   End With
End If

End Sub

Gruß Gerd

Betrifft: AW: Schaltfläche automatisch färben
von: Tim
Geschrieben am: 18.09.2020 08:36:45

Hallo Mullit,

vielen Dank für deine Unterstützung.

In der Musterdatei funktioniert das hervorragend, in meiner richtigen Datei leider nicht. Ich denke ich habe auch schon eine mögliche Ursache identifiziert. Und zwar beziehe ich mich auf eine Zelle, in der mit folgender Formel eine Autosumme gebildet wird.

=WENNFEHLER(MITTELWERTWENN(H25:H34;"X";I25:I34);"")

Die manuelle Eingabe bringt das gewünschte Ziel, ein Bezug auf eine andere Zelle und die Hintergrundfarbe ändert sich nicht.

Gibt es hierfür auch eine Lösung?

Gruß Tim

Beiträge aus dem Excel-Forum zum Thema "Schaltfläche automatisch färben"