Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1012to1016
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

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

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige