In un normale foglio di lavoro (Worksheet) Foglio1, inserisco un CommandButton (CommandButton1) e una Label (Label1), questi due oggetti prelevati dalla barra "Strumenti di controllo".
Ora costruisco una classe banale chiamata clsCtrEventi, così definita:
codice:
Option Explicit
Private WithEvents mLabel As MSForms.Label
Public Property Set crtLabel(oCtr As Object)
Set mLabel = oCtr
End Property
Private Sub mLabel_Click()
MsgBox "Evento Click di " & mLabel.Name & " in classe clsCrtEventi."
End Sub
Nel codice di Foglio1 definisco e creo una nuova istanza della classe clsCtrEventi e nell'evento Click di CommandButton1 setto la propietà crtLabel, ecco il codice:
codice:
Option Explicit
Private oCtrEventi As New clsCtrEventi
Private Sub CommandButton1_Click()
Set oCtrEventi.crtLabel = Label1
End Sub
Facendo Click su Label1 comapare il MsgBox come ci si aspetta.
Il mio problema è che nell'evento Click di CommandButton1 vorrei scrivere una cosa di questo genere:
codice:
Private Sub CommandButton1_Click()
Dim oOle As OLEObject
Set oOle = Me.OLEObjects.Add(ClassType:="Forms.Label.1", _
Link:=False, DisplayAsIcon:=False)
Set oCtrEventi.crtLabel = oOle.Object
End Sub
ovvero vorrei creare i miei controlli a Run-Time e nello stesso tempo gestirne gli eventi, a parte utlizzare VBE per creare spezzoni di codice a Run-Time, secondo voi è possibile?
Perchè creando il controllo a Run-Time con OLEObjects.Add gli eventi non arrivano alla classe.
Grazie a tutti e complimenti per questo Forum.