imparagratis
keyboard_arrow_right
keyboard_arrow_right
VBA (Visual Basic for Application) Excel

VBA (Visual Basic for Application) Excel

Microsoft Excel, per il quale ho realizzato un’apposita pagina con video tutorial sul suo utilizzo, è molto più efficiente di quello che possiamo ottenere con il suo classico utilizzo, infatti, programmando i fogli di lavoro con il linguaggio di programmazione VBA (che significa Visual Basic for Application), possiamo far fare ad Excel davvero quello che vogliamo.

L’uso del VBA con Excel permette di creare fogli di lavoro interattivi ed intelligenti, che ci velocizzano e aiutano il lavoro.

Solitamente non si usa programmare in VBA con Excel, perchè l’utente medio, anche in ambito lavorativo, si limita a creare formule, magari anche complesse, ma non sfrutta tutta la potenza di Microsoft Excel attraverso la programmazione in VBA.

Ho pensato quindi di proporre, tra i video tutorial, anche quelli inerenti il linguaggio VBA e di aggiungere qualche approfondimento testuale in questa pagina. Gli approfondimenti che trovate in questa pagina sono in continuo aggiornamento, perchè saranno aggiunti ogni volta che verrà pubblicato un nuovo video tutorial sull’argomento.

Per poter usare la programmazione in VBA, prima di tutto dobbiamo abilitare la scheda SVILUPPO.

Per abilitare la scheda SVILUPPO dobbiamo premere sul menu FILE

Menu File di Excel

poi dobbiamo premere su OPZIONI

Opzioni Excel

poi dobbiamo premere su PERSONALIZZAZIONE BARRA MULTIFUNZIONE

Modificare Barra multifunzioni

quindi mettere la spunta (cioè selezionare) SVILUPPO

Abilitare scheda sviluppo Excel

e premere sul pulsante OK. A questo punto, tra le varie schede troverete anche la scheda SVILUPPO

Scheda SVILUPPO di Excel

e premendola avremo le sue funzioni, tra cui VISUAL BASIC:

Menu Visual Basic di Excel

Il video tutorial che spiega meglio quello che ho detto lo trovate qui sotto:

Le istruzioni per scrivere del testo dentro una cella sono principalmente due: cellsrange

L’istruzione cells permette di scrivere in una cella indicando il numero di riga e di colonna. Quindi se vogliamo scrivere la parola “lavatrice” nella cella A1 scriveremo:

cells(1,1)=”lavatrice”

L’istruzione range permette di scrivere in una cella indicando il nome della cella. Quindi se vogliamo scrivere la parola “lavatrice” nella cella A1 scriveremo:

range(“A1″)=”lavatrice”

L’istruzione range però ha molte opzioni in più rispetto a cells, che ci permettono davvero di eseguire molte impostazioni sulla cella, eccone alcune:

range(“a1”).activate permette di attivare la cella A1

range(“a1″).AddComment=”questo è un commento” permette di aggiungere un commento alla cella

range(“a1”).Borders.Color=vbRed permette di impostare il colore del bordo della cella. Altri esempi di colori sono vbBlue, vbBlack, vbGreen, vbYellow, ecc…

range(“a1”).Borders.Weight=3 permette di modificare lo spessore del bordo

range(“a1”).Characters.Font.Bold=True permette di impostare il carattere in grassetto

range(“a1”).Characters.Font.Color=vbBlue permette di modificare il colore del testo. Altri esempi di colori sono vbBlue, vbBlack, vbGreen, vbYellow, ecc…

range(“a1”).Characters.Font.Italic=True permette di impostare il carattere in corsivo

range(“a1″).Characters.Font.Name=”Algerion” permette di cambiare il font del carattere

range(“a1”).Characters.Font.Size=44 permette di cambiare la dimensione del carattere

range(“a1”).Characters.Font.Underline=True permette di impostare il carattere sottolineato

range(“a1”).Clear permette di cancellare il contenuto e la formattazione della cella

range(“a1”).ColumnWidth=30 permette di modificare la larghezza della colonna

range(“a1”).Copy permette di eseguire il copia (per poi l’incolla) della cella

range(“a1”).PasteSpecial permette di eseguire l’incolla (di un copia) della cella

ActiveSheet.Name=”lavatrice” permette di rinominare il  foglio di lavoro

ActiveWorkbook.SaveAs FileName:=”c:\documenti\esempio.xlsx” permette di salvare il file con nome

ActiveWorkbook.Close permette di chiudere il file

Worksheets(“Foglio2”).Range(“a2”) = “ok” permette di scrivere la parola ok nella cella A2 del foglio Foglio2

Worksheets(2).Range(“a2”) = “ok” fa la stessa cosa dell’esempio sopra, solo che richiama il foglio di lavoro con un numero anzichè con il nome del foglio, perchè Excel assegna un numero progressivo ad ogni foglio a prescindere dal loro nome

Worksheets.Add aggiunge un nuovo foglio di lavoro

Worksheets.Count contiene il numero di foglio di lavoro attivo

 

LE VARIABILI

Le variabili sono come delle scatole dove possiamo inserire dei dati.
La definizione che ho detto non è per nulla corretta tecnicamente ma rende comprensibile l’uso che ne possiamo fare, perchè qui non intendo insegnare nulla a nessuno, ma solo far capire come sfruttare al meglio dei software che usiamo al metà della loro potenzialità.
Quindi in una variabile possiamo inserire un numero, una parola o delle operazioni.

Le variabili possono avere qualsiasi nome, anche se in realtà ci sono alcune regole che non tratteremo qui.
Ecco un esempio in cui metto dentro una variabile che ho chiamato alfa, la parola “ciao”

alfa=”ciao”

oppure una variabile che ho chiamato lavatrice in cui metto il numero 10:

lavatrice=10

 

L’istruzione FOR TO NEXT

L’istruzione FOR TO NEXT permette di far eseguire delle istruzioni ripetitive per un tot di volte.
Ad esempio:

for alfa = 1 to 10
cells(alfa,1)=alfa
next

questa istruzione permetterà di scrivere i numeri da 1 a 10 nella colonna A e nelle righe da 1 a 10.

 

L’istruzione IF THEN ELSE

L’istruzione IF viene usata per eseguire ragionamenti logici. Infatti IF deve essere tradotta nell’italiano SE.
Possiamo ad esempio verificare se nella cella A1 c’è la parola magazzino, e nel caso positivo, faremo scrivere nella cella B1 la parola Si:

if range(“a1″)=”magazzino” then
range(“b1″)=”Si”
end if

L’istruzione ELSE completa l’istruzione IF, poichè ELSE significa ALTRIMENTI. In questo modo possiamo migliorare l’esempio sopra in questo modo:

if range(“a1″)=”magazzino” then
range(“b1″)=”Si”
else
range(“b1″)=”No”
end if

con l’esempio sopra, se nella cella A1 viene trovata la parola magazzino allora nella cella B1 verrà scritto Si, altrimenti verrà scritto No

 

L’istruzione MsgBox

L’istruzione MsgBox è l’incontro del diminutivo delle parole MessagBox, ovvero “scatola messaggio”. Infatti questa istruzione mostrerà una finestra che sarà contenitore di messaggi.

Per mostrare un messaggio, cioè un finestra con messaggio, sullo schermo, si scrive semplicemente:

msgbox (“Questo è un messaggio”)

Questo mostrerà un semplice messaggio in una finestra di Excel. Se vogliamo, possiamo inserire anche un titolo alla finestra e delle icòne e dei pulsanti, però per poterli inserire, dovremo associare il MsgBox ad una variabile, così nella variabile verrà inserita la risposta che noi daremo.

Esempio di MsgBox:

msgbox (“Questo è un messaggio”,vbYesNo,”Titolo del messaggio”)

 

L’istruzione InputBox

L’istruzione InputBox è simile all’istruzione MsgBox, poichè mostra un messaggio in una finestra, ma in questo caso permette all’utente di scrivere qualcosa che potrà essere elaborato dal programma.

Per mostrare un messaggio, cioè un finestra con messaggio, sullo schermo, e ricevere l’input dell’utente, si scrive semplicemente:

variabile=inputbox (“Qual’è il tuo nome”,”INSERISCI”)

Questo mostrerà un semplice messaggio in una finestra di Excel con la richiesta di inserire il nome, e con titolo della finestra INSERISCI. Quando l’utente scriverà il proprio nome, ad esempio “Marco”, questo nome sarà inserito nella variabile.

 

Aprire un nuovo documento di Microsoft Word

Per aprire un nuovo documento di Microsoft Word direttamente da Excel, bisogna prima di tutto aggiungere un riferimento particolare. Per inserire questo riferimento, dovete trovarvi nella finestra di programmazione di VBA, quindi premete sul menu a discesa Strumenti e tra le opzioni che appaiono premete su Riferimenti.

Qui apparirà una finestra con un elenco infinito di opzioni. Cercate la seguente opzione Microsoft Word 15.0 Object Library e selezionatela, quindi premete su OK. (E’ possibile che voi abbiate la versione 14.0 o 16.0 o altra, questo dipende dalla versione di Office installata sul vostro computer)

Ora che abbiamo importato questo riferimento, possiamo usare le sue istruzioni per aprire Microsoft Word e creare un nuovo documento:

dim scrittura as new Word.Application
dim documento as Word.Document

set scrittura = CreateObject(“Word.Application”)
set documento = scrittura.Documents.Add
scrittura.visible = True

Per scrivere del testo all’interno del documento, è sufficiente usare l’istruzione scrittura.Selection.TypeText in questo modo:

dim scrittura as new Word.Application
dim documento as Word.Document

set scrittura = CreateObject(“Word.Application”)
set documento = scrittura.Documents.Add
scrittura.visible = True
scrittura.selection.TypeText (“Ciao da NiktorTheNat”)
scrittura.selection.TypeText(cells(1,1))
scrittura.selection.TypeText(range(“A2”))
scrittura.selection.TypeText(“La cella A1 contiene ” & cells(1,1))
scrittura.selection.TypeText(“Oggi ho imparato” & vbCrLf & “delle nuove istruzioni”)

Con le istruzioni sopra, abbiamo creato un nuovo documento di Word, quindi, esaminando in ordine cronologico le varie istruzioni selection.TypeText che ho inserito qui sopra, dentro Word verrà scritto:

  • nella prima riga Ciao da NiktorTheNat
  • nella seconda riga il contenuto della cella A1
  • nella terza riga il contenuto della cella A2
  • nella quarta riga la frase La cella A1 contiene e a seguire il contenuto della cella A1
  • nella quinta riga la frase Oggi ho imparato delle nuove istruzioni, ma suddivise su due righe, così:
    oggi ho imparato
    delle nuove istruzioni
    infatti il comando vbCrLf fa andare a capo, come se avessimo premuto il tasto ENTER della tastiera,