Un tutorial per principianti sulla scrittura di macro VBA in Excel (e perché dovresti imparare)

Un tutorial per principianti sulla scrittura di macro VBA in Excel (e perché dovresti imparare)

Le macro di Excel possono farti risparmiare un sacco di tempo automatizzare i processi di Excel che usi spesso . Ma le macro sono in realtà piuttosto limitate. È facile commettere un errore con lo strumento di registrazione e il processo di registrazione è imbarazzante.



L'uso di VBA per creare macro ti dà molta più potenza. Puoi dire a Excel esattamente cosa fare e come farlo. Puoi anche accedere a molte più funzioni e capacità. Se usi Excel regolarmente, vale la pena imparare a creare macro VBA.



Inizieremo con le basi.





Che cos'è VBA?

VBA è Visual Basic per le applicazioni , un linguaggio di programmazione che puoi usare in molte app Microsoft. Visual Basic è un linguaggio di programmazione e VBA è la versione specifica dell'applicazione. (Microsoft ha interrotto Visual Basic nel 2008, ma VBA sta ancora andando forte).

Fortunatamente per i non programmatori, VBA è molto semplice e l'interfaccia che usi per modificarlo offre molta assistenza. Molti dei comandi che utilizzerai suggeriranno pop-up e completamenti automatici, aiutandoti a far funzionare rapidamente il tuo script.



Tuttavia, VBA richiede un po' di tempo per abituarsi.

I vantaggi delle macro VBA in Excel

Se VBA è più difficile della registrazione di una macro, perché dovresti usarlo? La risposta breve è che ottieni molta più potenza dalle macro VBA.

Invece di fare clic sul foglio di calcolo e registrare tali clic, puoi accedere all'intera gamma di funzioni e capacità di Excel. Hai solo bisogno di sapere come usarli.

di quanto sale il tuo punteggio istantaneo

E una volta che ti senti più a tuo agio con VBA, puoi fare tutte le cose che potresti fare in una macro normale in molto meno tempo. I risultati saranno anche più prevedibili, come stai dicendo a Excel Esattamente Cosa fare. Non c'è affatto ambiguità.

Una volta creata la macro VBA, è facile salvarla e condividerla in modo che chiunque altro possa trarne vantaggio. Ciò è particolarmente utile quando lavori con molte persone che hanno bisogno di fare le stesse cose in Excel.

Diamo un'occhiata a una semplice macro VBA per vedere come funziona.

Un esempio di macro VBA in Excel

Diamo un'occhiata a una semplice macro. Il nostro foglio di calcolo contiene i nomi dei dipendenti, il numero del negozio in cui lavorano i dipendenti e le loro vendite trimestrali.

Questa macro aggiungerà le vendite trimestrali di ciascun negozio e scriverà quei totali nelle celle del foglio di calcolo (se non sei sicuro di come accedere alla finestra di dialogo VBA, controlla la nostra procedura dettagliata VBA qui ):

Sub StoreSales()
Dim Sum1 As Currency
Dim Sum2 As Currency
Dim Sum3 As Currency
Dim Sum4 As Currency
For Each Cell In Range('C2:C51')
Cell.Activate
If IsEmpty(Cell) Then Exit For
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

End Sub

Potrebbe sembrare lungo e complicato, ma lo analizzeremo in modo da poter vedere i singoli elementi e imparare un po' sulle basi di VBA.

Dichiarare il Sottotitolo

All'inizio del modulo, abbiamo 'Sub StoreSales()'. Questo definisce un nuovo sottotitolo chiamato StoreSales.

Puoi anche definire funzioni --- la differenza è che le funzioni possono restituire valori e i sottotitoli no (se hai familiarità con altri linguaggi di programmazione, i sottotitoli sono l'equivalente dei metodi). In questo caso, non abbiamo bisogno di restituire un valore, quindi stiamo usando un sub.

Alla fine del modulo, abbiamo 'End Sub', che indica a Excel che abbiamo finito con questa macro VBA.

Dichiarazione di variabili

Le prime righe di codice nel nostro script iniziano tutte con 'Dim'. Dim è il comando di VBA per dichiarare una variabile.

Quindi 'Dim Sum1' crea una nuova variabile chiamata 'Sum1.' Tuttavia, dobbiamo dire a Excel di che tipo di variabile si tratta. Dobbiamo scegliere un tipo di dati. Ci sono molti diversi tipi di dati in VBA --- puoi trovare il elenco completo nei documenti della guida di Microsoft .

Poiché la nostra macro VBA avrà a che fare con le valute, utilizzeremo il tipo di dati Valuta.

L'istruzione 'Dim Sum1 As Currency' indica a Excel di creare una nuova variabile Currency chiamata Sum1. Ogni variabile che dichiari deve avere un'istruzione 'As' per indicare a Excel il suo tipo.

Avvio di un ciclo For

I loop sono alcune delle cose più potenti che puoi creare in qualsiasi linguaggio di programmazione. Se non hai familiarità con i loop, dai un'occhiata a questa spiegazione dei loop Do-While . In questo esempio, stiamo usando un ciclo For, anch'esso trattato nell'articolo.

Ecco come appare il ciclo:

For Each Cell in Range('C2:C51')
[a bunch of stuff]
Next Cell

Questo dice a Excel di scorrere le celle nell'intervallo che abbiamo specificato. Abbiamo usato un Oggetto intervallo , che è un tipo specifico di oggetto in VBA. Quando lo usiamo in questo modo---Range('C2:C51')---dice a Excel che siamo interessati a quelle 50 celle.

'For Each' dice a Excel che faremo qualcosa con ogni cella nell'intervallo. 'Cella successiva' viene dopo tutto ciò che vogliamo fare e dice a Excel di avviare il ciclo dall'inizio (a partire dalla cella successiva).

Abbiamo anche questa dichiarazione: 'If IsEmpty(Cell) Then Exit For.'

Riesci a indovinare cosa fa?

Nota: In senso stretto, l'uso di un ciclo While potrebbe essere stata una scelta migliore . Tuttavia, per motivi di insegnamento, ho deciso di utilizzare un ciclo For con un'uscita.

il controller xbox one si spegne immediatamente

Dichiarazioni If-Then-Else

Il nucleo di questa particolare macro è nelle istruzioni If-Then-Else. Ecco la nostra sequenza di istruzioni condizionali:

If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If

Per la maggior parte, puoi probabilmente indovinare cosa fanno queste affermazioni. Tuttavia, potresti non avere familiarità con ActiveCell.Offset. 'ActiveCell.Offset(0, -1)' indica a Excel di guardare la cella che è una colonna a sinistra della cella attiva.

Nel nostro caso, questo sta dicendo a Excel di consultare la colonna del numero del negozio. Se Excel trova un 1 in questa colonna, prende il contenuto della cella attiva e lo aggiunge a Sum1. Se trova un 2, aggiunge il contenuto della cella attiva a Sum2. E così via.

Excel esamina tutte queste istruzioni in ordine. Se la dichiarazione condizionale è soddisfatto, completa l'istruzione Then. In caso contrario, si sposta nel successivo ElseIf. Se arriva fino alla fine e nessuna delle condizioni è stata soddisfatta, non intraprenderà alcuna azione.

La combinazione del ciclo e dei condizionali è ciò che guida questa macro. Il ciclo dice a Excel di passare attraverso ogni cella nella selezione e i condizionali gli dicono cosa fare con quella cella.

Scrivere i valori delle celle

Infine, possiamo scrivere i risultati dei nostri calcoli nelle celle. Ecco le linee che usiamo per farlo:

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

Con '.Value' e un segno di uguale, impostiamo ciascuna di quelle celle sul valore di una delle nostre variabili.

E questo è tutto! Diciamo a Excel che abbiamo finito di scrivere questo Sub con 'End Sub' e la macro VBA è completa.

Quando eseguiamo la macro con il macro pulsante nel Sviluppatore tab, otteniamo le nostre somme:

Mettere insieme gli elementi costitutivi di VBA in Excel

Quando guardi per la prima volta la macro VBA sopra, sembra piuttosto complessa. Ma dopo averlo scomposto nelle sue parti costitutive, la logica diventa chiara. Come qualsiasi linguaggio di scripting, ci vuole tempo per abituarsi alla sintassi di VBA.

Ma con la pratica, costruirai il tuo vocabolario VBA e sarai in grado di scrivere macro più velocemente, in modo più accurato e con molta più potenza di quanto potresti mai registrarle.

Quando rimani bloccato, eseguire una ricerca su Google è un modo rapido per ottenere risposte alle tue domande VBA. e Riferimento VBA Excel di Microsoft può essere utile se sei disposto a scavare attraverso di esso per una risposta tecnica.

Una volta che ti senti a tuo agio con le basi, puoi iniziare a utilizzare VBA per cose come invio di email da Excel , esportare le attività di Outlook e visualizzare le informazioni sul PC.

Windows 10 modalità ad alte prestazioni mancante
Condividere Condividere Tweet E-mail Ecco perché l'FBI ha emesso un avviso per il ransomware Hive

L'FBI ha emesso un avvertimento su un ceppo di ransomware particolarmente dannoso. Ecco perché devi prestare particolare attenzione al ransomware Hive.

Leggi Avanti
Argomenti correlati
  • Produttività
  • Foglio di calcolo
  • Microsoft Excel
  • Microsoft Office 2016
  • macro
  • Tutorial sulla programmazione
Circa l'autore Allora Albright(506 articoli pubblicati)

Dann è un consulente di marketing e strategia dei contenuti che aiuta le aziende a generare domanda e lead. Scrive anche su strategia e content marketing su dannalbright.com.

Altro da Dann Albright

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti