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:
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 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
Facendo Click su Label1 comapare il MsgBox come ci si aspetta.codice:Option Explicit Private oCtrEventi As New clsCtrEventi Private Sub CommandButton1_Click() Set oCtrEventi.crtLabel = Label1 End Sub
Il mio problema è che nell'evento Click di CommandButton1 vorrei scrivere una cosa di questo genere:
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?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
Perchè creando il controllo a Run-Time con OLEObjects.Add gli eventi non arrivano alla classe.
Grazie a tutti e complimenti per questo Forum.

Rispondi quotando