Hallo,
wenn du dich in einer Userform befindest, kann man die Toggel-Buttons über eine Klasse abfangen.
Man erstellt ein Klasse (ist fast wie eine Userform blos halt ohne das Fenster), und in der Klasse wird dann eine Varible für ein Toggel-Button angelegt.
Und zwar so dass in der Klasse auch die Events wie "Click" ankommen.
Dann erstellt man ein Array mit dem Typ dieser Klasse, und weißt dann die Buttons zu.
also mach mal folgendes.
Klasse:
Erzeuge eine neue Klasse, das geht im Menü unter Einfügen->Klassenmodul.
Die neue Klasse benennst du im Eigenschaft-Fenster um in "clToggel".
Im Code-Fenster fügst du dann folgenden Code ein:
1 2 3 4 5 6 7 8 9 10 11 | Option Explicit
Public WithEvents tb As ToggleButton
Private Sub tb_Click()
If tb.Value = True Then
tb.BackColor = vbGreen
Else
tb.BackColor = &H8000000F
End If
End Sub
|
In der Userform muss dann noch folgender Code rein.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Private tb() As clToggel
Private Sub UserForm_Activate()
Dim i As Integer
For i = 0 To Me .Controls.Count - 1
If TypeName( Me .Controls.Item(i)) = "ToggleButton" Then
ReDim Preserve tb(i)
Set tb(i) = New clToggel
Set tb(i).tb = Me .Controls.Item(i)
End If
Next i
End Sub
|
Für jeden Toggel-Button in der Userform wird dann dass Array um ein Platz erweitert, und dem neuen Platz eine neu Instanz deiner Klasse zugewiesen.
Die neuen Instanz der Klasse hat ja eine Variable vom Typ Toggel-Button, und der wird dann einer der Toggel-Button der Userform zugewiesen.
Jezt ist quasi jeder Button mit einer Instanz einer Klasse verknüpft.
Somit must du den Code nicht selbst 50 mal tippen, sondern läßt ihn einfach von VBA selbst kopieren.
|