Gestion évènement sur un groupe de contrôle créés dynamiquement
Bonjour,
Voila le contexte simplifiée:
dans un userform (UserForm1) j'ai une fram (Fram1) et un bouton (CommandButton1)
lorsque je clique sur CommandButton1 ca m'ajoute un label dans Fram1. Le label s'insère en dessous du dernier label ajouté.
j'aimerai faire en sorte que lorsque je clique sur un des labels ajouté dans Fram1 cela déclenche une action comme par exemple un MsgBox avec le "caption" du label.
j'ai fait exactement comme indiqué ici : http://silkyroad.developpez.com/VBA/...icEditor/#LV-A
code UserForm1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Option Explicit
Private Sub CommandButton1_Click()
Dim nblbl As Long
Dim Obj As Control
Dim C1 As Classe1
Dim i As Integer
Set Collect = New Collection
Set Obj = Frame1.Controls.Add("Forms.Label.1", "lbl" & Frame1.Controls.Count)
With Obj
.Name = "label" & (Frame1.Controls.Count)
.Caption = "test" & (Frame1.Controls.Count)
.Height = 12
.Top = (Frame1.Controls.Count - 1) * 12
End With
Frame1.ScrollHeight = Frame1.Controls.Count * 12
Set C1 = New Classe1
Set C1.monlbl = Obj
Collect.Add C1
End Sub |
code module standard :
Code:
1 2
| Option Explicit
Public Collect As Collection |
code module de classe :
Code:
1 2 3 4 5 6 7
| Option Explicit
Public WithEvents monlbl As MSForms.Label
Private Sub monlbl_Click()
'cet exemple affiche le nom et la valeur de l'objet cliqué
MsgBox (Me.monlbl.Name)
End Sub |
Mais le souci c'est que l'évènement ne fonctionne QUE sur le dernier label inséré, comment faire pour qu'il fonctionne sur l'ensemble des labels contenus dans le Frame1 ?
Merci d'avance pour votre aide, je précise que je débute en VBA...