Hallo
Ich habe in einen Userform mehrere Button (ca. 20 Stück) welche als Status-Button dienen sollen.
Die Button können dabei 3 Farben annehmen, welche jeweils durch ein Button-Click verändert werden.
(Grüne Button/Rot/Gelb).
Ich habe das soweit mit einen Klassenmodul gelöst um nicht für alle Button eine Funktion zu definieren.
Jetzt habe ich 2 Probleme:
1. Der Status (Farbe) jedes einzelnen Button müsste in einem Sheet gespeichert werden, das sich nach dem öffnen
der Arbeitsmappe die einzelnen Button-Status (Farben) wieder laden und nicht alle wieder grün sind.
Wenn also beispielsweise 5 Button grün sind, 10 Gelb und 5 Rot und ich schließe die Excel, dann sollte nach dem Öffnen
genau diese Button wieder diese Farbe haben wie beim Schließen.
Ich könnte natürlich im Modul eine extra Button-Speicher-Funktion anlegen, wo die Farbe jedes Buttons einzeln abgespeichert wird
und dann wieder das gleiche als Lade-Funktion, aber das wäre glaube ich wenig elegant.
Hatte gedacht dies in der Schleife mit einzubinden die mein Click Ereignis abgerufen wird, das der veränderte Button in dem zugehörigen Sheet
gespeichert wird, jedoch muss beachtet werden, dass jeder Button eine Zelle bekommt.
Gibt es hier Lösungsansätze?
2. Weiterhin ist das Problem das die Funktion für wirklich alle Button Userform gilt. Lassen sich hier bestimmte Button rausnehmen oder
dies abhängig von Namen machen, das es nur für Button gilt die auch CommandButton1.... heißen?
Danke
Ich habe in einen Userform mehrere Button (ca. 20 Stück) welche als Status-Button dienen sollen.
Die Button können dabei 3 Farben annehmen, welche jeweils durch ein Button-Click verändert werden.
(Grüne Button/Rot/Gelb).
Ich habe das soweit mit einen Klassenmodul gelöst um nicht für alle Button eine Funktion zu definieren.
Jetzt habe ich 2 Probleme:
1. Der Status (Farbe) jedes einzelnen Button müsste in einem Sheet gespeichert werden, das sich nach dem öffnen
der Arbeitsmappe die einzelnen Button-Status (Farben) wieder laden und nicht alle wieder grün sind.
Wenn also beispielsweise 5 Button grün sind, 10 Gelb und 5 Rot und ich schließe die Excel, dann sollte nach dem Öffnen
genau diese Button wieder diese Farbe haben wie beim Schließen.
Ich könnte natürlich im Modul eine extra Button-Speicher-Funktion anlegen, wo die Farbe jedes Buttons einzeln abgespeichert wird
und dann wieder das gleiche als Lade-Funktion, aber das wäre glaube ich wenig elegant.
Hatte gedacht dies in der Schleife mit einzubinden die mein Click Ereignis abgerufen wird, das der veränderte Button in dem zugehörigen Sheet
gespeichert wird, jedoch muss beachtet werden, dass jeder Button eine Zelle bekommt.
Gibt es hier Lösungsansätze?
2. Weiterhin ist das Problem das die Funktion für wirklich alle Button Userform gilt. Lassen sich hier bestimmte Button rausnehmen oder
dies abhängig von Namen machen, das es nur für Button gilt die auch CommandButton1.... heißen?
Danke
Visual Basic-Quellcode
- 'Klassenmodul
- Option Explicit
- Public WithEvents cmd As MSForms.CommandButton
- Private Sub cmd_Click()
- If cmd.BackColor = &HC000& Then
- cmd.BackColor = &HFFFF&
- Else
- If cmd.BackColor = &HFFFF& Then
- cmd.BackColor = &HFF&
- Else
- cmd.BackColor = &HC000&
- End If
- End If
- End Sub
- 'Userform
- Private Sub UserForm_Initialize()
- 'Status Button ändern
- Dim ctrl As MSForms.Control
- Dim CmdBtn As clsCmdBtn
- Set colButtons = New Collection
- For Each ctrl In Me.Controls
- If TypeOf ctrl Is MSForms.CommandButton Then
- Set CmdBtn = New clsCmdBtn
- Set CmdBtn.cmd = ctrl
- colButtons.Add CmdBtn
- End If
- Next ctrl
- End Sub
- Private Sub UserForm_Terminate()
- Dim c As clsCmdBtn
- For Each c In colButtons
- Set c.cmd = Nothing
- Set c = Nothing
- Next c
- Set colButtons = Nothing
- End Sub