Un modulo di classe potrebbe funzionare da gestore di eventi per un oggetto.
Proviamo un po'...
Innanzitutto, gestiamo l'evento direttamente da un foglio di Excel Codice del Foglio1
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Il foglio è stato cliccato col destro!"
Cancel = True
End Sub
E al click destro sul foglio si ottiene una MsgBox con il messaggio "Il foglio è stato cliccato col destro!".
Adesso facciamo con una classe: dopo aver cancellato il codice dalla finestra di codice del Foglio1, creo un modulo di classe e lo chiamo "gestore", con questo codice:
Dim WithEvents foglio As Worksheet
Private Sub Class_Initialize()
Set foglio = Sheets(1)
End Sub
Private Sub foglio_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Il foglio è stato cliccato col destro!"
Cancel = True
End Sub
E istanzio la classe da Modulo 1 con questo codice:
Dim mioGestore As gestore
Sub main()
Set mioGestore = New gestore
End Sub
Vado sul foglio, avvio main dalla finestra delle Macro, e quando vado a cliccare col destro sul foglio 1 ottengo lo stesso risultato, ossia una MsgBox con il messaggio "Il foglio è stato cliccato col destro!"
Nessun commento:
Posta un commento