Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schaltfläche automatisch färben

Schaltfläche automatisch färben
17.09.2020 15:22:29
Tim
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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schaltfläche automatisch färben
17.09.2020 15:28:26
Oberschlumpf
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
AW: Schaltfläche automatisch färben
17.09.2020 15:45:09
Daniel
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
Anzeige
AW: Schaltfläche automatisch färben
17.09.2020 16:01:45
Mullit
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
Anzeige
AW: Schaltfläche automatisch färben
18.09.2020 09:03:59
Tim
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
AW: Schaltfläche automatisch färben
18.09.2020 09:11:31
Daniel
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
Anzeige
AW: Schaltfläche automatisch färben
18.09.2020 09:21:58
Tim
Hallo Daniel,
deine Nachricht hatte ich leider überlesen. Mit deiner Codeergänzung bin ich gerade zum Ziel gekommen. Besten Dank!
Gruß Tim
AW: Schaltfläche automatisch färben
18.09.2020 10:33:57
Tim
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

Anzeige
AW: Schaltfläche automatisch färben
18.09.2020 10:43:52
Daniel
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
Anzeige
AW: Schaltfläche automatisch färben
18.09.2020 10:45:39
GerdL
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
Anzeige
AW: Schaltfläche automatisch färben
18.09.2020 08:36:45
Tim
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige