visual basic for application

40
Visual Basic for Application Dispense di M. Bogatto www.istitutoolivetti.it

Upload: stefanoalfazeta

Post on 30-Nov-2015

117 views

Category:

Documents


10 download

DESCRIPTION

Dispense di M. Bogattowww.istitutoolivetti.it

TRANSCRIPT

Page 1: Visual Basic for Application

Visual Basic for Application

Dispense di M. Bogatto

www.istitutoolivetti.it

Page 2: Visual Basic for Application

Ambiente di sviluppo VBA

L’ambiente di sviluppo di Visual Basic For Application è facilmente accessibile dalmenù "Strumenti"; "Macro"; "Visual Basic Editor". Qui avremo modo di progettare esviluppare programmi in Visual Basic per soddisfare le nostre esigenze, in virtù delfatto che gli strumenti sono perfettamente integrati con Microsoft Excel.

I progetti realizzabili con VBA possono essere di tre tipi:

Progetto di documento Progetto di modello Progetto di componente aggiuntivo dell’applicazione

Nei "Progetti di documento" tutti i componenti del progetto sono legati alla cartella dilavoro utilizzata al momento, e non andranno ad intaccare ne l’applicazione Excel, ne isuoi modelli generali; quindi il codice rimarrà confinato nel file aperto. Nel momento incui il file cambierà posizione il nostro progetto si sposterà con esso. Di conseguenza,quando chiuderemo la nostra cartella e ne apriremo una nuova non avremo adisposizione il progetto da noi creato.

Nei "Progetti di modello" invece il codice generato è associato al modello generale diMicrosoft Excel, quindi aprendo una nuova cartella Excel o qualsiasi cartella esistenteavremo sempre a disposizione il nostro progetto VBA.

I componenti aggiuntivi sono strumenti per ampliare le funzionalità di Microsoft Excel,come, ad esempio, un comando personalizzato richiamabile dalla barra degli strumentio da una voce di menù. Anche questa tipologia di progetto non è legata solamente aldocumento corrente ma direttamente all’applicazione Excel.

Nello specifico noi tratteremo solamente i "Progetti di documento".

La piattaforma di sviluppo

ACCEDERE ALL’EDITOR DI VBA

Lezione 1: L'ambiente di sviluppo VBA

1

Page 3: Visual Basic for Application

L’editor visual Basic offre numerosi strumenti avanzati di sviluppo e programmazione:Finestra di progetto: mostra l’elenco gerarchico dei progetti aperti e di tutti i moduli dicodice e finestre di interfaccia appartenenti ad un determinato progetto.

Microsoft Excel oggetti: contiene il codice legato ai fogli ed alla cartella di lavoro.

Lezione 1: L'ambiente di sviluppo VBA

2

Page 4: Visual Basic for Application

Il generatore di Macro

Excel permette la registrazione di macro, cioè la registrazione delle azioni eseguitesull’interfaccia di Microsoft Excel, per poi essere ripetute quando ve ne fosse lanecessità.

Le applicazioni Office offrono un modo molto semplice per creare macro grazie al"Registratore di macro". Quando viene richiamata la registrazione, vengono ripetute lestesse azioni compiute durante la registrazione.

In questo modo le istruzioni vengono tradotte in codice Visual Basic e salvate in unmodulo di codice interno al progetto della cartella di lavoro Excel corrente.

Il codice registrato sottoforma di macro non sarà perfettamente adeguato alleesigenze di progettazione, ma spesso sarà una utile base di partenza per la scritturadei programmi del nostro progetto, che in seguito verrà spostato e/o modificato grazieall’editor di Visual Basic.

Vediamo una semplice dimostrazione:

1. Apriamo un nuovo documento di Microsoft Excel. Dalla voce "Macro" del menù"Strumenti" selezioniamo "Registra nuova macro".

2. Sulla finestra "Registra macro" Immettere un nome per la macro ad esempionella casella Nome macro assegniamo il nome "INTESTAZIONE" e clicchiamo"OK".

Lezione 1: L'ambiente di sviluppo VBA

3

Page 5: Visual Basic for Application

Specificare una lettera quale primo carattere del nome della macro. Per i caratteri successivi al primoè possibile utilizzare lettere, numeri o caratteri di sottolineatura. Non è consentito l’utilizzo di spazi.È possibile separare le parole utilizzando un carattere di sottolineatura.

Per eseguire la macro mediante la pressione di un tasto di scelta rapida, immettere una lettera nellacasella Scelta rapida da tastiera. È possibile utilizzare CTRL+ lettera, per lettereminuscole oppure CTRL+MAIUSC+ lettera, per lettere maiuscole, dove lettera è una letteraqualsiasi della tastiera. Non è consentito utilizzare un numero o un carattere speciale, quale @ o #,come lettera del tasto di scelta rapida. Quando la cartella di lavoro che contiene la macro è aperta, iltasto di scelta rapida avrà la precedenza sui tasti di scelta rapida predefiniti di Microsoft Excel.

Nella casella Memorizza macro in selezionare la posizione in cui si desidera memorizzare la macro.Per aggiungere una descrizione alla macro, digitarla nella casella Descrizione.

Scegliere OK.

3. A questo punto apparirà sul foglio un pulsante con un quadrattino blu ilquale indica che è iniziata la registrazione.

4. impostare l’intestazione della pagina dal menu “File” “Imposta pagina”

si apre la finestra da cui, selezionandola scheda “intestazione/piè di pagina” , ciccando “personalizza intestazione” èpossibile inserire i dati desiderati.

Lezione 1: L'ambiente di sviluppo VBA

4

Page 6: Visual Basic for Application

A questo punto abbiamo creato una Macroistruzione, visibile selezionando"Macro…" dalla voce "Macro" del menù "Strumenti".

5. Selezioniamo la Macro e clicchiamo "Modifica". Entreremo nell’Editor di VisualBasic dove potremo notare il nuovo modulo generico contenente il codice difunzionamento delle macro: "INTESTAZIONE ".

6. Torniamo al foglio Excel, apriamo il registratore di macro e scriviamo unnumero nella cella B2;

7. in modo analogo registriamo una macro che cancelli la cella B2.8. verifico che le macro siano state scritte in modo analogo al precedente oppure

aprendo l’editor di VBA e selezionando il modulo. In esso compaiono le tremacro registrate.

Il modulo di codice è il luogo dove viene scritto il codice Visual Basic. Esistonotre tipi di moduli di codice: generici, di classe e di userform. Il modulo di codiceora compilato è generico.

9. Associamo le macro appena create a due pulsanti di comando.

Lezione 1: L'ambiente di sviluppo VBA

5

Page 7: Visual Basic for Application

Inseriamo la barra degli strumenti "Moduli" dal menù "Visualizza", "barra degli

strumenti".

Clicchiamo l’icona relativa al pulsante e tracciamo un pulsante sul foglio dilavoro. A questo punto si aprirà la finestra di dialogo "Assegna Macro",selezioniamo "scrivi_B2" e digitiamo "OK". Creiamo un nuovo pulsante sul foglioe ripetiamo lo stesso procedimento per assegnare la macro”cancella_B2".

Per modificare la scritta all’interno dei pulsanti ciccare con il tasto destro delmouse e selezionare “modifica testo”

Per eseguire le macro è sufficiente ciccare sui rispettivi pulsanti.

Lezione 1: L'ambiente di sviluppo VBA

6

Page 8: Visual Basic for Application

ANALISI DELLE MACROSub scrivi_B2()'' scrivi_B2 Macro' scrive un numero nella cella B2'

' Range("B2").Select ActiveCell.FormulaR1C1 = "9"

End Sub

La prima riga contiene l’intestazione della procedura, cioè dell’insieme diistruzioni che noi forniamo al computer al fine di ottenere il risultato desiderato.La parola “Sub” è una parola chiave indispensabile, così come l’ultima rigaindica la fine delle istruzioni.

Le righe successive, precedute da in apice, costituiscono commenti, sono cioèrighe utili alla lettura del codice da parte del programmatore ma ignorate dalcomputer.

Riga 7: seleziona la cella B2:

Selezione di celle con i riferimenti assolutiSintassi: Range(CoordinateDiCella).Select

CoordinateDiCella: Argomento di tipo String ( una stringa viene racchiusa tra due doppi apici)EsempiIstruzione RisultatoRange("A1").Select Viene selezionata la cella A1Range("C4").Select Viene selezionata la cella C4Range("B2:D6").Select Viene selezionato l’intervallo di celle da B2 a D6

Riga 8: viene assegnato un valore alla cella selezionataInserimento di testo, numeri e formule in una cella (macro registrabile)

Sintassi: ActiveCell.FormulaR1C1 = TestoTesto: Specifica il testo da inserire nella cellaGli esempi seguenti ipotizzano che all’avvio della registrazione (o dell’esecuzione della macro) siaselezionata la cella D6.EsempiIstruzione RisultatoActiveCell.FormulaR1C1 = "a" Viene inserito il testo a nella cella corrente (D6)ActiveCell.FormulaR1C1 = "4" Viene inserito il valore 4 nella cella corrente (D6)ActiveCell.FormulaR1C1 = "=R[-1]C*2" Viene inserita la formula =D5*2 nella cella corrente (conseguentemente nella cella appare il risultato della formula). Si noti che la formula nella macro è espressa nella forma dei riferimenti

relativi R1C1

Analizziamo ora la macro “cancella_B2”L’unica riga che differisce dalla precedente macro è la seguente:Selection.ClearContents

Lezione 1: L'ambiente di sviluppo VBA

7

Page 9: Visual Basic for Application

E cancella il contenuto della cella B2

Cancellare l’area selezionata nel foglio di lavoro (macro registrabile)Sintassi: Selection.Clear Cancella Tutto (contenuti, formato,note)Selection.ClearFormats Cancella solo i FormatiSelection.ClearContents Cancella il contenuto dell’area selezionataSelection.ClearComments Cancella le Note (commenti)

Definizione di “riferimento assoluto” nelle formuleIn una formula è l’indirizzo esatto di una cella, indipendentemente dalla posizionedella cella contenente la formula. Un riferimento assoluto ha la forma $A$1, $B$1 ecosì via. Alcuni riferimenti di cella sono misti. Un riferimento di riga assoluto ha laforma A$1, B$1 e così via. Un riferimento di colonna assoluto ha la forma $A1, $B1 ecosì via. Diversamente da riferimenti relativi, i riferimenti assoluti non si adattanoautomaticamente quando si copiano delle formule su righe e colonne.

Sub copia()' copia nella cella A1 il contenuto della calla A3' indirizzamenti assoluti

Range("A1").Value = Range("A3").Value

End Sub

Definizione di “riferimento relativo” nelle formuleE’ un riferimento di cella, utilizzato in una formula, che cambia quando la formulaviene copiata inun’altra cella o intervallo. Dopo che la formula viene copiata e incollata, il riferimentorelativo nellanuova formula cambia per fare riferimento a una cella differente distante dallaformula lo stessonumero di righe e colonne che distanziano il riferimento relativo originale dallaformula originale.Se ad esempio la cella A3 contiene la formula =A1+A2 e si copia la cella A3 nellacella B3, laformula nella cella B3 diventa =B1+B2.

"=R[-1]C*2" è un esempio di riferimento relativo. Si intende la riga precedente [-1] a quella attiva e la stessa colonna.

Affinché le nostre applicazioni funzionino è necessario inserire il codice Basic, cioè leistruzioni che indicano al computer quali comandi eseguire ed in che ordine. Il codiceviene inserito nelle finestre "Modulo di codice" all'interno dell'Editor di "Visual Basic".Per creare un nuovo modulo di codice, aprire un nuovo documento Excel ed entrarenell'Editor VBA. Quindi scegliere la voce "Modulo" dal menù "Inserisci".

Lezione 1: L'ambiente di sviluppo VBA

8

Page 10: Visual Basic for Application

ESERCIZI

Riferimento assoluto Scrivere una subroutine che permetta di assegnare alle celle A1, B1,C1 il

proprio nome, cognome, classe frequentata.

Riferimento relativo Scrivere una subroutine che permetta di creare la seguente tabella, avendo

inserito il numero centrale N nella cella D6

N/2N-1 N N+1

N*2 ad esempio se nella cella d6 inserisco il valore 4 otterrò:

23 4 5

8

Lezione 1: L'ambiente di sviluppo VBA

9

Page 11: Visual Basic for Application

INPUT / OUTPUT

Apriamo ora un nuovo foglio excel. Creiamo un nuovo modulo di codice dell’editor diVBA e scriviamo il seguente codice.

Sub Saluti()

' La riga successiva visualizza un messaggio MsgBox "Ciao Mondo", vbInformation, "Ciao"

End Sub

Eseguiamo il codice dalla finestra MACRO cliccando su Esegui

Compare una finestra di messaggioLa riga di codice segue la seguente sintassi:

MsgBox parola chiave. È il comando per far comparire la finestra dimessaggio

“Ciao mondo” è il prompt: testo che compare all’interno della finestra vbInformation fa comparire l’icona di informazione all’interno della finestra

esistono altre icone e altri pulasanti, la scelta compare in una finestra atendina che si apre dopo aver digitato la virgola successiva al prompt.Per scegliere l’icona desiderata è sufficiente selezionarla con un clickdel mouse e premere la barra spaziatrice.

“Ciao” testo che appare sulla barra del titolo

Lezione 2: Input/Output

10

Page 12: Visual Basic for Application

Per poter eseguire un input è necessario stabilire dove memorizzare i dati digitatidall’utente. Si deve perciò dichiarare una variabile destinata a contenere il datodigitato dall’utente

Scrivere ed eseguire la seguente subroutine

Sub salutoMe() ‘dichiarazione della variabile Dim nome As String

‘input del nome nome = InputBox(“come ti chiami?”, “presentazioni”)

‘preparazione della stringa da visualizzare nella finestra di messaggio Dim messaggio As String

messaggio = “ciao “ & nome ‘& concatena due stringhe. MsgBox messaggio, vbExclamation, “SALUTI”

End Sub

Per eseguire una macro, possiamo ad esempio associarla ad un pulsante dicomando:aprire la barra moduli (tasto destro sulla barra dei comandi, e poi spuntare la casellacorrispondente a moduli).

Oppure, se invece vogliamo avere a disposizione questa nuova macro in una barradegli strumenti, utilizzabile in tutte le cartelle, possiamo procedere così:

Visualizza\Barra degli strumenti\personalizza:Scegliamo nuova e poi digitiamo il nome personale,OK,selezioniamo la linguetta comandi,evidenziamo macro e trasciniamo il pulsante personalizzato nella barra personale,CHIUDI,Premiamo il nuovo pulsante (sole che ride)Associamo il nome della macro Evidenzia, della cartella personaleClicchiamo col tasto destro sul sole che ride e scegliamo Modifica icona pulsante

dall’editor di pulsanti possiamo crearel’immagine desiderata

Trasciniamo la nuova barra degli strumenti dove preferiamo

Lezione 2: Input/Output

11

Page 13: Visual Basic for Application

Ora la nuova macro sarà disponibile in tutte le cartelle.

Lezione 2: Input/Output

12

Page 14: Visual Basic for Application

LE VARIABILI

I dati utilizzati dai moduli di codice durante l'esecuzione dei programmi vengonomemorizzati all'interno delle "Costanti" e delle "Variabili". Le variabili rappresentanodati il cui valore cambia durante l'esecuzione del programma, le costanti invececontengono sempre lo stesso valore predefinito durante tutta l'elaborazione.La sintassi di variabili e costanti è la seguente:

Dim NomeVariabile as TipovariabileConst NomeVariabile as TipoCostante = ValoreCostante

Il nome di una variabile non può: Superare i 255 caratteri. Contenere punti o operatori matematici. Non deve essere una parola riservata di Visual Basic, cioè quelle parole che

servono per impartire le istruzioni al programma; come ad esempio: Loop,Function, Sub, End, Do, Integer, Case, If, For, Else, Then, Select. Questeparole riservate sono facilmente riconoscibili poiché l’editor di VBA le scrive inblu.

Le variabili utilizzate non sono tutte uguali, possono essere numeri interi, numeridecimali, stringhe di caratteri, date ecc... Valori diversi hanno bisogno di untrattamento diverso. Per questo motivo in Visual Basic esistono tipi di dati differentiche possono essere dichiarati in modo esplicito.

Tipo Descrizione

Byte Accetta numeri da 0 a 255

Integer Accetta numeri da -32768 a 32767

Long Accetta numeri da -2 147 483 648 a 2 147 483 647

SingleAccetta numeri da -3,402823E38 a -1,401298E-45 per valori negativi Da1,401298E-45 a 3,402823E38 per valori positivi

DoubleAccetta numeri da -1,79769313486232E308 a -4,94065645841247E-324per valori negativi Da 4,94065645841247E-324 a 1,79769313486232E308per valori positivi

Boolean Accetta solo 2 valori "True" o "False" (Vero o Falso)

String Accetta da 0 a 65 000 caratteri

Date Date dal 1 gennaio 100 al 31 dicembre 9999

Per indicare con chiarezza che tipo di dato stiamo usando dobbiamo dichiarare levariabili.

Anche se non è necessario, è buona norma dichiarare sempre variabili e costantiall'interno del codice, questo aiuta a ridurre gli errori di scrittura del codice. Quandoviene inserita la parola chiave "Option Explicit" in cima al modulo di codice, Visualbasic, in caso di mancata dichiarazione di una variabile, darà una segnalazione dierrore.

Lezione 3: Le variabili

13

Page 15: Visual Basic for Application

Esercizio:Ricevere in input le misure della base e dell’altezza di un rettangolo e calcolare l’area.Analisi:per calcolare l’area di un rettangolo si utilizza la formula: Area=base * altezza.Devo :

richiedere all’utente di digitare la misura della base ( mediante inputbox) richiedere all’utente di digitare la misura dell’altezza eseguire il calcolo assegnando il risultato alla variabile Area visualizzare il risultato (mediante message box)

Se desidero visualizzare i risultati su foglio elettronico posso assegnare le variabili allecelle desiderate:

Sub Area() ' dichiarazione delle variabili locali alla procedura (subroutine)Dim base As Integer Dim altezza As IntegerDim area As Integer 'input della base e dell'altezza base = InputBox("digita la base del rettangolo") altezza = InputBox("digita l'altezza del rettangolo") 'calcolo dell'area area = base * altezza 'output su foglio di lavoro Range("A10").Value = "BASE" ‘Intestazione delle celle base Range("B10").Value = "ALTEZZA" ‘ e altezza Range("A11").Value = base ‘Assegnazione delle variabili nelle cellesottostanti le intestazioniRange("B11").Value = altezza Range("B14").Value = "AREA" ‘ intestazione e assegnazione dell’areaRange("B15").Value = area 'adatta la dimensione delle colonne a e b al contenutoColumns("A:B").Select Selection.Columns.AutoFitEnd Sub

Start

base

altezza

Area=base*altezza

Area

Stop

I

I

O

La macro conterrà il seguente codice:

Sub Area() ' dichiarazione delle variabili locali alla procedura (subroutine)Dim base As Integer

Dim altezza As IntegerDim area As Integer

'input della base e dell'altezza base = InputBox("digita la base del rettangolo") altezza = InputBox("digita l'altezza del rettangolo")

'calcolo dell'areaarea = base * altezza

'output dei risultati MsgBox "perimetro=" & perimetro & " area=" & area

End Sub

Lezione 3: Le variabili

14

Page 16: Visual Basic for Application

COLORARE LE CELLE

E possibile migliorare l’interfaccia colorando le celle interessate. Anche questo puòessere fatto mediante codice VBA. Un esempio per colorare celle è dato dallaseguente procedura:Sub colori() Dim rosso As Integer Dim verde As Long

verde = vbGreen Range("B2").Interior.Color = verde

rosso = vbRed Range("A1").Interior.Color = rosso

End Sub

vbRed e vbGreen sono due costanti di Visual Basic. Altre costanti sono:

Costante Valore Descrizione

vbBlack 0x0 Nero

vbRed 0xFF Rosso

vbGreen 0xFF00 Verde

vbYellow 0xFFFF Giallo

vbBlue 0xFF0000 Blu

vbMagenta 0xFF00FF Fucsia

vbCyan 0xFFFF00 Azzurro

vbWhite 0xFFFFFF Bianco

I valori delle costanti sono forniti in sistema esadecimale.Ad eccezione del nero e del rosso si può notare che sono costituiti da 4 o 6 cifreesadecimali. Per questo motivo per assegnare i colori verde, giallo, blu, fucsia,azzurro, bianco, a variabili, devo utilizzare variabili di tipo long.

E possibile generare altri colori utilizzando la notazione RGB.In tale notazione è sufficiente esprimere la quantità di colore ( rosso, verde, blu) chesi intende utilizzare nella composizione del nuovo colore. Tale quantità è espressa daun valore compreso tra 0 e 255

Lezione 4: Colorare le celle

15

Page 17: Visual Basic for Application

Esempio: colorare la cella C7 di violaSub coloriRGB()Dim rosso As IntegerDim verde As IntegerDim blu As Integerrosso = 225 verde = 20 blu = 97 Range("C7").Interior.Color = RGB(rosso, verde, blu)End Sub

Provare a generare nuovi colori

Con i colori generati migliorare l’interfaccia relativa al problema dell’area

Esercizio:

Creare una macro che permetta di calcolare il perimetro di un triangolo scaleno i cuilati sono dati in input.Colorare le celle dell’intestazione tutte dello stesso colore per ciò che riguarda i latiTutti i valori dei lati con un altro coloreI risultati con un terzo colore.

Lezione 4: Colorare le celle

16

Page 18: Visual Basic for Application

Operatori MatematiciLe operazioni che si possono eseguire in Visual Basic sono le seguenti

Operatore Funzione Utilizzo

+ Somma Risultato = X + Y

- Sottrazione Risultato = X - Y

* Moltiplicazione Risultato = X * Y

/ Divide e restituisce un numero a virgola mobile Risultato = X / Y

\ Divide e restituisce un numero intero Risultato = X \ Y

Mod Divide e restituisce solo il restoRisultato = X Mod YIl resto è un intero

^ Eleva a potenza Risultato = X ^ Y

Dove X e Y sono variabili o costanti di tipo numerico. Risultato deve sempre essereuna variable di tipo numerico.Nota: il divisore non deve mai essere uno 0 (zero)

Esercizi:1. realizzare un foglio excel nel quale compaiano tre pulsanti:

il primo per la lettura e visualizzazione dei valori del lato di un triangoloequilatero il secondo per il calcolo e la visualizzazione del perimetro del triangolo il terzo per il calcolo e la visualizzazione dell’area del triangolo

2. realizzare un foglio elettronico contenente un pulsante che permetta di riceverein input gli importi di tre prodotti acquistati al supermercato , calcoli l’importototale e li visualizzi tutti i dati ordinatamente in un foglio excel:

3. modificare il precedente progetto aggiungendo un pulsante che richieda lapercentuale di sconto e visualizzi il prezzo scontato

Lezione 5: Operatori matematici

17

Page 19: Visual Basic for Application

Le Routine

Con la creazione di routine è possibile dividere il codice in blocchi separati. Questopermette di rendere il programma più leggibile ed individuare facilmente gli errori.Utilizzare i moduli permette anche di rendere comune parti di codice a più programmi.

In Visual Basic esistono due tipi di routine. Routine Sub: svolgono azioni ma non restituiscono un valore. Routine Function: svolgono azioni e restituiscono un valore.

NB: un modulo di codice non coincide necessariamente con una routine, inquanto un modulo può contenere più routine contemporaneamente.

Finora abbiamo scritto tutte routine del primo tipo, cioè sub.

Esiste un metodo che permette a colpo d’occhio di determinare il tipo di una routine .Innanzitutto, di fronte ad un problema decido quali passi devo compiere per giungerealla soluzione

Esempio:realizzare un foglio excel che, mediante una macro richiamata da un pulsante,permetta di ricevere in input i dati di un triangolo equilatero e visualizzi i valoridell’area e del perimetro in modo gradevole.

La prima parte di analisi determina le mie aspettative: come sarà il foglio excel?

La seconda fase dell’analisi riassume le operazioni che intendo eseguire: Preparare le intestazioni (BASE, ALTEZZA, PERIMETRO,AREA) Richiedere all’utente la misura della base Calcolare la misura dell’altezza Calcolare la misura del perimetro Calcolare la misura dell’area Visualizzare i valori calcolati

Lezione 6: Le routine

18

Page 20: Visual Basic for Application

Tutte queste operazioni individuate possono essere eseguite a mano, utilizzandoanche le formule di excel, oppure posso chiedere al computer di eseguirle al click delpulsante ESEGUI.

Per sfruttare pienamente il computer posso chiedermi se alcune delle operazionipreviste sono già state utilizzate in precedenza.Osservo che tutte le operazioni descritte sono già state eseguite in precedentiproblemi, ( Più precisamente nell’esercizio precedente) non è necessario ripeterel’analisi e la codifica di tali operazioni, ma solo controllare che siano state scrittecorrettamente e riutilizzarle opportunamente. A differenza dell’esercizio precedentenon servono tre pulsanti, ma solo uno da cui richiamo la procedura esegui.La subroutine esegui associata a questo pulsante richiamerà le procedure scritteprecedentemente.

NOTA: l’ordine con cui sono state scritte le sub e l’ordine di richiamo non deve essereobbligatoriamente lo stesso.Alcune variabili sono dichiarate all’interno delle subroutine, la variabile “base” èdichiarata sopra le routine. Ciò dipende dalla VISIBILITA’ delle stesse.

Lezione 6: Le routine

19

Page 21: Visual Basic for Application

VISIBILITA’La visibilità di una variabile, o di una costante, definisce la sua disponibilità all'internodel progetto. Puoi dichiarare variabili e costanti a tre livelli:

Livello locale: vanno dichiarate all'interno della routine e sono disponibili soloall'interno di essa.

Ad esempio altezza, area e perimetro sono variabili locali alle routine. Non sonointeressata a conoscerne i valori in altre parti del programma.

Livello di modulo: Vanno dichiarate in testa alla finestra di modulo di codice esono viste da tutte le routine contenute all'interno del modulo di codice;

è il caso della variabile base che posso dichiarare, oltre che con la parolachiave dim anche cn la parola chiave Private

Livello pubblico: Vanno dichiarate in testa alla finestra di modulo di codice esono viste da tutte le routine e da tutti i moduli di codice appartenenti alprogetto. Sono dichiarate Pubblic

Esercizio:individua i livelli di visibilità delle variabili nel seguente codice:

Public risultato1 As IntegerPublic risultato2 As IntegerPublic sottraendo As IntegerPrivate operatore As IntegerSub somma()

Dim Addendo As Integeroperatore = 5

Addendo = 5 risultato1 = Addendo + operatore MsgBox "Il risultato della somma è: " & risultato1, _ vbInformation, "Somma"End SubSub sottrazione() Dim sottraento As Integer sottraento = 2 risultato2 = operatore - sottraento MsgBox "Il risultato della sottrazione è: " & risultato2, _ vbInformation, "Sottrazione"

End Sub

VARIABILE LIVELLO LOCALE LIVELLO DI MODULO LIVELLO PUBBLICOrisultato1risultato2sottraendooperatoreAddendosottraento

Lezione 6: Le routine

20

Page 22: Visual Basic for Application

Prova ora a completare l’esercizio precedente e a mandarlo in esecuzione.

Il codice sarà simile al seguente:Dim base As Integer

Sub Prepara_Intestazioni()

' scrive le etichette delle celle e le coloraRange("B5").Value = "BASE" Range("B5").Interior.Color = vbYellow Range("B7").Value = "ALTEZZA" Range("B7").Interior.Color = vbYellow Range("E5").Value = "PERIMETRO" Range("E5").Interior.Color = vbGreen Range("E7").Value = "AREA" Range("E7").Interior.Color = vbGreen

Columns("B:E").Select Selection.Columns.AutoFit

End Sub

Sub Input_Dati()

'chiede all'utente la misura dei lati e la scrive nella cella C5 base = InputBox("digita la base del triangolo")Range("C5").Value = base

End Sub

Sub Area()

Dim altezza As SingleDim Area As Double'calcola la misura dell'altezza e la visualizza, altezza = Sqr((base ^ 2) - (base / 2) ^ 2) Range("c7") = altezza'la misura dell'area Area = base * altezza'visualizza la misura dell'area Range("F7") = Area

End Sub

Sub Perimetro()

Dim Perimetro As Integer'calcola la misura del perimetro e lo visualizza Perimetro = base * 3 Range("f5") = Perimetro

End Sub

Lezione 6: Le routine

21

Page 23: Visual Basic for Application

Sub esegui()

'richiama nell'ordine desiderato le sub precedentemente scritte Call Prepara_Intestazioni Call Input_DatiCall Perimetro Call Area

End Sub_______________

Per il calcolo dell’ altezza è stata utilizzata la seguente formula: √ base2 – (base/2)2

La radice quadrata viene calcolata dalla funzione Sqr.

Una funzione è simile a una routine sub ma restituisce un valore, è cioè un insieme diistruzioni per il calcolo di un algoritmo. La soluzione dell’algoritmo non vienedirettamente visualizzata ma può venire assegnata a una variabile (altezza =Sqr((base ^ 2) - (base / 2) ^ 2).

VBA propone già un insieme di funzioni direttamente usufruibili.Ad esempio le funzioni matematiche

Abs, Atn, Cos, Exp, Fix, Int, Log, Rnd, Sgn, Sin, Tan

Per conoscere le funzioni disponibili aprire la guida in linea di Microsoft Visual Basicciccando su “?”

Aprire il volumeDocumentazione di Microsoft Visual Basic ,poi il volume Riferimenti al linguaggio di Visual Basiced infine Funzioni.Le funzioni sono raccolte in ordinealfabetico. La funzione Sqr sarà nel quintovolume

Lezione 6: Le routine

22

Page 24: Visual Basic for Application

Scelta la funzione desiderata si apriràuna finestra esplicativa della funzionestessa.

È possibile scrivere autonomamente delle funzioni, il cui valore restituito può essere assegnato ad unavariabile. La stessa funzione può essere richiamata ( cioè utilizzata) più volte, ogni volta che necessita.

Calcolare la misura del perimetroDa sviluppare come esercizio

Calcolare la misura dell’area Da sviluppare come esercizio Visualizzare i valori calcolati

Da sviluppare come esercizio Il problema ora è risolto. Posso richiamare le procedure scritte nella procedura

associata al pulsante Esegui e mandare in esecuzione. Sub esegui()

Call intestazione Call inputBaseCall S_perimetro

Call S_altezza Call S_area Call visualizza Call coloraCelle Call AdattaCelleEnd Sub

Per migliorare l’aspetto grafico posso richiamare le procedure per colorare lecelle o per adattare le dimensioni delle colonne.

Routine Function: svolgono azioni e restituiscono un valore

Alcune delle routine sviluppate calcolano un solo valore ( S_area, S_perimetro,S_altezza, inputBase)Queste possono essere più correttamente dichiarate funzioni.Il problema cambia sia nella sintassi della dichiarazione della subroutine che nelrichiamo della stessa:

Dichiarazione di una funzione

Public Function identificativo della funzione (elenco dei parametri formali) As tipodel dato restituitoAs esempio:Public Function F_area() As Single

Lezione 6: Le routine

23

Page 25: Visual Basic for Application

F_area = base * altezzaEnd FunctionIl richiamo di una funzione segue la seguente sintassi:

variabile destinazione = identificativo funzione(elenco parametri attuali)

Sub esegui_con_funzioni() Call intestazione base = F_inputBase() perimetro = F_perimetro() altezza = F_altezza() area = F_area()

Call visualizza Call coloraCelle Call AdattaCelleEnd SubSia i parametri formali che attuali possono essere 0 o più.Se non ci sono parametri le parentesi restano vuote.

Lezione 6: Le routine

24

Page 26: Visual Basic for Application

I costrutti di programmazione: La selezione

A volte occorre prendere delle decisioni: se una condizione è verificata allora sieseguono alcune operazioni, altrimenti se ne eseguono delle altre .Il flow chart che rappresenta l’istruzione condizionale è rappresentata da un rombo:

In Visual Basic :

Se non ci sono istruzioni da eseguire quando la condizione non è verificata:

If "condizione" then "istruzione"End if

Se ci sono istruzioni sia con condizione verificata sia con condizionenon verificata;

If "condizione" then "istruzione"Else "istruzione"End if

condizione

Istruzione daeseguire seFALSO

Istruzione daeseguire se VERO

F V

Lezione 7: I costrutti di programmazione - If Then Else

25

Page 27: Visual Basic for Application

Esempio:verificare che il numero inserito dall’utente sia un valore positivo.

Questo problema si presenta ogni volta che un utente inserisce dei valori cherappresentano quantità o dimensioni obbligatoriamente positive, come ad esempio lamisura di un lato di una figura, la somma depositata in banca o il voto di un compitoin classe.

Scrivere il seguente codice ed associarlo ad un pulsanteOption ExplicitDim VariabileInputSub positivo()

VariabileInput = _ InputBox("immettere un numero ") 'inizio dell' istruzione condizionale If (VariabileInput > 0) Then MsgBox "la variabile è un numero positivo. il suo valore è accettabile",vbInformation, "valutazione 1" Else MsgBox "la variabile è un numero negativo o pari a zero; il suo valore non èaccettabile", _ vbInformation, "valutazione 2" End If 'fine dell' istruzione condizionale End SubVerificarne la correttezza digitando, in tre prove diverse, un numero positivo, unonegativo e infine uno 0.

Esempio:verificare se un valore digitato è un carattere o un numero

E’ sempre utile, quando si chiede all’utente di inserire un numero, verificare che ladigitazione sia corretta.Scrivere il seguente codice ed associarlo ad un pulsanteOption ExplicitDim VariabileInput

Sub valuta()VariabileInput = _

InputBox("immettere un numero o una stringa di caratteri") 'inizio dell' istruzione condizionale If IsNumeric(VariabileInput) Then MsgBox "la variabile è un numero", vbInformation, "condizione Vera" Else MsgBox "la variabile è un carattere o una stringa di caratteri", _ vbInformation, "condizione Falsa" End If 'fine dell' istruzione condizionale End SubNella routine è usata l’istruzione: "IsNumeric" che definisce se il valore memorizzatonella variabile "VariabileInput" è numerico o stringa.

Lezione 7: I costrutti di programmazione - If Then Else

26

Page 28: Visual Basic for Application

Per impostare la condizione si usano operatori di confronto:

Operatore Funzione

< Minore

<= Minore o Uguale

> Maggiore

>= Maggiore o Uguale

<> Diverso (utilizzabile anche con le stringhe)

ESERCIZI:

1. Richiedere all’utente due numeri e visualizzare il minore.

2. Un commerciante di frutta ha la possibilità di vendere solo il 60% della merce a prezzointero prima che questa diventi avariata, oppure può scegliere di applicare uno sconto suvendite di stock di 5 kg, sapendo che in tal modo riuscirà a vendere completamente lamerce. Ricevendo in input la quantità totale di merce, il prezzo al kg della merce, lapercentuale di sconto applicata, quale delle due formule di vendita è più conveniente?Per motivare la scelta si crei un prospetto in excel mediante macro. Si eseguano gli input deidati mediante inputbox.

Lezione 7: I costrutti di programmazione - If Then Else

27

Page 29: Visual Basic for Application

Le useform

Utilizzando le Userform, è possibile costruire finestre personalizzate per visualizzare dati, o richiedereall’utente la digitazione di valori

In sostanza le finestre di dialogo permettono al programma di interagire con l’utente in modo più“sofisticato” e forniscono uno strumento versatile per svolgere le normali funzioni di Input e Output.L’oggetto Userform è una finestra di dialogo vuota e contiene una barra del titolo e un pulsante dichiusura, aggiungendo controlli a un oggetto di tipo Userform è possibile personalizzare l’aspetto e lafunzionalità della finestra di dialogo.

Per inserire in un file di Excel una Userform, entriamo nell’editor del VBA clicchiamo su inserisci nellabarra de menu e scegliamo la voce useform

Oppure clicchiamo sull’icona inserisci Useform

e ci comparirà una schermata come la seguente

Lezione 8: I form

28

Page 30: Visual Basic for Application

Possiamo notare che nella finestra di destra ci è comparsa una Form vuota e un box (Casella deglistrumenti) che ci permette di inserire i vari controlli all’interno della nostra Userform.La Userform ora è creata, possiamo modificarla a piacere, basta posizionarsi in un angolo (inferioredestro) e trascinare il mouse tenendo premuto il tasto sinistro e rilasciarlo quando abbiamo raggiunto ledimensioni desiderate.

Come prima cosa personalizziamo la useform:

Cambiamo il titolo:

nella finestra delle proprietà seleziono caption e modifico il contenutoscrivendo primo form

modifico anche la proprietà Back Color:

cliccando su essa si apre una finestra con due schede: Tavolozza eSistema.

Se scelgo Tavolozza, cliccando su un colore a mio piacimento, modifico ilcolore di sfondo della Userform.

All’interno della Userform posso inserire degli strumenti.

Scelgo un pulsante che posiziono nell’angolo in basso a destra dellafinestra.

Modifico le proprietà Name in CmdFine e caption in Fine.

Con un doppio clic sul pulsante apro la finestra di codice in cui scrivo:

Unload MePrivate Sub cmdFine_Click() Unload MeEnd Sub

I metodi hide e show

Hide : Nasconde la finestra di dialogo (la Userform) senza liberare la memoria associata all’oggetto, inquesto modo vengono mantenuti i valori nei vari controlli contenuti in essa

Show : Rende visibile la finestra sullo schermo, se la finestra non è caricata in memoria, viene effettuatoil caricamento

La Form appena creata è presente, ma deve essere veicolata per poter renderla visibile, un sistema perottenere questo è il seguente: dal menù file seguiamo questo percorso Inserisci > Modulo

Nel “Modulo1” digitiamo il seguente codice

Sub Mostra()Userform1.ShowEnd sub

Associamo ora la macro ad un pulsante sul foglio di lavoro e premendo sul pulsante comparirà a video laUserform.

Lezione 8: I form

29

Page 31: Visual Basic for Application

Esercizio Calcolatrice

Creare la seguente userform contenente due caselle di testo , una label e cinque commandbuttom

Modificare la proprietà name della useform chiamandolo Frmcalcolatrice

Modificare la caption con calcolatrice

Svuotare le caselle di testo e la label cancellando il contenuto della proprietà text.

Modificare la Name delle caselle di testo rispettivamente in TxtN1 e TxtN2 e della label in LblRis

Colorare lo sfondo di òblris di bianco

Modificare le caption dei command ognuno con un diverso operatore aritmetico (+ - * /)

Modificare i name delle caselle di testo rispettivamente in CmdPiu, CmdMeno, CmdPer, CmdDiviso

L’aspetto del form dovrebbe essere questo:

Scrivere i seguenti codici

Private Sub CmdDiviso_Click()If Val(txtN2.Text) <> 0 Then

lblris.Caption = Val(txtN1.Text) / Val(txtN2.Text)Else r = MsgBox("divisione per 0", vbCritical, "errore")

End IfEnd Sub

Private Sub cmdFine_Click() Unload MeEnd Sub

Private Sub CmdMeno_Click()lblris.Caption = Val(txtN1.Text) - Val(txtN2.Text)

End SubPrivate Sub CmdPer_Click()

lblris.Caption = Val(txtN1.Text) * Val(txtN2.Text)End Sub

Private Sub CmdPiu_Click()lblris.Caption = Val(txtN1.Text) + Val(txtN2.Text)

End SubPer definire le routine di evento riguardanti la cartella Excel attiva esiste un modulo di codice predefinitodenominato "ThisWorkbook", visibile in finestra di progetto.

Inserire la routine seguente nel modulo di codice "ThisWorkBook" .

Private Sub Workbook_Open() Frmcalcolatrice.showEnd Sub

La routine attiva la UserForm "Frmcalcolatrice" quando viene aperto il documento Excel.

Lezione 8: I form

30

Page 32: Visual Basic for Application

Le useform

Proviamo ora a migliorare l’aspetto delle form utilizzate.È possibile operare sia sullo sfondo che sui singoli strumenti agendo sulle proprietà degli strumentistessi.Selezioniamo la form appena creata in modo che la finestra delle proprietà indichi in modo esplicitoche si tratta del form interessato

Cliccare su name e modificare il nome del form in FrmIndovinaNumeroDa ora in poi ogni volta che si desidera riferirsi a questo form lo si farà indicando“FrmIndovinaNumero”.Il nome scelto non è casuale : Frm indica che l’oggetto è un formIndovinaNumero mi ricorda che in questo form voglio creare un gioco che mi permetta, con unnumero limitato di tentativi (ad esempio 5), di indovinare un numero.

Dopo aver modificato il nome non noto nessun cambiamento del form. Per cambiare il titolo alform modifico la caption

Lezione 9: I form parte II

31

Page 33: Visual Basic for Application

Posso ora migliorare lo sfondo colorandolo, agendo sulla proprietà BackColor.click sulla freccia a destra di BackColor.Click su tavolozzaScelta del colore

Posso anche scegliere un immagine di sfondo agendo sulla proprietà Picture:

Click su

Scelta di un file immagine (ad esempioJPEG) selezionando opportunamente ilpercorso.

Lezione 9: I form parte II

32

Page 34: Visual Basic for Application

I CICLI

Ripetizione di azioni con i cicli

Nei programmi spesso è necessario svolgere molte volte una determinata azione, Icomandi descritti in questa sezione eseguono ripetutamente le stesse istruzioni,finché non si verifica una determinata condizione.

Ciclo per un numero di volte predefinito

Il ciclo "For.. Next" esegue ripetutamente un blocco di codice incrementando (odecrementando) una variabile specifica, finche l'indice non raggiunge il valore indicatodall'attributo "To".

Esempio:Sub CicloFor() For i = 1 To 10

MsgBox "Il valore incremento è " & i, _vbInformation, "Ciclo For"

NextEnd Sub

Per contare all’indietro basta sostituire la riga"For i = 1 To 10"con"For i = 10 To 1 step -1"

For i= inizio to fine

Istruzioni del ciclo

i

For i = inizio to fine IstruzioniNext

Lezione 10: I costrutti di programmazione - Il ciclo For

33

Page 35: Visual Basic for Application

Giochiamo con i colori:

Scrivere il seguente codice ed associarlo ad un pulsante.

Option Explicit

Sub arcobaleno() Dim rosso As Integer Dim verde As Integer Dim blu As Integer Dim NumCelle As Integer Dim i As IntegerDim zonamia As Variant

Randomize

Set zonamia = Range("A1:C10")

NumCelle = zonamia.CountFor i = 1 To NumCelle

rosso = Int((255 * Rnd) + 1) verde = Int((255 * Rnd) + 1) blu = Int((255 * Rnd) + 1)

zonamia(i).Interior.Color = RGB(rosso, verde, blu)

Next

End Sub

Rnd[(numero)]

La funzione Rnd restituisce un valore minore di 1 ma maggiore o uguale a zero.

Il valore di numero determina il modo in cui Rnd genera un numero casuale.

Per ogni base iniziale specificata, viene generata la stessa sequenza di numeri, in quanto ogni successivachiamata alla funzione Rnd utilizza il numero casuale precedente come base per il numero successivo nellasequenza.

Prima di richiamare Rnd, utilizzare l'istruzione Randomize senza argomento per inizializzare il generatoredi numeri casuali con una base connessa al timer del sistema.

Per generare interi casuali in un dato intervallo, utilizzare la seguente formula:

Int((limitesup - limiteinf + 1) * Rnd + limiteinf)

Setfissa un oggetto in una variabile di tipo Object o di tipo Variant.

L'istruzione Set può essere, usata per non dover ripetere la denominazione di oggetti, specie se lunga everbosa, da qui deriva la possibilità di applicare anche a un oggetto Range la proprietà Count e gli indicinumerici.

Lezione 10: I costrutti di programmazione - Il ciclo For

34

Page 36: Visual Basic for Application

Esercizio1: scrivere una procedura, associata ad un pulsante, che scriva i numeri da 20 a 50nell’intervallo “A10:E15” , colori lo sfondo delle celle di verde e utilizzi il carattere"Lucida Handwriting"

per cambiare lo stile dei caratteri usare l’oggetto font e le relative proprietà:Bold se settato a true il carattere è in grassetto

(Range("A1:A5").Font.Bold = True)Color imposta il colore principale del carattereColorIndex Il colore viene specificato come valore di indice nella tavolozza di colori corrente

(Range("A1").Font.ColorIndex = 3)FontStyle imposta lo stile del carattere

(Range("A1").Font.FontStyle = "Bold Italic" )Italic imposta a corsivo lo stile del carattere

(Range("A1:A5").Font.Italic = True)Name imposta il nome dell'oggetto.

Nel caso del font assegnando il nome di un carattere assume quel carattere(Range(“A1”).Font.Name=”Arial”)

Shadow il carattere è ombreggiato assegnandogli il valore trueSize imposta la dimensione del carattere.Strikethrough Ha valore True se il carattere è barratoSubscript Ha valore True se il carattere è formattato a pedice

Questo esempio formatta come pedice il secondo carattere della cella A1.

Range("A1").Characters(2, 1).Font.Subscript = True

Superscript Ha valore True se il carattere è formattato ad apiceUnderline imposta il tipo di sottolineatura applicato al carattere

Può essere una delle seguenti costanti

(Range(“A1”).Font. Underline = xlUnderlineStyleSingle )

xlUnderlineStyleNonexlUnderlineStyleSingle

xlUnderlineStyleDouble

xlUnderlineStyleSingleAccounting

xlUnderlineStyleDoubleAccounting

Esercizio 2Scrivere una procedura che conti, nell’intervallo “C12:D18” quante volte compare unvalore dato in input

Esercizio3Scrivere una procedura che permetta l’input di 15 valori e li memorizzi in altrettantecelle adiacenti nella colonna C, e visualizzi la somma di tali valori nella cellasuccessiva.

Lezione 10: I costrutti di programmazione - Il ciclo For

35

Page 37: Visual Basic for Application

Ciclo con controllo in testa

Il ciclo "Do… loop" continua ad eseguire il codice fino a quando non è soddisfatta unacondizione. Se non viene specificata una condizione d’interruzione, o se la condizionenon è impostata in modo non corretto, il ciclo continua all’infinito.

Ripeti finchè la condizione non risulta vera (cicla per vero).

Sub CicloDo() i = 1 Do While i < 10 MsgBox "Il valore incremento è " & i, _

vbInformation, "Ciclo While" i = i + 1 LoopEnd Sub

condizione si

Istruzioni delciclo

no

i<10 si

no

“Il valoreincremento è “ i

i=i+1

Lezione 11: I costrutti di programmazione - I cicli Do Loop e While

36

Page 38: Visual Basic for Application

Esistono due tipologie di ciclo "Do":

Ripeti mentre la condizione risulta falsa (cicla per falso - until).

Sub CicloDo() i = 1 Do Until i > 10

MsgBox "Il valore incremento è " & i, _vbInformation, "Ciclo Do Loop Until"i = i + 1

LoopEnd Sub

Ripeti mentre la condizione risulta vera (cicla per vero - while).

Sub CicloDo() i = 1 Do While i < 10 MsgBox "Il valore incremento è " & i, _

vbInformation, "Ciclo For"i = i + 1

LoopEnd Sub

E inoltre il controllo può essere effettuato prima dello istruzioni del ciclo (controllo intesta) o dopo di esse (controllo in coda).

Controllo in testa:

While condizione[istruzioni]

Wend

Esegue una serie di istruzioni finché la valutazione di una determinata condizione dà come risultatoTrue.

i<10 si

no

“Il valoreincremento è “ i

i=i+1

Lezione 11: I costrutti di programmazione - I cicli Do Loop e While

37

Page 39: Visual Basic for Application

La sintassi dell'istruzione While...Wend è composta dalle seguenti parti:

Parte Descrizione

condizione Obbligatoria. Espressione numerica o espressione stringa che può dare comerisultato True o False. Se condizione è Null, viene considerata False.

istruzioni Facoltativa. Una o più istruzioni eseguite finché la condizione è True.

osservazioni

Se condizione è True, verranno eseguite tutte le istruzioni fino all’istruzione Wend. Il controllotornerà quindi all'istruzione While e condizione verrà analizzata nuovamente. Se condizione èancora True, il processo verrà ripetuto. Se non è True, l'esecuzione riprenderà con l'istruzionesuccessiva all'istruzione Wend.

I cicli While...Wend possono essere nidificati a qualsiasi livello. Ciascuna istruzione Wendcorrisponderà all’istruzione While più recente.

Oppure:

Do [{While | Until} condizione][istruzioni]

[istruzioni]

Loop

Controllo in coda:

Do[istruzioni]

[istruzioni]

Loop [{While | Until} condizione]

i>10si

no

“Il valoreincremento è “ i

i=i+1

Lezione 11: I costrutti di programmazione - I cicli Do Loop e While

38

Page 40: Visual Basic for Application

La sintassi dell’istruzione Do... Loop è composta dalle seguenti parti:

Parte Descrizione

condizione Facoltativa. Espressione numerica o espressione stringa che può dare comerisultato True o False. Se condizione è Null, viene considerata come False.

istruzioni Una o più istruzioni ripetute finché la valutazione di condizione è True.

Osservazioni

Come metodo per uscire dall'istruzione Do...Loop. viene utilizzata la valutazione di una condizione.

Quando le istruzioni Do...Loop sono nidificate, il controllo viene trasferito al ciclo che si trova allivello di nidificazione immediatamente superiore al ciclo appena terminato.

Esercizi:

1) Realizzare un form contenente un pulsate che permetta di ripetere, fino a chel’utente sceglie di terminare il programma, l’inserimento di un numero ed ilcalcolo del quadrato e del cubo. Visualizzare gli output mediante MsgBox.Nota : per chiedere all’utente se desidera continuare l’applicazione o terminarlausare nella casella di MessageBox, come buttom l’opzione vbYesNo e percontrollare se la risposta è positiva controllare che sia uguale a vbYes.

2) Richiamare una macro che permetta di inserire una serie di valori e calcolareseparatamente la somma dei positivi e dei negativi. Visualizzare infine talisomme sul foglio excel che ospita il pulsante.

3) Inserire un insieme di valori a piacimento dell’utente e visualizzare quanti sonostati inseriti.

4) Sommare i primi numeri naturali fino ad ottenere un mumero maggiore ouguale di un valore prefissato e comunicare quanti valori è stato necessariosommare.

Lezione 11: I costrutti di programmazione - I cicli Do Loop e While

39