Selbst gemachte Tripel-Buttons, wie abfragen bei 147 Stück

29/05/2008 - 15:54 von Thomas Unruh | Report spam
Hallo Leute,

ich habe über das Steuerelement Label Tripel-Radio-Buttuns gemacht
(War hier mal in der Gruppe).
Nun habe 147 Stück (7 x 21) davon auf der Seite und habe keine Lust
für alle den Code bei _Click zu wiederholen.

Gibt es eine einfacher Möglichkeit?


Hier der Code von einem:

Private Sub Label43_Click() 'hier die Zahl je nach Label àndern
Dim Knopf As MSForms.Label
'hier àndern
Set Knopf = Me.Label43 'hier die Zahl je nach Label àndern
rngAktuell = "J" & "29" 'hier je nach Spalte oder Reihe àndern.
Abstand ist +10 und +2

If Knopf = Chr$(163) Then
Knopf.Caption = "R" 'Winding2
Range(rngAktuell) = "ü" 'Harken = ü (wingdings)
ElseIf Knopf = "R" Then
Knopf.Caption = "Q"
Range(rngAktuell) = "û" 'x im Kasten = û
ElseIf Knopf = "Q" Then
Knopf.Caption = "©" 'komisches Quadrat
Range(rngAktuell).Value = "´" 'Fragezeichen
Else
Knopf.Caption = Chr$(163)
Range(rngAktuell).Value = ""
End If

End Sub

Danke im Vorraus!

Gruß
Thomas
 

Lesen sie die antworten

#1 stefan onken
29/05/2008 - 17:05 | Warnen spam
On 29 Mai, 15:54, Thomas Unruh wrote:
Hallo Leute,

ich habe über das Steuerelement Label Tripel-Radio-Buttuns gemacht
(War hier mal in der Gruppe).
Nun habe 147 Stück (7 x 21) davon auf der Seite und habe keine Lust
für alle den Code bei _Click zu wiederholen.

Gibt es eine einfacher Möglichkeit?

Hier der Code von einem:

Private Sub Label43_Click()             'hier die Zahl je nach Label àndern
Dim Knopf As MSForms.Label
  'hier àndern
  Set Knopf = Me.Label43                  'hier die Zahl je nach Label àndern
  rngAktuell = "J" & "29"               'hier je nach Spalte oder Reihe àndern.
Abstand ist +10 und +2

  If Knopf = Chr$(163) Then
     Knopf.Caption = "R"                      'Winding2
     Range(rngAktuell) = "ü"             'Harken = ü  (wingdings)
   ElseIf Knopf = "R" Then
     Knopf.Caption = "Q"
     Range(rngAktuell) = "û"      'x im Kasten = û
   ElseIf Knopf = "Q" Then
     Knopf.Caption = "©"                 'komisches Quadrat
     Range(rngAktuell).Value = "Ž"       'Fragezeichen
   Else
     Knopf.Caption = Chr$(163)
     Range(rngAktuell).Value = ""
   End If

End Sub

Danke im Vorraus!

Gruß
   Thomas



hallo Thomas,
möglich wàre sowas:

Private Sub Label43_Click()
LabelClick "Label43"
End Sub
Private Sub Label44_Click()
LabelClick "Label44"
End Sub

Sub LabelClick(LabelName)
Set Knopf = Me.Controls(LabelName)
'dein Code
End Sub

evtl musst du auch den Range für rngAktuell als Variable mit
übergeben.

Es gibt dann noch die Möglichkeit über ein Klassenmodul, dann braucht
man die Label_Click-Ereignisse nicht.
Gehe dazu im VBA-Editor auf Einfügen/Klassenmodul. Darein dieser Code

Public WithEvents lblGruppe As MSForms.Label
Private Sub lblGruppe_Click()
Set knopf = UserForm1.Controls(lblGruppe.Name)
MsgBox knopf.Name
'dein Code
End Sub

UserForm-Namen anpassen. Das Klassenmodul hat vermutlich den Namen
Klasse1, kann aber beliebig geàndert werden.
In das Modul des Userform:

Dim lbl(4) As New Klasse1
Private Sub UserForm_Activate()
For i = 1 To 4
Set lbl(i).lblGruppe = UserForm1.Controls("Label" & i)
Next i
End Sub

Den Index (hier 4) an deine Anzahl an Label anpassen.
Wenn du den Klassennamen ànderst, muss er hier auch geàndert werden.

Gruß
stefan

Ähnliche fragen