Suggerimenti per la velocità VBA di Excel 2016

Suggerimenti per la velocità VBA di Excel 2016

VBA per Excel 2016 è veloce, ma non è sempre abbastanza veloce. (I programmi per computer non sono mai abbastanza veloci.) Continua a leggere per scoprire alcuni esempi di programmazione che puoi utilizzare per velocizzare le tue macro.

Disattivazione dell'aggiornamento dello schermo

Quando si esegue una macro, è possibile sedersi e guardare tutte le azioni su schermo che si verificano nella macro. Sebbene ciò possa essere istruttivo, dopo aver fatto funzionare correttamente la macro, è spesso fastidioso e può rallentare considerevolmente le prestazioni della macro. Fortunatamente, puoi disabilitare l'aggiornamento dello schermo che normalmente si verifica quando esegui una macro. Per disattivare l'aggiornamento dello schermo, utilizza la seguente dichiarazione:

Application.ScreenUpdating = False

Se vuoi che l'utente veda cosa sta succedendo in qualsiasi momento durante la macro, usa la seguente istruzione per riattivare l'aggiornamento dello schermo:

Application.ScreenUpdating = True

Per dimostrare la differenza di velocità, esegui questa semplice macro, che riempie un intervallo di numeri:

Intervallo di riempimento secondario()
  Dim r come lungo, c come lungo
  Dim Numero come lungo
  Numero = 0
  Per r = da 1 a 50
    Per c = da 1 a 50
      Numero = Numero + 1
      Celle(r, c).Seleziona
      Celle(r, c).Valore = Numero
    Avanti c
  Avanti r
Fine sottotitolo

Vedi ogni cella selezionata e il valore inserito nelle celle. Ora inserisci la seguente istruzione all'inizio della procedura ed eseguila nuovamente:

Application.ScreenUpdating = False

L'intervallo viene riempito molto più velocemente e non vedrai il risultato finché la macro non sarà terminata e l'aggiornamento dello schermo non sarà (automaticamente) impostato su True.

Quando esegui il debug del codice, l'esecuzione del programma a volte termina da qualche parte nel mezzo senza che tu abbia riattivato l'aggiornamento dello schermo. Questo a volte fa sì che la finestra dell'applicazione di Excel non risponda completamente. La via d'uscita da questo stato congelato è semplice: torna al VBE ed esegui la seguente istruzione nella finestra Immediata:

Application.ScreenUpdating = True

Disattivazione del calcolo automatico

Se hai un foglio di lavoro con molte formule complesse, potresti scoprire che puoi velocizzare notevolmente le cose impostando la modalità di calcolo su manuale mentre la tua macro è in esecuzione. Al termine della macro, riportare la modalità di calcolo su automatico.

La seguente istruzione imposta la modalità di calcolo di Excel su manuale:

Application.Calculation = xlCalculationManual

Eseguire l'istruzione successiva per impostare la modalità di calcolo su automatico:

Applicazione.Calcolo = xlCalcoloAutomatico

Se il tuo codice utilizza celle con risultati di formule, disattivare il calcolo significa che le celle non verranno ricalcolate a meno che tu non dica esplicitamente a Excel di farlo!

Eliminare quei fastidiosi messaggi di avviso

Come sai, una macro può eseguire automaticamente una serie di azioni. In molti casi, puoi avviare una macro e poi uscire nella stanza delle pause mentre Excel fa le sue cose. Alcune operazioni di Excel, tuttavia, visualizzano messaggi che richiedono una risposta umana. Questi tipi di messaggi significano che non puoi lasciare Excel incustodito mentre esegue la tua macro, a meno che tu non conosca il trucco segreto.

Suggerimenti per la velocità VBA di Excel 2016

Puoi indicare a Excel di non visualizzare questi tipi di avvisi durante l'esecuzione di una macro.

Il trucco segreto per evitare questi messaggi di avviso è inserire la seguente istruzione VBA nella macro:

Application.DisplayAlerts = False

Excel esegue l'operazione predefinita per questi tipi di messaggi. In caso di eliminazione di un foglio, l'operazione predefinita è Elimina. Se non sei sicuro di quale sia l'operazione predefinita, esegui un test per vedere cosa succede.

Al termine della procedura, Excel reimposta automaticamente la proprietà DisplayAlerts su True. Se hai bisogno di riattivare gli avvisi prima che la procedura termini, usa questa dichiarazione:

Application.DisplayAlerts = True

Semplificare i riferimenti agli oggetti

Come probabilmente già saprai, i riferimenti agli oggetti possono diventare molto lunghi. Ad esempio, un riferimento completo a un oggetto Range potrebbe avere il seguente aspetto:

Cartelle di lavoro(“MyBook.xlsx”).Fogli di lavoro(“Foglio1”) _
  .Intervallo ("Tasso di interesse")

Se la tua macro utilizza spesso questo intervallo, potresti voler creare una variabile oggetto utilizzando il comando Imposta. Ad esempio, la seguente istruzione assegna questo oggetto Range a una variabile oggetto denominata Rate:

Imposta tasso = Cartelle di lavoro ("MyBook.xlsx") _
  .Fogli di lavoro(“Foglio1”).Intervallo(“Tasso di interesse”)

Dopo aver definito questa variabile oggetto, è possibile utilizzare la variabile Tasso anziché il lungo riferimento. Ad esempio, puoi modificare il valore della cella denominata InterestRate:

Tasso.Valore = .085

Questo è molto più facile da digitare rispetto alla seguente dichiarazione:

Cartelle di lavoro ("MyBook.xlsx"). Fogli di lavoro ("Foglio1"). _
  Intervallo ("Tasso di interesse") = .085

Oltre a semplificare la codifica, l'utilizzo di variabili oggetto velocizza notevolmente le macro.

Dichiarare i tipi di variabili

Di solito non devi preoccuparti del tipo di dati che assegni a una variabile. Excel gestisce tutti i dettagli per te dietro le quinte. Ad esempio, se si dispone di una variabile denominata MyVar, è possibile assegnare a tale variabile un numero di qualsiasi tipo. Puoi anche assegnargli una stringa di testo più avanti nella procedura.

Se vuoi che le tue procedure vengano eseguite il più velocemente possibile, indica a Excel quale tipo di dati verrà assegnato a ciascuna delle tue variabili. Questo è noto come dichiarazione del tipo di una variabile.

In generale, dovresti usare il tipo di dati che richiede il minor numero di byte ma può comunque gestire tutti i dati ad esso assegnati. Quando VBA lavora con i dati, la velocità di esecuzione dipende dal numero di byte che VBA ha a sua disposizione. In altre parole, minore è il numero di byte utilizzati dai dati, più veloce sarà l'accesso e la manipolazione dei dati da parte di VBA. Un'eccezione a ciò è il tipo di dati Integer. Se la velocità è critica, utilizzare invece il tipo di dati Long.

Se usi una variabile oggetto, puoi dichiarare la variabile come un particolare tipo di oggetto. Ecco un esempio:

Dim Rate come intervallo
Imposta tasso = Cartelle di lavoro ("MyBook.xlsx") _
  .Fogli di lavoro(“Foglio1”).Intervallo(“Tasso di interesse”)

Utilizzo della struttura With-End With

Hai bisogno di impostare un numero di proprietà per un oggetto? Il tuo codice viene eseguito più velocemente se utilizzi la struttura With-End With. Un ulteriore vantaggio è che il tuo codice potrebbe essere più facile da leggere.

Il codice seguente non utilizza With-End With:

Selection.HorizontalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
Selection.WrapText = True
Selezione.Orientamento = 0
Selection.ShrinkToFit = False
Selection.MergeCells = False

Ecco lo stesso codice, riscritto per usare With-End With:

Con selezione
  .HorizontalAlignment = xlCenter
  .VerticalAlignment = xlCenter
  .WrapText = True
  .Orientamento = 0
  .ShrinkToFit = False
  .MergeCells = False
Termina con

Quando usi With-End With, assicurati che ogni affermazione inizi con un punto.


Smartsheet 9.1.1

Smartsheet 9.1.1

Smartsheet è una piattaforma di lavoro dinamica che ti consente di gestire progetti, creare flussi di lavoro e collaborare con il tuo team.

SharePoint

SharePoint

SharePoint è un sistema di collaborazione basato sul Web che utilizza una varietà di applicazioni per flussi di lavoro, database di "elenco" e altri componenti Web, nonché funzionalità di sicurezza per fornire controllo ai gruppi aziendali che lavorano insieme.

Calendario perpetuo 1.0.38/1.0.36

Calendario perpetuo 1.0.38/1.0.36

Van Nien Calendar è un'applicazione per la visualizzazione del calendario sul tuo telefono, che ti aiuta a vedere rapidamente la data lunisolare sul tuo telefono, organizzando così il tuo lavoro importante.

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook è un'applicazione aziendale e di produttività sviluppata da Microsoft Corporation.

Fare clic su

Fare clic su

ClickUp è una delle piattaforme di produttività più apprezzate per qualsiasi azienda. Grandi aziende come Google, Booking.com, San Diego Padres e Uber utilizzano ClickUp per aumentare la produttività sul posto di lavoro.

Visualizzatore PDF-XChange 2.5.322.10

Visualizzatore PDF-XChange 2.5.322.10

Il PDF è diventato un formato comunemente utilizzato per leggere, creare e inviare documenti di testo. A sua volta, c'è stato un aumento del numero di programmi utilizzati per questo tipo di documentazione. PDF-XChange Viewer fa parte di un numero crescente di visualizzatori PDF.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice offre una suite completa di applicazioni Office che rivaleggiano con Microsoft 365, in particolare in Excel, PowerPoint e Word. Ti consente di gestire i tuoi progetti in modo più efficace e supporta diversi formati di file.

Scarica iTaxviewer 1.8.7

Scarica iTaxviewer 1.8.7

Il software iTaxViewer è il software di lettura di file XML più popolare oggi. Questo software è un'applicazione per la lettura delle dichiarazioni fiscali elettroniche in formato XML del Dipartimento Generale delle Imposte.

Lettore PDF Nitro

Lettore PDF Nitro

Nitro PDF Reader è un pratico editor PDF che copre tutte le attività di base che la maggior parte delle persone esegue ogni giorno con i documenti PDF.

Foxit Reader 12

Foxit Reader 12

Foxit Reader è principalmente un lettore PDF e consente anche di creare file PDF, firmarli, modificarli e aggiungere annotazioni. Funziona su sistemi operativi, ci sono plugin per vari programmi del pacchetto Microsoft Office.