











Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
L'ambiente di programmazione in Visual Basic presente in Excel, con particolare attenzione alla creazione di procedure software e alla gestione degli oggetti grafici. Vengono illustrate le fasi di lavoro di una tipica sessione di programmazione e le proprietà degli oggetti. Viene inoltre presentato un esempio di sottoprogramma per il calcolo dell'ipotenusa utilizzando le funzioni del linguaggio Visual Basic. Il documento può essere utile per studenti di informatica e ingegneria che vogliono approfondire la programmazione in Visual Basic in Excel.
Tipologia: Schemi e mappe concettuali
1 / 19
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!












Il foglio elettronico Excel , così come gli altri prodotti Office di Microsoft, possiede un vero e proprio ambiente di programmazione in linguaggio Visual Basic , che consente di creare procedure software dalla fase di editing del testo sorgente fino all’esecuzione del programma. Per attivare questo ambiente si deve utilizzare la scheda Sviluppo , già utilizzata in precedenza per la registrazione delle macro. In particolare nel seguito useremo i pulsanti: Visual Basic nel gruppo Codice, per scrivere il testo sorgente della procedura. Inserisci nel gruppo Controlli per mettere sul foglio elettronico gli oggetti grafici (controlli). Modalità progettazione , nel gruppo Controlli , per attivare la creazione del codice oppure per uscire dalla progettazione e passare alla prova di esecuzione delle procedure. Proprietà , nel gruppo Controlli , per impostare le caratteristiche degli oggetti grafici. Le fasi di lavoro di una tipica sessione di programmazione in Visual Basic sono:
La scorciatoia da tastiera per passare velocemente dal foglio di Excel alla finestra del codice Visual Basic, e viceversa, è la combinazione dei tasti Alt + F. Un evento è tipicamente il clic dell’utente sull’oggetto ( Click ), ma può essere anche un doppio clic ( DblClick ) o un passaggio del mouse sopra di esso ( MouseMove ). In sostanza il codice specifica cosa deve fare il computer come risposta alle azioni dell’utente. I possibili eventi vengono visualizzati facendo clic sulla casella a destra nella finestra del codice (casella Routine ), accanto alla casella degli oggetti ( Oggetto ). Le istruzioni sono raggruppate tra la frase Sub e la frase End Sub , per indicare l’inizio e la fine del sottoprogramma ( Subroutine ) associato all’evento. L’intestazione del sottoprogramma contiene anche il nome dell’oggetto grafico (nell’esempio della figura, CommandButton1 ) e l’evento da gestire (nella figura, Click ). Oltre alla combinazione di tasti Alt+F11 , per passare dal foglio elettronico alla finestra del codice è possibile anche usare il pulsante Visual Basic nel gruppo Codice della scheda Sviluppo. Ogni oggetto possiede alcune proprietà che possono essere im- postate dal programmatore, se non vuole mantenere quelle prefissate ( proprietà di default ): esse riguardano la forma, il colore, il nome, la disposizione dell’oggetto. L’elenco delle proprietà di un oggetto è visualizzata facendo clic su di esso con il pulsante destro del mouse e scegliendo Proprietà dal menu di scelta rapida. Op- pure si può fare clic sul pulsante Proprietà nel gruppo Controlli della scheda Sviluppo. Facendo doppio clic su un oggetto, in modalità progettazione, si attiva la finestra del codice , nella quale si scrivono le istruzioni che devono essere eseguite quando accade un evento sull’oggetto.
Disegniamo un pulsante di comando (scegliendolo dalla casella dei Controlli ActiveX ) per consentire all’utente di attivare il codice. Facendo clic con il pulsante destro del mouse e scegliendo Proprietà dal menu di scelta rapida, è possibile cambiare la proprietà Caption , che rappresenta il testo che compare sopra il pulsante di comando: scriviamo per esempio Calcola ipotenusa. Codice Associamo ora al pulsante di comando il codice del sottoprogramma che deve essere eseguito quando l’utente fa un clic sul pulsante di comando. Per passare alla finestra del codice basta fare un doppio clic sul pulsante grafico oppure premere la combinazione dei tasti ALT+F11 dopo aver selezionato l’oggetto grafico. Il codice che realizza il calcolo dell’ipotenusa è il seguente: Private Sub CommandButton1_Click() ' dichiarazione delle variabili Dim c1, c2, ipot As Single ' acquisizione delle misure dei cateti c1 = Range("B1") c2 = Range("B2") ' calcolo dell ' ipotenusa ipot = Sqr (c1 ^ 2 + c2 ^ 2) ' visualizzazione del risultato Range("B3") = ipot End Sub Esso rappresenta il sottoprogramma ( Sub ) che viene eseguito quando l’utente provoca l’evento Click sopra il controllo grafico CommandButton. Vediamo il significato delle istruzioni precedenti: Dim (dimensione) elenca i nomi delle variabili utilizzate e specifica il tipo con la clausola As ; il tipo Single rappresenta i numeri reali in singola precisione. I tipi di dati utilizzabili in Visual Basic sono spiegati di seguito al progetto. Range (intervallo) specifica la cella o l’intervallo di celle del foglio elettronico che contengono i dati. Gli operatori aritmetici sono + , – , ***** , / per le quattro operazioni fondamentali (addizione, sottrazione, moltiplicazione e divisione), ^ per l’elevamento a potenza, ** per il quoziente della divisione intera, MOD per il resto della divisione intera. Sqr è la funzione predefinita del linguaggio che calcola la radice quadrata dell’espressione indicata tra le parentesi tonde. L’ assegnazione dei valori alle variabili o ad un intervallo (indicata con il segno = ) è sempre verso sinistra. Per esempio, l’istruzione c1 = Range("B1") indica che il valore della cella B1 del foglio elettronico è assegnato alla variabile c1 , mentre nell’istruzione Range("B3") = ipot il valore della variabile ipot è assegnato alla cella B3 del foglio elettronico.
Le frasi che iniziano con l’apice sono frasi di commento , che servono a documentare le istruzioni del programma. Si osservi anche che nel testo sorgente del programma le parole chiave del linguaggio sono scritte in azzurro e le frasi di commento sono in colore verde. Inoltre le eventuali righe di codice contenenti errori sono evidenziate in rosso. Proviamo ora il funzionamento del sottoprogramma. Torniamo al foglio elettronico (con la combinazione di tasti ALT+F11 oppure con un clic sul pulsante del foglio Excel nella barra delle applicazioni) e disattiviamo la Modalità progettazione facendo clic sull’apposito pulsante della scheda Sviluppo. Facendo ora clic sul pulsante di comando con la scritta Calcola ipotenusa , il sottoprogramma viene eseguito e nella cella B3 compare il valore calcolato. Il problema del calcolo dell’ipotenusa può anche essere risolto utilizzando le istruzioni e le funzioni del linguaggio Visual Basic che consentono l’input dei dati da tastiera e la visualizzazione dei dati attraverso le finestre di dialogo tipiche del sistema operativo Windows. Riscriviamo il sottoprogramma in questo modo: Private Sub CommandButton1_Click() ' dichiarazione delle variabili Dim c1, c2, ipot As Single ' acquisizione delle misure dei cateti c1 = InputBox ("Primo cateto", "Inserimento dati") c2 = InputBox ("Secondo cateto", "Inserimento dati") ' calcolo dell ' ipotenusa ipot = Sqr (c1 ^ 2 + c2 ^ 2) ' visualizzazione del risultato MsgBox ipot, vbOKCancel, "Ipotenusa" End Sub In esso InputBox indica la funzione predefinita che acquisisce un dato dall’utente e lo assegna alla variabile alla sinistra del segno =. I due parametri della funzione, indicati tra parentesi, rappresentano rispettivamente il messaggio inviato all’utente per sollecitare l’inserimento del dato ( prompt ) e il testo che compare nella barra del titolo nella finestra di dialogo. L’istruzione MsgBox indica la visualizzazione di un risultato o di un messaggio in una finestra di dialogo: il primo parametro indica la variabile da visualizzare, il secondo vbOKCancel specifica i tipi di pulsanti contenuti nella finestra di dialogo ( OK e Annulla ), il terzo indica il testo che compare nella barra del titolo nella finestra di dialogo. Il sottoprogramma viene eseguito, come nella versione precedente, facendo clic sul pulsante Calcola ipotenusa dopo aver disattivato la Modalità progettazione. In questa seconda versione si realizza pienamente l’interazione con l’utente attraverso l’interfaccia grafica e non si utilizzano le celle del foglio elettronico, ma solo oggetti grafici: pulsante di comando e finestre di dialogo.
Tuttavia, per una maggiore chiarezza nella programmazione e una rappresentazione più precisa del codice, è importante specificare, oltre al nome della variabile, anche il tipo con la clausola As (come). Per esempio: Dim V1 As Integer per dichiarare una variabile V1 di tipo numerico intero. I tipi di dato più usati sono: Integer , per variabili memorizzate come numeri interi a 2 byte nell’intervallo da – 32.768 a 32.767. Long , per interi di 4 byte, cioè numeri interi compresi tra – 2.147.483.648 e 2.147.483.647. Single , per numeri reali a virgola mobile e precisione singola a 32 bit (2 byte), compresi tra – 3,402823E38 e – 1,401298E–45 per valori negativi e tra 1,401298E–45 e 3,402823E38 per valori positivi. Double , per numeri a virgola mobile e doppia precisione a 64 bit (8 byte) compresi tra – 1,79769313486232E308 e – 4,94065645841247E– 324 per i valori negativi, tra 4,94065645841247E– 324 e 1,797693134862325E308 per i valori positivi. Date , per memorizzare date e orari come numeri reali. String , per dati composti da una sequenza di caratteri Boolean , per dati con solo due valori possibili, True (–1) o False (0). È possibile dichiarare diverse variabili in una singola istruzione: Dim Contatore As Integer, AreaCerchio As Double, Nome As String Dim Trovato As Boolean Le costanti sono dichiarate con la parola chiave Const in questo modo Const Max = 3 0 Si può, con più precisione, specificare anche il tipo di dato: Const Max As Integer = 3 0 Anche se il codice funziona correttamente senza dichiarare le variabili in modo esplicito con l’istruzione Dim , per programmare in modo ordinato è comunque opportuno e utile dichiarare le variabili in modo esplicito e con un tipo di dati specifico. La dichiarazione esplicita consente infatti di ridurre gli errori per conflitti di nome e gli errori di ortografia. Per evitare che le variabili vengano dichiarate in modo implicito, è possibile posizionare l’istruzione Option Explicit prima dei sottoprogrammi nella finestra del codice. Questa istruzione forza la dichiarazione esplicita di tutte le variabili nelle subroutine. Quando viene utilizzata l’istruzione Option Explicit e viene incontrato un nome di variabile non dichiarata o digitato in modo non corretto, verrà generato un errore di compilazione ( Variabile non definita ) quando si esegue il programma. Nell’ambiente di programmazione di Visual Basic è disponibile un’opzione che consente di includere automaticamente l’istruzione Option Explicit : dal menu Strumenti , scegliere Opzioni e nella scheda Editor mettere il segno di spunta in corrispondenza della scelta Dichiarazione di variabili obbligatoria.
Utilizzando il metodo Range , visto nel Progetto 1, è possibile riferirsi a una cella o a un intervallo di celle secondo le modalità utilizzate normalmente nel foglio elettronico, cioè, per esempio, “A1” (riferimento di cella tra virgolette) per indicare la cella che si trova nella colonna A e nella riga 1. Per esempio: Range("B:B") Colonna B Range("1:1") Riga 1 Range("A:D") Colonne comprese tra A e D Range("1:1 0 ") Righe comprese tra 1 e 10 Range("1:1,7:7,12:12") Righe 1, 7 e 12 Range("A:A,C:C,G:G") Colonne A, C e G Range("A7") Cella A Range("A1:C5") Celle comprese tra A1 e C Range("A1:C5,G1:H5") Selezione multipla di celle In alternativa, con la proprietà Cells è possibile utilizzare i numeri di indice per il riferimento alle celle, cioè possiamo riferirci a una singola cella identificandola con una coppia di indici che sono rispettivamente il numero di riga e il numero di colonna della cella. Per esempio Cells(3, 2) indica la cella che si trova sulla riga 3 e sulla colonna B (colonna 2). Gli indici sono ordinati, prima l’indice di riga e poi l’indice di colonna separati da una virgola. In sostanza Cells(3,2) corrisponde alla notazione Range (“B3”). La proprietà Cells risulta particolarmente efficace per l’esecuzione di cicli all’interno di un intervallo di celle, perché è possibile sostituire il numero di indice con una variabile, come vedremo negli esempi seguenti. Per gestire i riferimenti a intere righe o colonne, è possibile utilizzare rispettivamente la proprietà Rows o la proprietà Columns. Per esempio: Rows(1) Riga 1 Columns(1) Colonna 1 Columns("A") Colonna 1 Rows Tutte le righe del foglio di lavoro Columns Tutte le colonne del foglio di lavoro Per esempio, il sottoprogramma Sub Grassetto() Rows(1).Font.Bold = True End Sub evidenzia in grassetto ( Bold ) tutte le celle della prima riga del foglio elettronico, attraverso l’assegnazione del valore vero ( True ) alla proprietà Bold del tipo di carattere ( Font ) assegnato alle celle della riga 1.
La struttura di selezione viene rappresentata in Visual Basic secondo lo schema:
assegnato al controllo viene poi automaticamente utilizzato nel nome del sottoprogramma associato al controllo. Possiamo assegnare il valore Ordinamento alla proprietà Name. Codice In questo sottoprogramma useremo la notazione Cells per il riferimento alle celle, come spiegato nel precedente paragrafo. Option Explicit Private Sub Ordinamento_Click() ' dichiarazione delle variabili Dim Primo, Secondo As Integer Dim Minore, Maggiore As Integer ' assegnazione dei valori Primo = Cells(1, 2) Secondo = Cells(2, 2) ' controllo dei numeri If Primo > Secondo Then Minore = Secondo Maggiore = Primo Else Minore = Primo Maggiore = Secondo End If ' numeri ordinati Cells(1, 4) = Minore Cells(2, 4) = Maggiore End Sub
La struttura di ripetizione può essere rappresentata in modi diversi. La prima forma riguarda la ripetizione per falso o ripetizione post-condizionale , cioè la ripetizione nella quale il controllo viene fatto in coda, dopo aver eseguito le istruzioni del ciclo.
Questa struttura è tradotta in Visual Basic con le istruzioni DO … LOOP UNTIL. La sintassi generale è la seguente: DO istruzioni LOOP UNTIL condizione La ripetizione termina quando la condizione scritta vicino a Until diventa vera. La condizione può contenere anche gli operatori booleani AND, OR, NOT. Generare un numero casuale superiore a 40.
La ripetizione viene eseguita mentre la condizione scritta vicino a While si mantiene vera. All’inizio del programma alla variabile numero è assegnato il valore 0 per poter forzare l’esecuzione della ripetizione almeno una volta, effettuando il primo controllo della condizione alla partenza della ripetizione. Private Sub GeneraNumero_Click() ' dichiarazione delle variabili Dim numero As Integer numero = 0 ' ripetizione per vero Do While numero <= 4 0 ' generazione di un numero casuale ' compreso tra 1 e 1 00 numero = Int ( Rnd * 1 00 + 1) Loop Cells(1, 2) = numero End Sub Si noti che la condizione scritta vicino a While è l’opposto (cioè la negazione booleana) della condizione scritta vicino a Until nel programma precedente.
La ripetizione con contatore o iterazione enumerativa si rappresenta con la struttura FOR … NEXT. La sintassi generale della struttura è la seguente: FOR contatore = iniziale TO finale istruzioni NEXT Le istruzioni racchiuse tra For e Next sono ripetute tante volte quante occorrono per portare il contatore dal valore iniziale al valore finale incrementandolo di 1 ad ogni ripetizione. Visualizzare la tavola pitagorica in un foglio Excel.
Interfaccia utente Nel foglio di lavoro vengono inseriti due pulsanti di comando per visua-lizzare o per nascondere i numeri della tavola pitagorica da 1 a 9. Ai due pulsanti sono assegnate le seguenti proprietà: primo pulsante: proprietà Name e proprietà Caption = Visualizza; secondo pulsante: proprietà Name e proprietà Caption = Nascondi.
In questi casi è opportuno nascondere la griglia del foglio elettronico in questo modo: dal menu File scegliere Opzioni e poi Impostazioni avanzate : nella sezione Opzioni di visualizzazione per il foglio di calcolo , togliere il segno di spunta alla voce Mostra Griglia. In alternativa, nella scheda Layout di pagina , gruppo Opzioni del foglio , togliere il segno di spunta all’opzione Visualizza di Griglia. Il seguente progetto tratta un problema volutamente semplice, per consentire di fissare l’attenzione sugli strumenti che possono essere utilizzati per costruire l’interfaccia grafica. Calcolare l’area di un trapezio.
Sono stati poi inseriti alcuni elementi grafici scegliendoli dalla casella dei Controlli ActiveX:
La finestra comprende due liste: