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

Forumthread: Steuerelement-Button Hintergrundfarbe ändern

Steuerelement-Button Hintergrundfarbe ändern
08.03.2017 15:13:05
Stefan
Hallo
Habe mehrere Steuerelement-Buttons (ActiveX). Jedes startet ein Makro.
Zu Beginn soll jedes Makro die Hintergrundfarben seines Steuerelemets auf rot und den Text auf "Bitte warten ..." setzen, und dann am Ende wieder zurück.
Geht das mit für alle Makros gleich lautenden Zeilen?
Derzeit verwende ich
"Buttonname1.BackColor = xlRed"
Aber das muss für jeden Button einzeln eingestellt werden.
LG, Stefan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Steuerelement-Button Hintergrundfarbe ändern
08.03.2017 16:02:52
Daniel
Hi
wenn du die Buttons in einer Userform einsetzt, könntest du ActiveControl anstelle des Buttonnamens verwenden und somit den Code für alle Buttons vereinheitlichen.
bei AcitveX-Controls direkt im Blatt geht das aber meines Wissens nach nicht.
ein möglicher Workaround für Buttons in einem Blatt wäre folgender.
1. verwende statt der ActiveX-Buttons einfache Grafikelemente und zwar Textfelder (Einfügen - Illustrationen - Formen Textfeld)
2. schreibe folgendes Makro in ein allgemeines Modul und weise es allen Textfeldern, die als Button verwendet werden sollen, über das Kontextmenü zu:

Sub DeinMakroFürAlleButtons()
Dim shp As Shape
Dim ButtonText As String
Dim ButtonFarbe As Long
Set shp = ActiveSheet.Shapes(Application.Caller)
ButtonText = shp.TextFrame2.TextRange.Text
ButtonFarbe = shp.Fill.ForeColor.RGB
shp.TextFrame2.TextRange.Text = "Bitte warten"
shp.Fill.ForeColor.RGB = vbRed
Application.ScreenUpdating = True
Select Case ButtonText
Case "Button 1"
'hier der Code für Button 1
Case "Button 2"
'hier der Code für Button 2
Case "Button 3"
'hier der Code für Button 3
Case Else
End Select
shp.TextFrame2.TextRange.Text = ButtonText
shp.Fill.ForeColor.RGB = ButtonFarbe
End Sub
die unterschiedlichen Codes fügst du dann im Select-Case-Teil ein.
hier fragst du ja ab, welchen Text der geklickte Button hat und führst dann den entsprechenden Codeteil aus (Buttontexte und Codes im Select-Case-Teil natürlich anpassen.
Gruß Daniel
Anzeige
AW: Steuerelement-Button Hintergrundfarbe ändern
10.03.2017 17:17:53
Barbaraa
Hallo Daniel
aus Zeitgründen kann ich Deine Antwort nicht verarbeiten. Ich glaube, dieses Thema fällt irgend wann mal in der Forumsliste unten raus und ich kann nicht mehr antworten.
Bleibt mir nur noch, das Thema für später zu bookmarken und mich mich vorläufig bei Dir für Deine Hilfe zu bedanken:
Danke!
Sei Dir sicher, ich werde es später verarbeiten.
LG, Stefan
Anzeige
Das würde über...
09.03.2017 08:37:35
Case
Hallo Stefan, :-)
... Klassenprogrammierung auch für ActiveX Buttons gehen. Brauchst Du ein Beispiel, oder möchtest Du nach Daniels Methode vorgehen?
Servus
Case

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Hintergrundfarbe von Steuerelement-Buttons in Excel ändern


Schritt-für-Schritt-Anleitung

Um die Hintergrundfarbe von Steuerelement-Buttons in Excel zu ändern, kannst Du die folgenden Schritte ausführen. Diese Anleitung bezieht sich auf ActiveX-Steuerelemente:

  1. Öffne das Excel-Dokument und gehe zu dem Arbeitsblatt, auf dem sich deine ActiveX-Buttons befinden.

  2. Wechsle in den Entwurfsmodus, indem Du auf die Schaltfläche "Entwurf" im Menü "Entwicklertools" klickst.

  3. Wähle den Button aus, dessen Farbe Du ändern möchtest.

  4. Öffne den VBA-Editor mit der Tastenkombination ALT + F11.

  5. Füge den folgenden Code in das Modul des jeweiligen Steuerelements ein:

    Private Sub Buttonname1_Click()
       Me.Buttonname1.BackColor = vbRed
       Me.Buttonname1.Caption = "Bitte warten ..."
       ' Dein Makro hier
       Me.Buttonname1.BackColor = xlNone ' Zurücksetzen
       Me.Buttonname1.Caption = "Originaltext"
    End Sub
  6. Wiederhole den Vorgang für alle weiteren Buttons, indem Du den Buttonnamen im Code entsprechend anpasst.

Falls Du den Code für mehrere Buttons vereinheitlichen möchtest, siehe den nächsten Abschnitt.


Häufige Fehler und Lösungen

  • Fehler: Buttonfarbe ändert sich nicht

    • Lösung: Stelle sicher, dass Du im Entwurfsmodus bist, wenn Du Änderungen vornimmst. Wenn der Code nicht funktioniert, überprüfe, ob der Buttonname korrekt ist.
  • Fehler: Makro wird nicht ausgeführt

    • Lösung: Achte darauf, dass Makros in deiner Excel-Anwendung aktiviert sind. Gehe zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" und aktiviere die Makros.

Alternative Methoden

Eine alternative Methode zur Änderung der Farbe von Formularsteuerelementen ist die Verwendung von Grafikelementen wie Textfeldern. Du kannst den folgenden Code in ein allgemeines Modul einfügen und allen Textfeldern zuweisen:

Sub DeinMakroFürAlleButtons()
    Dim shp As Shape
    Dim ButtonText As String
    Dim ButtonFarbe As Long
    Set shp = ActiveSheet.Shapes(Application.Caller)
    ButtonText = shp.TextFrame2.TextRange.Text
    ButtonFarbe = shp.Fill.ForeColor.RGB
    shp.TextFrame2.TextRange.Text = "Bitte warten"
    shp.Fill.ForeColor.RGB = vbRed
    ' Dein Makro hier
    shp.TextFrame2.TextRange.Text = ButtonText
    shp.Fill.ForeColor.RGB = ButtonFarbe
End Sub

Diese Methode ist besonders nützlich, wenn Du mehrere Buttons hast und den Code vereinheitlichen möchtest.


Praktische Beispiele

Beispiel 1: Ändern der Hintergrundfarbe eines ActiveX-Buttons

Private Sub CommandButton1_Click()
    Me.CommandButton1.BackColor = vbRed
    Me.CommandButton1.Caption = "Bitte warten ..."
    ' Führe hier dein Makro aus
    Me.CommandButton1.BackColor = xlNone
    Me.CommandButton1.Caption = "Start"
End Sub

Beispiel 2: Verwenden von Textfeldern als Buttons

Sub Button1_Click()
    Dim shp As Shape
    Set shp = ActiveSheet.Shapes("Textfeld 1")
    shp.Fill.ForeColor.RGB = vbRed
    shp.TextFrame2.TextRange.Text = "Bitte warten ..."
    ' Führe hier dein Makro aus
    shp.Fill.ForeColor.RGB = RGB(255, 255, 255) ' Zurücksetzen
    shp.TextFrame2.TextRange.Text = "Textfeld 1"
End Sub

Tipps für Profis

  • Verwende Klassenmodule: Um den Code für ActiveX-Buttons zu optimieren, kannst Du Klassenmodule nutzen. So kannst Du Eigenschaften und Methoden für mehrere Buttons zentralisieren.
  • Nutze ActiveControl: Bei der Programmierung in UserForms kannst Du ActiveControl verwenden, um den aktiven Button dynamisch zu steuern.

FAQ: Häufige Fragen

1. Wie kann ich die Farbe von Formularsteuerelementen ändern? Du kannst die Farbe von Formularsteuerelementen mit VBA ändern, indem Du den BackColor-Eigenschaft des Steuerelements einen RGB-Wert zuweist.

2. Kann ich die Hintergrundfarbe einer Schaltfläche während der Laufzeit ändern? Ja, Du kannst die Hintergrundfarbe einer Schaltfläche während der Ausführung eines Makros ändern, indem Du den entsprechenden VBA-Code in das Ereignis des Buttons einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige