TOP

VBA-Lezione 11.1. Eventi della cartella di lavoro (Workbook Eventi)

Possiamo avere eventi della cartella di lavoro (come apertura, chiusura, ecc.) che possono essere trigger (interruttori) per il codice VBA.


Workbook_Open (Apertura del libro)

Per seguire le istruzioni all'apertura della cartella di lavoro, vai a ThisWorkbook e seleziona Workbook:

L'evento Workbook_Open verrà aggiunto per impostazione predefinita e si attiverà all'apertura della cartella di lavoro:

Private Sub Workbook_Open()

End Sub

Ad esempio, se aggiungiamo la seguente istruzione, la finestra di dialogo verrà visualizzata all'apertura della cartella di lavoro:

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (Evento prima della chiusura della cartella di lavoro)

Per eseguire le istruzioni prima di chiudere la cartella di lavoro, selezionare BeforeClose:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

La chiusura di una cartella di lavoro può essere annullata impostando la variabile "Cancel" su True.

Di seguito è riportato un esempio in cui all'utente viene chiesta conferma per chiudere la cartella di lavoro:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Se l'utente risponde con NO, allora la variabile Cancel avrà il valore TRUE (che annullerà la chiusura della cartella di lavoro)
     If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (Evento prima del salvataggio della cartella di lavoro)

Questo evento si verifica immediatamente prima del salvataggio della cartella di lavoro:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

Il salvataggio di un file può essere annullato impostando la variabile "Cancel" su True.

Workbook_BeforePrint (Evento prima della stampa del libro)

Questo evento si verifica prima che la cartella di lavoro venga stampata:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

La stampa del file può essere annullata impostando la variabile "Cancel" su True.

Workbook_AfterSave (Evento dopo il salvataggio della cartella di lavoro)

Questo evento si verifica immediatamente dopo il salvataggio della cartella di lavoro:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (evento cambio foglio di lavoro)

Questo evento si verifica ogni volta che si passa da un foglio di lavoro all'altro in una cartella di lavoro:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

In questo esempio, il nome del foglio attivo viene visualizzato nella finestra di dialogo:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     MsgBox "Name of Sheet : " & Sh.Name
End Sub

Workbook_SheetBeforeDoubleClick (evento doppio clic su una cella)

Questo evento si verifica quando si fa doppio clic su una cella del foglio di lavoro:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Ad esempio, possiamo utilizzare questo evento per aggiungere un colore di riempimento a una cella, a seconda del foglio selezionato:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     If Sh.Name = "Sheet1" Then
         Target.Interior.Color = RGB(255, 108, 0) 'Arancia
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'Verde
     End If
End Sub

Workbook_SheetBeforeRightClick (Evento prima del clic destro)

Questo evento si verifica prima del clic con il pulsante destro del mouse:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (evento di modifica del contenuto del foglio)

Questo evento si verifica ogni volta che cambia il contenuto del foglio di lavoro:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate (evento SheetCalculate)

Questo evento si verifica ogni volta che i dati in un foglio di lavoro vengono calcolati o ricalcolati:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (evento di modifica dell'intervallo di celle selezionato)

Questo evento si verifica ogni volta che cambia il contenuto dell'intervallo di celle selezionato nel foglio di calcolo:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

In questo esempio, il colore di riempimento cambia se la cella A1 è vuota:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     If Range("A1") = "" Then
         Target.Interior.Color = RGB(124, 255, 255) 'Blu
    End If
End Sub

Workbook_NewSheet (Aggiungi nuovo evento foglio)

Questo evento si verifica ogni volta che un nuovo foglio viene aggiunto alla cartella di lavoro:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (evento clic sul collegamento)

Questo evento si verifica quando viene cliccato un collegamento (ipertesto):

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub