1 Visual Basic

download 1 Visual Basic

of 17

Transcript of 1 Visual Basic

  • 7/25/2019 1 Visual Basic

    1/17

    1 Istituto Italiano Edizioni Atlas

    Programmazione in Excel con il linguaggio Visual Basic

    L'ambiente di programmazione

    Il foglio elettronico Excel, cos come gli altri prodotti Office di Microsoft, possiede un vero eproprio ambiente di programmazione in linguaggio Visual Basic, che consente di creare proce-

    dure software dalla fase di editing del testo sorgente fino allesecuzione del programma.Per attivare questo ambiente si deve utilizzare la scheda Sviluppo, gi utilizzata in precedenza perla registrazione delle macro.

    In particolare nel seguito useremo i pulsanti:

    Visual Basic nel gruppoCodice, per scrivere il testo sorgente della procedura.

    Inserisci nel gruppoControlli per mettere sul foglio elettronico gli oggetti grafici (controlli).

    Modalit progettazione, nel gruppo Controlli, per attivare la creazione del codiceoppure 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:

    fare clic sul pulsante Modalit progettazione;

    fare clic sul pulsante Inserisci e, nellelenco Controlli ActiveX, scegliere un

    controllo grafico, per esempio un Pulsante di comando (passando con il mousesopra gli oggetti si pu evidenziare il nome delloggetto).

    La casella dei controlli consente di scegliere tra i controlli grafici standard che si possono inserirein un progetto Visual Basic per costruire linterfaccia con lutente.Gli strumenti grafici sono: caselle di testo, etichette, pulsanti di comando, liste, ecc., cio tutti glioggetti tipici dellinterfaccia grafica di Windows.

    disegnare loggetto sul foglio Excel trascinando il mouse;

    fare doppio clic sulloggetto per attivare leditor del codice; nella finestra del codice che si apre scrivere le istruzioni in linguaggio Visual Basic; tornare al foglio Excel facendo clic sulla prima icona a sinistra nella barra degli strumenti della

    finestra del codice (con il logo di Excel ) oppure facendo clic sul pulsante del foglio Excel nellabarra delle applicazioni in basso sullo schermo;

    uscire dalla modalit progettazione facendo clic sul pulsante Modalit progettazione; provare lesecuzione del codice facendo clic sulloggetto grafico.

    La scorciatoia da tastiera per passare velocemente dal foglio di Excel alla f inestra del codice VisualBasic, e viceversa, la combinazione dei tasti Alt + F11.

  • 7/25/2019 1 Visual Basic

    2/17

    2 Istituto Italiano Edizioni Atlas

    Ogni oggetto possiede alcune propriet che possono essere im-postate dal programmatore, se non vuole mantenere quelleprefissate (propriet di default): esse riguardano la forma, il colore,il nome, la disposizione delloggetto. Lelenco delle propriet di unoggetto visualizzata facendo clic su di esso con il pulsante destrodel mouse e scegliendo Propriet dal menu di scelta rapida. Op-

    pure si pu fare clic sul pulsante Propriet nel gruppo Controllidella scheda Sviluppo.

    Facendo doppio clic su un oggetto, in modalit progettazione, siattiva la finestra del codice, nella quale si scrivono le istruzioni chedevono essere eseguite quando accade un evento sulloggetto.

    Un evento tipicamente il clic dellutente sulloggetto (Click), ma pu essere anche un doppio clic(DblClick) o un passaggio del mouse sopra di esso (MouseMove). In sostanza il codice specificacosa deve fare il computer come risposta alle azioni dellutente. I possibili eventi vengono visualizzatifacendo clic sulla casella a destra nella finestra del codice (casella Routine), accanto alla caselladegli oggetti (Oggetto).

    Le istruzioni sono raggruppate tra la frase Sub e la frase End Sub, per indicare linizio e la fine del

    sottoprogramma (Subroutine) associato allevento. Lintestazione del sottoprogramma contieneanche il nome delloggetto grafico (nellesempio della figura, CommandButton1) e levento dagestire (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.

    Si pu anche fare clic con il tasto destro del mouse sopra loggetto grafico e selezionare Visualizzacodice dal menu di scelta rapida. Dal codice si pu poi tornare alloggetto con la combinazionedi tasti Maiuscolo + F7.

  • 7/25/2019 1 Visual Basic

    3/17

    3 Istituto Italiano Edizioni Atlas

    Istruzioni in sequenza

    Il problema seguente presenta un esempio di codifica in Visual Basic della sequenza, cio lastruttura dellalgoritmo nella quale le istruzioni sono indicate una di seguito allaltra secondolordine con il quale devono essere eseguite dal computer.

    Progetto 1

    Calcolare lipotenusa di un triangolo rettangolo, noti i cateti.

    Dati di input: le misure dei due cateti, c1, c2 Dati di output: la misura dellipotenusa ipot. Risoluzione: dopo aver acquisito i valori di c1e c2, si calcola lipotenusa ipot con la formula

    ipot = c1 + c2

    algoritmo TriangoloRettangolo riga di intestazione

    variabili sezione dichiarativadichiara c1, c2,

    ipot come numeri realiinizio sezione esecutiva

    immetti c1immetti c2assegna ipot = c12+ c22

    scrivi ipotfine

    Interfaccia utente

    Definiamo la disposizione dei dati e degli oggetti grafici sul foglio elettronico.

    Disegniamo un pulsante di comando (scegliendolo dalla casella dei Controlli ActiveX) per con-sentire allutente di attivare il codice. Facendo clic con il pulsante destro del mouse e scegliendoProprietdal menu di scelta rapida, possibile cambiare la propriet Caption, che rappresentail testo che compare sopra il pulsante di comando: scriviamo per esempio Calcola ipotenusa.

  • 7/25/2019 1 Visual Basic

    4/17

    4 Istituto Italiano Edizioni Atlas

    Codice

    Associamo ora al pulsante di comando il codice del sottoprogramma che deve essere eseguitoquando lutente fa un clic sul pulsante di comando.Per passare alla finestra del codice basta fare un doppio clic sul pulsante grafico oppure premerela combinazione dei tasti ALT+F11dopo aver selezionato loggetto grafico.Il codice che realizza il calcolo dellipotenusa il seguente:

    PrivateSubCommandButton1_Click()'dichiarazione delle variabiliDimc1, c2, ipot AsSingle'acquisizione delle misure dei catetic1 = Range("B1")c2 = Range("B2")'calcolo dell'ipotenusaipot = Sqr(c1 ^ 2 + c2 ^ 2)'visualizzazione del risultatoRange("B3") = ipotEndSub

    Esso rappresenta il sottoprogramma (Sub) che viene eseguito quando lutente provoca leventoClicksopra il controllo grafico CommandButton1.

    Vediamo il significato delle istruzioni precedenti:

    Dim (dimensione) elenca i nomi delle variabili utilizzate e specif ica il tipo con la clausola As; il tipoSingle rappresenta i numeri reali in singola precisione. I tipi di dati utilizzabili in Visual Basic sonospiegati di seguito al progetto.

    Range (intervallo) specifica la cella o lintervallo di celle del foglio elettronico che contengono i dati.

    Gli operatori aritmetici sono +, , *,/per le quattro operazioni fondamentali (addizione, sottra-zione, moltiplicazione e divisione), ^per lelevamento a potenza,\per il quoziente della divisione

    intera, MODper il resto della divisione intera.Sqr la funzione predefinita del linguaggio che calcola la radice quadrata dellespressione indicatatra le parentesi tonde.

    Lassegnazione dei valori alle variabili o ad un intervallo (indicata con il segno =) sempre versosinistra.

    Per esempio, listruzione

    c1 = Range("B1")

    indica che il valore della cella B1 del foglio elettronico assegnato alla variabile c1, mentre

    nellistruzioneRange("B3") = ipot

    il valore della variabile ipot assegnato alla cella B3 del foglio elettronico.

    Le frasi che iniziano con lapice sono frasi di commento, che servono a documentare le istruzionidel programma.Si osservi anche che nel testo sorgente del programma le parole chiave del linguaggio sono scrittein azzurro e le frasi di commento sono in colore verde. Inoltre le eventuali righe di codicecontenenti errori sono evidenziate in rosso.

  • 7/25/2019 1 Visual Basic

    5/17

    5 Istituto Italiano Edizioni Atlas

    Proviamo ora il funzionamento del sottoprogramma. Torniamo al foglio elettronico (con la com-binazione di tasti ALT+F11 oppure con un clic sul pulsante del foglio Excel nella barra delleapplicazioni) e disattiviamo la Modalit progettazionefacendo clic sullapposito pulsante dellascheda Sviluppo.Facendo ora clic sul pulsante di comando con la scritta Calcola ipotenusa, il sottoprogramma vieneeseguito e nella cella B3 compare il valore calcolato.

    Il problema del calcolo dellipotenusa pu anche essere risolto utilizzando le istruzioni e le funzionidel linguaggio Visual Basic che consentono linput dei dati da tastiera e la visualizzazione dei datiattraverso le finestre di dialogo tipiche del sistema operativo Windows.Riscriviamo il sottoprogramma in questo modo:

    PrivateSubCommandButton1_Click()

    'dichiarazione delle variabili

    Dimc1, c2, ipot AsSingle

    '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

    MsgBoxipot, vbOKCancel, "Ipotenusa"

    EndSub

    In esso InputBox indica la funzione predefinita cheacquisisce un dato dallutente e lo assegna alla varia-bile alla sinistra del segno =. I due parametri dellafunzione, indicati tra parentesi, rappresentano rispet-

    tivamente il messaggio inviato allutente per sollecita-re linserimento del dato (prompt) e il testo che com-pare nella barra del titolo nella finestra di dialogo.

    ListruzioneMsgBox indica la visualizzazione di un risultato o di un messag-gio in una finestra di dialogo: il primo parametro indica la variabile davisualizzare, il secondo vbOKCancel specifica i tipi di pulsanti contenutinella finestra di dialogo (OKeAnnulla), il terzo indica il testo che comparenella barra del titolo nella finestra di dialogo.

    Il sottoprogramma viene eseguito, come nella versione precedente, facendo clic sul pulsanteCalcola ipotenusadopo aver disattivato la Modalit progettazione.

    In questa seconda versione si realizza pienamente linterazione con lutente attraverso linterfacciagrafica e non si utilizzano le celle del foglio elettronico, ma solo oggetti grafici: pulsante dicomando e finestre di dialogo.

    Dichiarazione di costanti e variabili

    Abbiamo visto nellesempio precedente che la dichiarazione delle variabili indicata con la parolachiave Dim. Se si scrivono solo i nomi delle variabili, senza specificare il tipo di dato che esserappresentano (numero intero o reale, oppure stringa), il tipo di dato viene determinato implici-tamente dal programma sulla base del dato che viene letto nelle celle del foglio elettronico.

  • 7/25/2019 1 Visual Basic

    6/17

    6 Istituto Italiano Edizioni Atlas

    Tuttavia, per una maggiore chiarezza nella programmazione e una rappresentazione pi pre-cisa del codice, importante specificare, oltre al nome della variabile, anche il tipo con laclausola 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 nellintervallo da 32.768 a32.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 tra3,402823E38 e 1,401298E45 per valori negativi e tra 1,401298E45 e 3,402823E38 pervalori positivi.Double, per numeri a virgola mobile e doppia precisione a 64 bit (8 byte) compresi tra

    1,79769313486232E308 e 4,94065645841247E324 per i valori negativi, tra4,94065645841247E324 e 1,797693134862325E308 per i valori positivi.Date, per memorizzare date e orari come numeri reali.String, per dati composti da una sequenza di caratteriBoolean, 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 modoConst Max = 30

    Si pu, con pi precisione, specificare anche il tipo di dato:

    Const Max As Integer = 30

    Anche se il codice funziona correttamente senza dichiarare le variabili in modo esplicito conlistruzione Dim, per programmare in modo ordinato comunque opportuno e utile dichiararele variabili in modo esplicito e con un tipo di dati specifico. La dichiarazione esplicita consenteinfatti di ridurre gli errori per conflitti di nome e gli errori di ortografia.

    Per evitare che le variabili vengano dichiarate in modo implicito, possibile posizionarelistruzione Option Explicit prima dei sottoprogrammi nella finestra del codice. Questa istru-zione forza la dichiarazione esplicita di tutte le variabili nelle subroutine. Quando vieneutilizzata listruzione Option Explicite viene incontrato un nome di variabile non dichiarata odigitato in modo non corretto, verr generato un errore di compilazione (Variabile non defi-nita) quando si esegue il programma.Nellambiente di programmazione di Visual Basic disponibile unopzione che consente diincludere automaticamente listruzione Option Explicit: dal menu Strumenti, scegliere Opzio-nie nella scheda Editormettere il segno di spunta in corrispondenza della scelta Dichiara-zione di variabili obbligatoria.

  • 7/25/2019 1 Visual Basic

    7/17

    7 Istituto Italiano Edizioni Atlas

    I riferimenti di cella

    Utilizzando il metodo Range, visto nel Progetto 1, possibile riferirsi a una cella o a un intervallodi 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 BRange("1:1") Riga 1Range("A:D") Colonne comprese tra A e DRange("1:10") Righe comprese tra 1 e 10Range("1:1,7:7,12:12") Righe 1, 7 e 12Range("A:A,C:C,G:G") Colonne A, C e GRange("A7") Cella A7Range("A1:C5") Celle comprese tra A1 e C5Range("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 sonorispettivamente 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 lindice di riga e poi lindice di colonna separati da una virgola.In sostanza Cells(3,2)corrisponde alla notazione Range (B3).La propriet Cellsrisulta particolarmente efficace per lesecuzione di cicli allinterno di un intervallo

    di celle, perch possibile sostituire il numero di indice con una variabile, come vedremo negliesempi seguenti.

    Per gestire i riferimenti a intere righe o colonne, possibile utilizzare rispettivamente la proprietRows o la propriet Columns.

    Per esempio:

    Rows(1) Riga 1Columns(1) Colonna 1Columns("A") Colonna 1Rows 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, attraversolassegnazione del valore vero (True) alla propriet Bolddel tipo di carattere (Font) assegnato allecelle della riga 1.

  • 7/25/2019 1 Visual Basic

    8/17

    8 Istituto Italiano Edizioni Atlas

    La struttura di selezione

    La struttura di selezioneviene rappresentata in Visual Basic secondo lo schema:

    IF condizione THENistruzione1

    ELSE

    istruzione2END IF

    Se la condizione vera, viene eseguita listruzione1, altrimenti viene eseguita listruzione2.Istruzione1e istruzione2possono indicare, come accade nella maggior parte dei casi, non una solaistruzione, ma un gruppo di istruzioni.La condizione unespressione booleana di cui viene valutata la verit: vengono quindi utilizzatii segni del confronto: , =, >=,

  • 7/25/2019 1 Visual Basic

    9/17

    9 Istituto Italiano Edizioni Atlas

    Interfaccia utente

    Disponiamo i numeri nel foglio elettronico e inseriamo un pulsante di comando per attivare ilcontrollo dei numeri. Nella colonna B lutente inserisce i due numeri, il programma dispone i duenumeri ordinati in modo crescente nella colonna D.Alla propriet Caption del pulsante di controllo assegnato il valore Ordina i numeri. ancheopportuno assegnare un nome al controllo, attraverso la propriet Name, per meglio identificarlo:

    questo risulta particolarmente utile quando i controlli sono pi di uno. Il nome assegnato al controlloviene poi automaticamente utilizzato nel nome del sottoprogramma associato al controllo.Possiamo assegnare il valore Ordinamentoalla propriet Name.

    Codice

    In questo sottoprogramma useremo la notazione Cellsper il riferimento alle celle, come spiegato

    nel precedente paragrafo.

    Option Explicit

    PrivateSubOrdinamento_Click()'dichiarazione delle variabiliDimPrimo, Secondo AsIntegerDimMinore, Maggiore AsInteger' assegnazione dei valoriPrimo = Cells(1, 2)Secondo = Cells(2, 2)' controllo dei numeriIfPrimo > Secondo Then Minore = Secondo Maggiore = PrimoElse Minore = Primo Maggiore = SecondoEndIf' numeri ordinatiCells(1, 4) = MinoreCells(2, 4) = MaggioreEndSub

  • 7/25/2019 1 Visual Basic

    10/17

    10 Istituto Italiano Edizioni Atlas

    Le strutture di ripetizione per falso e per vero

    La struttura di ripetizione pu essere rappresentata in modi diversi. La prima forma riguarda laripetizione per falsoo ripetizione post-condizionale, cio la ripetizione nella quale il controlloviene 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

    istruzioniLOOP UNTIL condizione

    La ripetizione termina quando la condizione scritta vicino a Untildiventa vera.La condizione pu contenere anche gli operatori booleani AND, OR, NOT.

    Progetto 3

    Generare un numero casuale superiore a 40.

    Dato di output: numero generato.

    Risoluzione: attraverso la funzione predefinita per la generazione dei numeri casuali (funzioneper la generazione di numeri randomo funzione randomizzatrice), il programma genera unnumero casuale compreso tra 1 e 100 e lo scrive in una cella del foglio di calcolo; loperazioneviene ripetuta finch il numero generato diventa maggiore di 40.

    algoritmo NumeroCasuale riga di intestazione

    variabili sezione dichiarativadichiara Numero come numero intero

    inizio sezione esecutiva

    esegui

    genera Numero

    ripeti finch Numero > 40

    scrivi Numero

    fine

    Si osservi che la generazione di numeri casuali compresi in un intervallo uno strumento

    importante nella programmazione per testare le funzionalit di un programma e la correttezza delcodice, ma anche per disporre di dati numerici di prova senza la necessit di inserimenti datastiera.

    Interfaccia utente

    Nel foglio viene predisposta la cella per contenere il numero generato e un pulsante di comandoper avviare la procedura di calcolo.

  • 7/25/2019 1 Visual Basic

    11/17

    11 Istituto Italiano Edizioni Atlas

    Codice

    Il programma utilizza la funzione predefinitaRnd (random) del linguaggio Visual Basic, che generanumeri reali casuali compresi tra 0 e 1 (1 escluso). Moltiplicando la funzione Rnd per 100, siottengono quindi numeri casuali compresi tra 0 e 99.Per ottenere numeri casuali compresi tra 1 e 100 si aggiunge 1:

    Rnd * 100 + 1.

    Per ottenere poi numeri interi si applica alla formula la funzione predefinita Intdel linguaggioVisual Basic che restituisce la parte intera di un numero reale:

    Int(Rnd * 100 + 1)

    La ripetizione, che genera i numeri e li scrive nella cella B1, si arresta quando il numero generatodiventa superiore a 40.

    Private SubGeneraNumero_Click()'dichiarazione delle variabiliDimnumero AsInteger'ripetizione per falsoDo 'generazione di un numero casuale 'compreso tra 1 e 100 numero = Int(Rnd* 100+ 1)LoopUntilnumero > 40Cells(1, 2) = numeroEndSub

    Lo stesso problema pu essere risolto in forma equivalente usando la ripetizione per verooripetizione con controllo in testa, che in Visual Basic rappresentata con la struttura DOWHILE ... LOOP.

    La sintassi generale della struttura la seguente:

    DO WHILE condizioneistruzioni

    LOOP

  • 7/25/2019 1 Visual Basic

    12/17

    12 Istituto Italiano Edizioni Atlas

    La ripetizione viene eseguita mentre la condizione scritta vicino a Whilesi mantiene vera. Allinizio delprogramma alla variabile numero assegnato il valore 0 per poter forzare lesecuzione della ripetizio-ne almeno una volta, effettuando il primo controllo della condizione alla partenza della ripetizione.

    PrivateSubGeneraNumero_Click()'dichiarazione delle variabiliDimnumero AsIntegernumero = 0'ripetizione per veroDoWhilenumero

  • 7/25/2019 1 Visual Basic

    13/17

    13 Istituto Italiano Edizioni Atlas

    Interfaccia utente

    Nel foglio di lavoro vengono inseriti due pulsanti di comando per visua-lizzare o per nascondere inumeri della tavola pitagorica da 1 a 9.

    Ai due pulsanti sono assegnate le seguenti propriet:

    primo pulsante: propriet Namee propriet Caption= Visualizza;

    secondo pulsante: propriet Namee propriet Caption= Nascondi.

    Codice

    Il primo sottoprogramma (Visualizza) scrive i valori calcolati nelle celle, inoltre evidenzia in grassettola prima riga e la prima colonna della tavola, e riduce alla met la larghezza delle colonne. Quandosi decide di nascondere i numeri con il secondo sottoprogramma (Nascondi), i numeri vengono

    tolti dal foglio e la larghezza delle colonne viene riportata alla misura standard.

    Private SubVisualizza_Click()

    'dichiarazione delle variabili

    Dimr, c AsInteger

    'assegnazione dei valori alle celle

    Forr = 1 To9

    Forc = 1 To9

    Cells(r, c) = r * c

    Nextc

  • 7/25/2019 1 Visual Basic

    14/17

    14 Istituto Italiano Edizioni Atlas

    Nextr

    'grassetto alla prima riga e cambiamento di larghezza

    Rows(1).Font.Bold = True

    Columns.ColumnWidth = 4

    'grassetto alla prima colonna

    Columns("A").Font.Bold = TrueEnd Sub

    PrivateSubNascondi_Click()

    'dichiarazione delle variabili

    Dimr, c AsInteger

    'toglie i numeri dalle celle

    Forr = 1 To9

    Forc = 1 To9

    Cells(r, c) = ""

    Nextc

    Nextr

    'cambiamento di larghezza

    Columns.ColumnWidth = 8.43

    EndSub

    Interfaccia grafica

    Nei progetti precedenti abbiamo utilizzato le righe e le colonne del foglio elettronico per memo-rizzare i dati di input e i risultati dellelaborazione, oltre a pulsanti di comando (oggettiCommandButton) per attivare lavvio delle procedure. In alcuni casi abbiamo anche utilizzato

    finestre di dialogo per acquisire i dati (InputBox) o per visualizzare i risultati (MsgBox).

    Con il linguaggio Visual Basic possibile anche costruire sottoprogrammi senza utilizzare le celledel foglio elettronico, ma solo oggetti grafici, tipici del sistema operativo Windows, scegliendolidalla casella dei Controlli ActiveX: in particolare etichette, caselle di testo e pulsanti di comando,che sono gli elementi grafici pi usati per costruire le interfacce grafiche per lutente (GUI,Graphical User Interface).

    In questi casi opportuno nascondere la griglia del foglio elettronico in questo modo: dal menuFile scegliere Opzioni e poiImpostazioni avanzate: nella sezione Opzioni di visualizzazioneper 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 dispunta allopzione Visualizza di Griglia.

    Il seguente progetto tratta un problema volutamente semplice, per consentire di fissare lattenzio-ne sugli strumenti che possono essere utilizzati per costruire linterfaccia grafica.

  • 7/25/2019 1 Visual Basic

    15/17

    15 Istituto Italiano Edizioni Atlas

    Progetto 5

    Calcolare larea di un trapezio.

    Dati di input:misure di base maggiore, base minore e altezza

    Dati di output: area del trapezio. Risoluzione: dopo aver acquisito le misure di base maggiore B, base minore be altezza h, lareasi calcola con la formula

    Area = (B + b) * h / 2

    algoritmo Area trapezio riga di intestazione

    variabili sezione dichiarativadichiara BaseMaggiore, BaseMinore, Altezza,Area come numeri reali

    inizio sezione esecutivaimmetti BaseMaggiore, BaseMinore, Altezza

    assegna Area = (BaseMaggiore + BaseMinore) * Altezza / 2scrivi Area

    fine

    Interfaccia utente

    Definiamo la disposizione dei dati e degli oggetti graf ici sul piano di lavoro. Nel foglio stata toltala griglia secondo la modalit descritta in precedenza ed stato assegnato un colore di sfondo allecelle: dopo aver selezionato lintero foglio (clic sul pulsante posto allincrocio tra la riga di intesta-zione delle colonne e la colonna di intestazione delle righe), nella scheda Home, gruppo Carat-tere, selezionare il colore dal pulsante Colore riempimento.

  • 7/25/2019 1 Visual Basic

    16/17

    16 Istituto Italiano Edizioni Atlas

    Sono stati poi inseriti alcuni elementi grafici scegliendoli dalla casella deiControlli ActiveX:- unEtichetta (in inglese Label) per il titolo del programma (Area del trapezio);- quattro Etichette per le descrizioni delle caselle per i dati (Base maggiore, Base minore, Altezza, Area).

    Per tutte queste etichette stata cambiata la propriet BackStyle (stile dello sfondo) impostan-dolo come Transparent (trasparente) in modo da ottenere uno sfondo uguale allo sfondo dellin-tero foglio; inoltre stato modificato il font in grassetto con la propriet Font e il colore del titolo

    con la propriet ForeColor; la descrizione delletichetta impostata con la propriet Caption.Le etichette vanno disposte in modo ordinato e allineato nel piano di lavoro: per far questooccorre selezionare con il mouse gli oggetti tenendo premuto il tasto Ctrle poi, nella schedaLayout di pagina, gruppo Disponi, fare clic sul pulsante Allinea:applicare due opzioni, primaAllinea al centro verticalmente e poiDistribuisci verticalmente.- quattro Caselle di testo (in inglese TextBox) per i dati del problema: per esse stata impostata

    la propriet Name, rispettivamente in TBaseMaggiore, TBaseMinore, TAltezza, TArea, che sono inomi che verranno usati nel codice.

    Anche le caselle di testo devono essere ben allineate e distanziate con la stessa modalit indicataper le etichette.- due Pulsanti di comando (in inglese CommandButton), per i quali sono state impostate le

    propriet Name, per identificarli con pi chiarezza nel codice, e Caption per la descrizione chedeve comparire sul pulsante.

    Il primo pulsante Calcolaattiva la procedura di calcolo dellarea, il pulsanteAnnullacancella i daticontenuti nelle caselle di testo, per consentire un nuovo calcolo con dati diversi.Per completare la disposizione degli oggetti, opportuno allineare anche i pulsanti di comandoin modo analogo alle etichette e alle caselle di testo.

    Codice

    I due sottoprogrammi seguenti rappresentano le istruzioni da eseguire, associate allevento Clickper ciascuno dei due pulsanti di comando:

    - il primo,Annulla, cancella il contenuto delle caselle di testo, offrendo la possibilit di inserirenuovi dati,- il secondo, Calcola, acquisisce i dati contenuti nelle prime tre caselle di testo, calcola larea e ne

    scrive il valore nella terza casella di testo.

    PrivateSubAnnulla_Click()

    TBaseMaggiore = ""

    TBaseMinore = ""

    TAltezza = ""

    TArea = ""

    EndSub

    PrivateSubCalcola_Click()

    TArea = (Val(TBaseMaggiore) + Val(TBaseMinore)) * TAltezza / 2

    EndSub

    Si noti luso della funzione predefinita Valdel linguaggio Visual Basic, che restituisce il valorenumerico di una stringa contenente cifre. Il contenuto di una casella di testo (TextBox), infatti, una stringa di caratteri: se non si usasse la funzione Valil risultato delladdizione produrrebbesemplicemente un accodamento dei caratteri della seconda stringa ai caratteri della prima stringa(somma di stringhe).

  • 7/25/2019 1 Visual Basic

    17/17

    17 Istituto Italiano Edizioni Atlas

    La finestra del codice

    La finestra del codice viene usata per inserire, visualizzare e modificare righe di codice.Si possono aprire anche tante finestre di codice, in modo da vedere pi finestre contemporanea-mente, e anche per poter fare operazioni di copia e incolla tra una procedura e laltra.

    La finestra comprende due liste:

    la lista degli Oggetti che contiene i controlli in essa presenti (a sinistra);

    la lista delle Routine che contiene la lista di tutte le azioni che possono essere provocate

    dallutente, associate da Visual Basic ai controlli presenti nella lista degli oggetti (a destra).Selezionando unazione, nella parte alta della finestra, viene presentata la procedura associata aquellazione o uno schema generale di procedura che pu essere completato.Se nella lista degli oggetti visualizzata la parola Generale, nella lista delle routine vengonopresentate le procedure e le dichiarazioni di carattere generale, per esempio la clausola OptionExplicitper la dichiarazione esplicita delle variabili.

    Il codice Visual Basic viene inserito ed editato usando la f inestra di codice; essa offre al program-matore due supporti importanti:

    la formattazione automatica, cio il testo del codice viene automaticamente formattato man

    mano che viene inserito da tastiera, rendendo maiuscole le prime lettere delle parole-chiave,regolarizzando gli spazi, usando diversi colori per il testo e per le parole-chiave.

    In particolare:- il testo del codice scritto normalmente in colore nero,- le parole-chiave del linguaggio sono indicate con il colore azzurro,- le frasi di commento sono scritte in verde,- le righe di codice contenenti errori sono evidenziate con il colore rosso.

    il controllo sintattico, che effettua il controllo sul codice durante lattivit di editing stessa,segnalando gli errori di sintassi con un messaggio.