Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einfärben einer Befehlsschaltfläche

Einfärben einer Befehlsschaltfläche
06.10.2008 15:55:00
KlausK
Guten Tag,
ich habe in einem Arbeitsblatt eine Reihe von Befehlsschaltflächen aus der Steuerelemente Toolsbox. Wie kann ich die gerade angeklickte Schaltfläche beispielsweise in rot einfärben. Beim Anklicken einer anderen Schaltfläche soll dann diese rot werden und die "vorherige" in den ursprünglichen Zustand zurück gehen.
Vielen Dank und liebe Grüße
Klaus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Über Klassenmodul
06.10.2008 16:51:35
Tino
Hallo,
da wahrscheinlich die Anzahl der Butten unbekannt ist, könne man dies über ein Klassenmodul erledigen.
Ein Beispiel, hier befinden sich die Butten auf der „Tabelle1“ diesen musst Du eventuell im Code anpassen.
Die Codeteile entsprechend in ein Modul, Klassenmodul und in DieseArbeitsmappe einbringen.
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Dim Button() As New Klasse1 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim A As Long 
With ThisWorkbook.Sheets("Tabelle1") 
       For A = 1 To .OLEObjects.Count 
         If TypeName(.OLEObjects(A).Object) = "CommandButton" Then 
             .OLEObjects(A).Object.BackColor = &H8000000F 
           
         End If 
       Next A 
End With 
ThisWorkbook.Save 
End Sub 
 
Private Sub Workbook_Open() 
Dim i As Integer, A As Integer 
With ThisWorkbook.Sheets("Tabelle1") 
       For A = 1 To .OLEObjects.Count 
         If TypeName(.OLEObjects(A).Object) = "CommandButton" Then 
          Redim Preserve Button(i) 
          Set Button(i).objButten = .OLEObjects(A).Object 
          i = i + 1 
         End If 
       Next A 
 
End With 
End Sub 

Modul Modul1

Option Explicit 
 
Public objMerkButten As CommandButton 

Klassenmodul Klasse1

Option Explicit 
 
Public WithEvents objButten As CommandButton 
 
Private Sub objButten_Click() 
If Not objMerkButten Is Nothing Then objMerkButten.BackColor = &H8000000F 
 objButten.BackColor = &HFF& 
Set objMerkButten = objButten 
End Sub 
 


Gruß Tino

www.VBA-Excel.de


Anzeige
Anmerkung
06.10.2008 16:53:00
Tino
Hallo,
getestet unter xl2003 u. 2007
Gruß Tino
verbesserte Version
06.10.2008 17:29:00
Tino
Hallo,
hab noch etwas rumgespielt und persönlich finde ich es so besser.
Beim öffnen werden die Button auf die Standartfarbe gesetzt und die Datei gespeichert.
Somit entfällt beim schließen der Datei, wenn in dieser keine Aktion durchgeführt wurde dass lästige speichern der Datei.
Damit kann auch beim schließen, dass speichern ignoriert werden, z. Bsp. wenn man in der Datei einen Fehler macht und man möchte die Datei schließen ohne diese zu speichern um den Fehler wieder zu Rückgängig zu machen.
Zudem habe ich noch eingefügt, sobald eine Zelle ausgewählt wird, wird der rote Button wieder auf die Standartfarbe gesetzt.
Kommst Du damit zurecht?
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Dim Button() As New Klasse1 
 
Private Sub Workbook_Open() 
Dim i As Integer, A As Integer 
With ThisWorkbook.Sheets("Tabelle1") 
        
       For A = 1 To .OLEObjects.Count 
         If TypeName(.OLEObjects(A).Object) = "CommandButton" Then 
          Redim Preserve Button(i) 
          Set Button(i).objButten = .OLEObjects(A).Object 
          .OLEObjects(A).Object.BackColor = &H8000000F 
          i = i + 1 
         End If 
       Next A 
 
End With 
ThisWorkbook.Save 
End Sub 

Microsoft Excel Objekt Tabelle1

Option Explicit 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Not objMerkButten Is Nothing Then objMerkButten.BackColor = &H8000000F 
End Sub 

Modul Modul1

Option Explicit 
 
Public objMerkButten As CommandButton 

Klassenmodul Klasse1

Option Explicit 
 
Public WithEvents objButten As CommandButton 
 
Private Sub objButten_Click() 
If Not objMerkButten Is Nothing Then objMerkButten.BackColor = &H8000000F 
 objButten.BackColor = &HFF& 
Set objMerkButten = objButten 
End Sub 
 


Gruß Tino

Anzeige
AW: verbesserte Version
06.10.2008 18:28:49
KlausK
Meine Güte, was soll ich sagen außer
1000 Dank lieber Tino, einfach nur perfekt, genau so sollte es laufen.
Einen schönen Tag noch
Klaus

302 Forumthreads zu ähnlichen Themen


Hallo Hans,
wenn ich die URLs richtig interpretiere, haben wir im Forum soeben die Zahl von 1 Million Beiträgen überschritten.
Herzlichen Glückwunsch zu dem Erfolg Deines "Babys"!
Gruß
Martin

Hallo Leute,
heute habe ich wieder mal ein einfaches Problem für Euch, an dem ich aber nicht weiter kommen:
Ich möchte die Arbeitsblätter in meiner Arbeitsmappe zählen. Das ist ja kein Problem (ThisWorkbook.sheets.count).
wenn das makro mehr als ein Arbeitsblatt zählt (also das Erge...

Hallo zusammen!
Ich habe da als blutiger Anfänger in VBA zwei Fragen:
1.) Wie kann ich in meiner Tabelle in jeder zweiten Spalte 4 leere Spalten einfügen lassen?
2.) Dann möchte ich unter den Inhalt der ersten fünf Spalten (A-E) den Inhalt der zweiten 5 Spalten (F-J) usw. In der grö...

Guten Morgen!
Ich hätte folgendes Problem: Ich erhalte automatisiert Exceltabellen, bei denen nicht alle Zellen einer Zeile gefüllt werden, wenn dort der Inhalt einer darüberliegenden Zeile stehen sollte. Zur Weiterverarbeitung muss ich aber diese Zellen mit den dazugehörigen Werten füllen....

Hallo,
google spuckt Zu "Excel" und "Häufigkeitslücken" lediglich 3 Treffer aus, die nicht gerade brauchbar für meine Aufgabe sind.
Ich muss für 3 Variablen eine Typisierung mit einer Häufigkeitslücke durchführen.
Hiermit bin ich fast gänzlich überfragt. Mit Quantilen hatte ich das...

Hallo zusammen,
ich habe eine lange Liste, in der in einer Spalte Daten stehen, wo ab und zu vorangehende Nullen nötig sind (mal eine - mal 2...etc.) - und manchmal auch keine.
Wie kann ich diese Zellen formatieren, das die vorangehenden "Nullen" nicht automatisch weggelassen werden?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige