Ho passato molto tempo a fare ricerche e ad imparare come funziona, dopo aver davvero incasinato i trigger dell'evento. Dato che c'erano così tante informazioni sparse, ho deciso di condividere ciò che ho scoperto funzionare tutto in un unico posto, passo dopo passo come segue:
1) Apri VBA Editor, sotto VBA Project (YourWorkBookName.xlsm) apri Microsoft Excel Object e seleziona il foglio a cui si riferirà l'evento di modifica.
2) La visualizzazione del codice predefinita è "Generale". Dall'elenco a discesa in alto al centro, seleziona "Foglio di lavoro".
3) Private Sub Worksheet_SelectionChange è già lì come dovrebbe essere, lascialo stare. Copia / Incolla il codice di Mike Rosenblum dall'alto e cambia il riferimento .Range alla cella per la quale stai cercando un cambiamento (B3, nel mio caso). Tuttavia, non posizionare ancora la tua Macro (ho rimosso la parola "Macro" dopo "Allora"):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
End Sub
oppure dall'elenco a discesa in alto a sinistra, seleziona "Modifica" e nello spazio tra Private Sub e End Sub, incolla If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
4) Nella riga dopo "Allora" disattiva gli eventi in modo che quando chiami la tua macro, non inneschi eventi e cerchi di eseguire nuovamente questo Worksheet_Change in un ciclo infinito che blocca Excel e / o altrimenti incasina tutto:
Application.EnableEvents = False
5) Chiama la tua macro
Call YourMacroName
6) Riattiva gli eventi in modo che la modifica successiva (e qualsiasi / tutti gli altri eventi) si attivi:
Application.EnableEvents = True
7) Termina il blocco If e il Sub:
End If
End Sub
L'intero codice:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B3")) Is Nothing Then
Application.EnableEvents = False
Call UpdateAndViewOnly
Application.EnableEvents = True
End If
End Sub
Ciò elimina l'attivazione / disattivazione degli eventi dai moduli, il che crea problemi e consente semplicemente di attivare la modifica, disattivare gli eventi, eseguire la macro e riattivare gli eventi.