Come eseguire una macro in Excel

Sebbene l'esecuzione di una macro in Excel non sia difficile, esistono molti modi per eseguirli. Alcuni modi hanno lo scopo di semplificare l'utilizzo delle macro, mentre altri modi possono modificare completamente il modo in cui un utente interagisce con la cartella di lavoro. In questo articolo tratteremo alcuni modi ovvi per eseguire macro come i controlli Elenco macro e pulsanti e alcuni modi più oscuri come VB Editor ed Eventi.

Primo: assicurati che le macro siano abilitate

Le funzionalità di sicurezza di Excel disabiliteranno le macro per impostazione predefinita. Quando si apre una cartella di lavoro abilitata per le macro, agli utenti viene in genere richiesto se desiderano abilitare le macro.

Se non riesci a eseguire le macro, prova a seguire queste istruzioni:

  • Salva la cartella di lavoro
  • Chiudi la cartella di lavoro, quindi riaprila
  • Quando la cartella di lavoro viene caricata, vedrai un Avviso di sicurezza pronta (nella foto sotto). Clic Abilitare il contenuto.

Esegui una macro dall'elenco delle macro

È possibile accedere a un elenco di macro dalla scheda Visualizza. Per visualizzare questo elenco:

  • Seleziona il Visualizzazione tab
  • Fare clic sul pulsante etichettato macro per visualizzare l'elenco Macro

  • Selezionare la macro che si desidera eseguire dall'elenco, quindi fare clic su Correre pulsante

È inoltre possibile visualizzare l'elenco delle macro in qualsiasi momento premendo ALT+F8.

Esegui una macro usando una scorciatoia da tastiera

Puoi assegnare una scorciatoia da tastiera a una macro che usi spesso, sotto forma di CTRL+ o CTRL+MAIUSC+. Per fare questo:

  • Richiama l'elenco delle macro (Visualizzazione > macroo ALT+F8)
  • Seleziona la macro a cui vuoi applicare una scorciatoia
  • Clic Opzioni… per mostrare il Opzioni macro sotto-finestra di dialogo

  • Nella casella di testo sotto Tasto di scelta rapida, digita una singola lettera e quindi fai clic su ok. Se tieni premuto il tasto MAIUSC mentre digiti la lettera, l'etichetta accanto alla casella mostrerà MAIUSC come parte della scorciatoia

NOTA: si consiglia vivamente di utilizzare SHIFT durante la creazione di un tasto di scelta rapida! Excel utilizza le scorciatoie CTRL+ per se stesso, ad es. CTRL+C per copiare o CTRL+V per salvare. Se crei una scorciatoia macro utilizzando queste o altre scorciatoie di Excel, sovrascriverai la scorciatoia di Excel finché non assegni di nuovo la scorciatoia alla macro.

Esegui una macro dall'editor VB

Le macro possono essere eseguite anche dall'editor VB. L'editor VB consente di rivedere il codice di una macro e apportare le modifiche desiderate prima di eseguirlo.

Per eseguire una macro nell'editor VB:

  • Apri l'editor VB (scheda Sviluppatore > Visual Basic o ALT+F11)

  • Nel Progetto finestra, fare doppio clic sul modulo contenente la macro che si desidera testare
  • Nella finestra del codice del modulo, posizionare il cursore ovunque sul codice della macro tra "Sub" e "End Sub"
  • Clicca il Correre pulsante sulla barra degli strumenti o premere la scorciatoia da tastiera F5

Esegui una macro usando un pulsante o una forma

È spesso utile avere un controllo nel foglio di lavoro su cui un utente può fare clic per eseguire una macro, come un controllo Button o una forma. Questo è molto più veloce per gli utenti finali rispetto all'apertura di elenchi di macro o alla ricerca del codice macro nell'editor VB.

Informazioni su come creare un pulsante o una forma cliccabile sono disponibili qui: Aggiungi un pulsante e assegna una macro in Excel.

Esegui automaticamente una macro utilizzando gli eventi in VBA

È possibile eseguire una macro quando accade qualcosa in Excel, ad esempio quando viene aperta una cartella di lavoro o quando viene modificato il valore di una cella. Questi sono chiamati Eventie puoi scrivere codice VBA per chiamare macro o eseguire altre operazioni.

Per scrivere il codice per un evento, dovrai utilizzare VB Editor. Ad esempio, per visualizzare gli eventi per la cartella di lavoro:

  • Apri l'editor VB (ALT+F11)
  • Fare doppio clic su Questa cartella di lavoro oggetto nell'editor VB Finestra del progetto
  • Scegli "Cartella di lavoro" dal menu a discesa in alto a sinistra della finestra del codice
  • Fare clic sul menu a discesa a destra per visualizzare un elenco di eventi

Di seguito è riportato un piccolo ma utile esempio di eventi di Excel da cui è possibile eseguire macro.

Cartella di lavoro_Apri()

L'evento Workbook_Open() viene generato quando viene aperta una cartella di lavoro. Se ricevi l'avviso di sicurezza dopo aver aperto una cartella di lavoro, questo evento si attiva dopo aver fatto clic su "Abilita contenuto".

12345 Cartella di lavoro secondaria privata_Apri()MsgBox "Cartella di lavoro aperta!"Fine sottotitolo

Workbook_BeforeClose (Annulla come booleano)

Workbook_BeforeClose() si attiva quando l'utente tenta di chiudere la cartella di lavoro. Succede prima che vengano eseguiti i controlli per vedere se la cartella di lavoro deve essere salvata.

Il Annulla Il parametro può essere impostato su True per interrompere la chiusura della cartella di lavoro.

123456789 Cartella di lavoro secondaria privata_BeforeClose (Annulla come booleano)If MsgBox("Sei sicuro?", vbYesNo + vbQuestion, "Close") = vbNo ThenAnnulla = VeroFinisci seFine sottotitolo

Worksheet_Change(ByVal Target As Range)

Worksheet_Change() si attiva quando il valore di una cella viene modificato, indipendentemente dal fatto che venga modificato da una macro, da un'operazione di copia/incolla o da un collegamento esterno. Tuttavia, non si attiva quando un valore viene ricalcolato tramite una formula.

Il Obbiettivo parametro rappresenta le celle il cui valore è stato modificato.

Se modifichi il valore di altre celle all'interno di questo evento, l'evento si attiverà di nuovo. Questo può causare un ciclo infinito. Se è necessario modificare i valori delle celle senza attivare questo evento, considerare l'impostazione Application.EnableEvents a falso prima, e poi reimpostarlo su Vero al termine della procedura dell'evento.

123456789 Private Sub Worksheet_Change (ByVal Target As Range)MsgBox "Celle cambiate: " & Target.AddressApplication.EnableEvents = FalseRange("A2").Value = Range("A2").Value + Target.Cells.CountApplication.EnableEvents = TrueFine sottotitolo

Worksheet_SelectionChange(ByVal Target As Range)

Questo evento si attiva ogni volta che vengono selezionate celle diverse con il reticolo di mira. Il parametro Target rappresenta le nuove celle che sono state selezionate.

Puoi attivare questo evento anche con il codice, ad esempio "Range("A1").Select". Come con Worksheet_Change(), dovresti fare attenzione a selezionare altre celle all'interno di questo evento, poiché puoi causare un ciclo infinito. Utilizzare Application.EnableEvents.

123456789 Foglio di lavoro secondario privato_SelectionChange (ByVal Target As Range)Se Target.Address = "$A$1" AlloraMsgBox "Cursore in posizione iniziale."Finisci seFine sottotitolo

Interrompi una macro in esecuzione

Una macro in esecuzione può essere interrotta premendo ESC o CTRL+INTERR. Per impostazione predefinita, una macro interrotta mostrerà la seguente finestra di dialogo:

Facendo clic su Fine fermerà la macro, mentre Continua lo riprenderà. Facendo clic su Debug aprirà la macro nell'editor VB e focalizzerà la riga di codice su cui l'esecuzione è stata sospesa. (All'interno dell'editor VB è possibile interrompere o riprendere la macro utilizzando i pulsanti Esegui o Termina sulla barra degli strumenti.)

Application.EnableCancelKey

Puoi disabilitare la possibilità di interrompere una macro con ESC o CTRL+INTERR impostando il Application.EnableCancelKey proprietà. Questa proprietà ha tre possibili valori:

  • xlInterrompi - questo è il valore predefinito, che fa in modo che Excel mostri la finestra di dialogo sopra
  • xlDisabilitato - rimuove la possibilità di interrompere una macro in esecuzione
  • xlErrorHandler - quando viene effettuato un tentativo di interruzione, viene generato un errore che può essere gestito nel codice

Ogni volta che l'esecuzione del codice si interrompe, Excel reimposta sempre il valore di Application.EnableCancelKey su xlInterrompi.

Una buona ragione per usare questa proprietà è la sicurezza. Ad esempio, se disponi di una macro che temporaneamente non protegge parti della tua cartella di lavoro, un utente potrebbe potenzialmente interrompere la macro subito dopo l'annullamento della protezione e ottenere l'accesso a contenuti che non avevi intenzione di avere. Impostando Application.EnableCancelKey, puoi disabilitare completamente la loro capacità di farlo o gestire la loro interruzione con grazia con un gestore di errori che protegge nuovamente la cartella di lavoro.

1234567891011 Sub UpdateBaseData(ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Unprotect "MyPassword"Nuova destinazione copia datiTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptFine sottotitolo

Forzare la chiusura di Excel con il Task Manager di Windows

Se la macro si è "bloccata" o Excel è diventato troppo occupato per riconoscere un tentativo di interruzione, potrebbe essere necessario forzare la chiusura di Excel stesso con il Gestore dei processi di Windows. (NOTA: se lo fai, potresti perdere qualsiasi lavoro non salvato e dover fare affidamento su una versione di ripristino automatico della tua cartella di lavoro.)

  • Apri il Task Manager direttamente usando CTRL+MAIUSC+ESC
  • Seleziona il "Processi"scheda"
  • Espandi l'elemento "Microsoft Excel" per mostrare tutte le cartelle di lavoro
  • Seleziona la cartella di lavoro che desideri chiudere, quindi fai clic su Ultimo compito nell'angolo in basso a destra

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave