Durante questo corso introdurrò Visual Basic versione 6.0. Visual Basic è un linguaggio di programmazione che ho più volte incrociato in passato, ma non ne avevo mai approfondito il funzionamento prima d’ora.
Spesso abbrevierò Visual Basic con VB.
Premessa
Non si tratta di un linguaggio che ritengo utile per la carriera di un programmatore, ma ne riconosco l’utilità ai fini didattici. Non a caso mi sono trovato a studiarlo, per la prima volta qualche settimana fa, mentre aiutavo un ragazzo a recuperare un debito scolastico.
Essendo inoltre lo stesso linguaggio utilizzato per automatizzare alcune funzioni di Excel, conoscerlo ci permette di capire il funzionamento di alcuni fogli di calcolo spesso utilizzati da molte aziende fedelissime all’ormai deprecato sistema di Microsoft.
Requisiti
Do per scontato che chi segue il corso abbia un’infarinatura riguardo il mondo dell’informatica, i linguaggi di programmazione e la logica alla base di essi.
- Programmazione strutturata
- Variabili e tipi di variabile
- Strutture di controllo (if, else, ecc…)
- Strutture iterative (while, for, ecc…)
Ambiente di sviluppo
Impostiamo il nostro ambiente di sviluppo. Durante il corso che ho tenuto, ho utilizzato Microsoft Excel per testare il codice scritto.
In alternativa si può utilizzare Visual Studio Community edition, ma è un po’ più complessa l’impostazione del progetto.
Infine, in preda alla disperazione sul mio portatile con Linux, sono riuscito a eseguire il codice con LibreOffice Calc. Se volete saperne di più scrivetemi.
Microsoft Excel
Per poter scrivere del codice VB è necessario abilitare la scheda Sviluppatori di Excel.
La scheda Sviluppo non viene visualizzata per impostazione predefinita, ma è possibile aggiungerla alla barra multifunzione.
- Nella barra dei menù cliccare su File
- Opzioni
- Personalizzare la barra multifunzione
- Nella finestra Personalizzazione della barra multifunzione tra le Schede principali selezionare la casella Sviluppo

Il menù sviluppatori si presenta nel seguente modo per le ultime versioni di Excel.

In alternativa click con il tasto destro sulla barra delle applicazioni e selezionare Personalizzazione della barra multifunzione. Da li, seguire il punto 4 dell’elenco precedente.

Impariamo le basi
Qui di seguito un riassunto dei comandi di base del linguaggio, se siete impazienti come me, e volete prima vederlo in azione e dopo capire come funziona, vi rimando alla sezione esercizi.
Sintassi
La sintassi è la base del linguaggio. Una volta che siamo certi di sapere cos’è una variabile, una struttura condizionale o iterativa, possiamo vedere come si traducono questi concetti in Visual Basic.
Variabili
La dichiarazione delle variabili in Visual Basic deve essere effettuata secondo la seguente forma:
Dim nomeVariabile as Tipo
Dove:
- Dim è una parte comune che indica che stiamo inizializzando una variabile
- nomeVariabile è il nome della variabile che stiamo dichiarando
- Tipo è il tipo di dato che andremo a salvare dentro la variabile. La lista completa dei tipi di variabili è disponibile qui sotto
Costanti
Le costanti sono un particolare tipo di dato che, una volta inizializzato, non potrà mai cambiare il suo valore durante l’esecuzione del programma. Proprio a causa di questa caratteristica devo assegnarle un valore in fase di dichiarazione.
Public Const NomeCostante as Tipo = valore
Dove:
- Public indica se l’ambito della variabile, può essere Public o Private
- Const indica che sto inizializzando una variabile
- NomeCostante è il nome della variabile che stiamo dichiarando
- Tipo è il tipo di dato che andremo a salvare dentro la variabile. La lista completa dei tipi di variabili è disponibile qui sotto
- = assegnazione di un valore alla costante
- valore è il valore da assegnare alla costante
Vettori
Spesso utilizzerò la parola array e vettore come sinonimi, sono esattamente la stessa cosa. Per dichiarare un vettore in Visual Basic devo definirne la dimensione in fase di creazione.
Dim serieVelocita(n) as Tipo
Dove:
- Dim è una parte comune che indica che stiamo inizializzando una variabile
- serieVelocita è il nome del vettore che stiamo assegnando
- () indicano che questa variabile è un vettore, cioè una variabile multidimensionale
- n indica la dimensione del vettore. In fase di dichiarazione si può scegliere se il vettore deve iniziare da 0 o da 1 scrivendo (0 to n) oppure (1 to n)
- Tipo è il tipo di dato che andremo a salvare dentro la variabile. La lista completa dei tipi di variabili è disponibile qui sotto
Gli array vengono creati vuoti e possono essere popolati successivamente iterando i tra i suoi valori con un ciclo. Vedi i cicli nel paragrafo successivo.
Public Const size as Integer = 3 Dim list(3) as Integer For ind = 0 To size list(ind) = InputBox("Insert value " & ind & ":") Next
oppure richiamando le singole aree di memoria dell’array:
Public Const size as Integer = 3 Dim list(3) as Integer list(0) = 10 list(1) = 20 list(2) = 50 list(3) = 5
Matrici
Le matrici non sono altro che array di array e si dichiarano nel seguente modo:
Dim matrix(5, 5) As Double
Selettori condizionali
If (condizione) Then ... ElseIf (condizione 2) Then ... Else ... End If
Loop iterativi
Il ciclo While è una tipologia di struttura iterativa che, prima di entrare nel ciclo, verifica la condizione. Se la condizione è vera esegue il ciclo finché questa condizione non diventa falsa.
While (condizione) ... End While
Il Do … While serve nei casi in cui vogliamo far eseguire il ciclo anche quando la condizione del While non è soddisfatta prima di entrare nel ciclo.
Do ... While(condizione)
Il ciclo For viene sempre eseguito, al contrario di quanto accadeva con il ciclo While.
For indice=0 To limite ... Next
Il ciclo For è composto da due elementi principali.
- indice ha la funzione di contatore. Dice al ciclo da quale numero iniziare a contare e viene incrementato a ogni iterazione
- limite dice al ciclo For quando fermarsi
Entrambe le variabili devono essere di tipo Integer.
Oggetti
Gli oggetti sono elementi dell’interfaccia di un programma Visual Basic. Tra gli oggetti ricordo i bottoni, select box, text box, ecc…
Ogni oggetto è caratterizzato da due principali componenti:
- Proprietà
- Caratterizzano l’oggetto
- Esempio: nel colore, dimensioni, nome, ecc…
- Eventi
- Riferiti a un particolare oggetto
- Allo scatenarsi di un evento, eseguono la porzione di codice presente all’interno dell’evento
- Esempio: Click, Change, ecc…
Non entriamo nel dettaglio di queste componenti, potete smanettare con il vostro ambiente di sviluppo dopo aver appreso le basi del VB.
I principali oggetti che utilizzeremo sono:
- MsgBox
- InputBox
- TextBox
- Label
- CommandButton
Esercizi
Dopo questa noiosa spiegazione delle varie componenti del linguaggio, iniziamo a scrivere un po’ di codice.
Hello World
Il nostro primo programma non farà altro che visualizzare una piccola finestra con scritto “Hello World!”. Ecco come:
- Aprite Excel
- Selezionate la scheda Sviluppatori
- Selezionare Visual Basic
- Una volta entrati nell’editor di VB, nell’area di sinistra avrete una struttura ad albero dei contenuti del file attuale. Cliccate li con il tasto destro e selezionate Inserisci e poi UserForm
- Comparirà una piccola finestra vuota e una barra con le icone degli oggetti disponibili. Cliccate su Button e trascinatelo nella finestra UserForm1 appena creata
- Fate doppio click sul bottone appena creato, verrete rimandati alla visualizzazione del codice sorgente dell’applicativo. Li scrivete in seguente codice:
Private Sub CommandButton1_Click() MsgBox ("Hello World!") End Sub
Per verificare il funzionamento, cliccate sul tastino Esegui in alto sulla barra delle funzioni. L’icona è un piccolo tastino “play” verde.

Divertiti? Andiamo avanti!
Hello Teodoro!
Per complicarci la vita andiamo ad aggiungere una Label, una TextBox e qualche variabile.
- Partendo sempre dal nostro form vuoto (vedi l’esercizio precedente se non ti ricordi come fare)
- Inseriamo una Label, entro la quale scriveremo “Inserisci il tuo nome:”
- Inseriamo una TextBox
- Inseriamo un Bottone
- Facciamo doppio click sul bottone e nella visualizzazione del codice scriviamo quanto segue:
Dim name As String Private Sub CommandButton1_Click() name = TextBox1.Text MsgBox ("Hello " & name & "'s World!") End Sub
Clicchiamo sul tastino Esegui. Dovremmo vedere il nostro programmino che ci chiederà di inserire il nostro nome. Scrivete Teodoro e premete sul CommandButton1.
Se tutto funziona dovrete vedere una piccola finestrella con scritto “Hello Teodoro’s World!”.
Ok, le parti più semplici le abbiamo fatte.
Mettiamoci tutto!
Aggiungiamo quindi un Array, una costante, un ciclo, qualche InputBox e la possibilità di andare a modificare il contenuto di una TextBox.
- Partendo sempre dal nostro form vuoto (vedi il primo esercizio se non ti ricordi come fare)
- Inseriamo una Label, dentro la quale scriveremo “Ecco il tuo array”
- Inseriamo una TextBox subito sotto (abilita l’opzione multi linea se vuoi visualizzare il contenuto su più linee.
- Inseriamo tre Bottoni
- Facciamo doppio click sul bottone e nella visualizzazione del codice scriviamo quanto segue:
Private Const size As Integer = 3 Dim ind As Integer Dim testoArray As String Dim list(size) As String Private Sub CommandButton1_Click() testoArray = "Array name: list" & vbCrLf & "Array content:" If list(0) = "" Then list(0) = "10" list(1) = "20" list(2) = "50" list(3) = "5" End If For ind = 0 To size testoArray = testoArray & vbCrLf & list(ind) Next TextBox2.Text = testoArray End Sub Private Sub CommandButton2_Click() For ind = 0 To size list(ind) = InputBox("Insert value " & ind & ":") Next End Sub Private Sub CommandButton3_Click() End End Sub
Appendice
Tipi di dati
Tipo | Dati contenuti | Memoria occupata | Intervallo valori |
Byte | Numeri interi | 1 byte | Da 0 a 255 |
Integer | Numeri interi | 2 | Da -32768 a 32767 |
Long | Numeri interi | 4 | Circa +/- 2 miliardi |
Single | Numeri decimali a singola precisione. | 4 | Da +/- 1,401298e-45 a 3,402823e48 |
Double | Numeri decimali a doppia precisione | 8 | Da +/- 4,94065645841247e-324 a 1,79769313486232e308 |
String | Stringhe alfanumeriche | 1 | Insieme da 0 a 255 caratteri |
Boolean | Valori logici | 2 | Valori logici |
Date | Date e ore | 8 | Da 1/1/100 al 12/31/9999 |
Currency | Numeri in formato valuta (4 decimali) | 8 | +/- 9e14 |
Variant | Tipo generico | 8 | Uno qualsiasi dei dati precedenti |
Altro
Esiste la possibilità di scrivere testi su più righe: vbCrLf stampa un carattere di fine riga e manda il testo a capo.