CAPITOLO 15 I COMANDI GENERALIZZATI. Sub MacroSerieFibonacci ( )

Documenti analoghi
Excel & VBA. Excel e Visual Basic for Application

Introduzione al Foglio Elettronico

Introduzione al Foglio Elettronico

Esercitazione. Excel: le macro. C.1 Registrazione di macro

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA Principali Comandi

L INTERFACCIA GRAFICA DI EXCEL

Automatizzare le attività con le macro di Visual Basic

Excel Base- Lezione 3. Barbara Pocobelli Estav Nord Ovest. Il comando Trova

Capitolo 2. Figura 21. Inserimento dati

28/02/2014 Copyright V. Moriggia

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

Esercitazione su Bilancio Familiare

5 Array Cicli iterativi Contenuto di cella 28/02/2014 Copyright V. Moriggia 1

Appunti di Excel per risolvere alcuni problemi di matematica (I parte) a.a

Excel: guida alle operazioni di base per la risoluzione dell esercizio 13

Excel. Il foglio di lavoro. Il foglio di lavoro Questa viene univocamente individuata dalle sue coordinate Es. F9

MICROSOFT EXCEL FORMULE E FUNZIONI

ESERCIZIO SU BILANCIO FAMILIARE

MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL

Excel & VBA. Excel e Visual Basic for Application

EXCEL: FORMATTAZIONE E FORMULE

Modulo 4 Esercitazione Nr 2 Office 2007

Automazione Excel con Visual Basic (base)

Modellazione avanzata di fogli di lavoro Bilancio Famigliare

Calcolare con il computer: Excel. Saro Alioto 1

Laboratorio di Applicazioni numeriche

IMPOSTAZIONI DI EXCEL. Per rendere disponibile l ambiente di sviluppo di Visual Basic for Application in Excel:

ELEMENTI DI INFORMATICA E PROGRAMMAZIONE

Operazioni preliminari: creare una cartella in Documenti

Cenni sull utilizzo dei fogli elettronici

Visual Basic For Application Guida Pratica per Esempi

EXCEL: FORMATTAZIONE E FORMULE

CORSO DI INFORMATICA GENERALE. Università degli Studi di Bergamo

Contare quante volte si presenta un valore singolo utilizzando una funzione

Creare una tabella di pivot

U.T.E FOGLIO ELETTRONICO. Università della Terza Età. Sede di Novate Milanese. Corso Informatica Approfondimento. Docente: Giovanni Pozzi

9In questa sezione. Ordinare e filtrare i dati. Dopo aver aggiunto dati ai fogli di lavoro, potresti voler

U.T.E Università della Terza Età

Test per la classe quarta Conoscenze relative al foglio elettronico Excel e abilità applicate alla risoluzione di problemi

Analisi dei dati con Excel

Proprietà delle potenze

Excel 1. Informatica per le applicazioni economiche A.A. 2011/2012. Prof.ssa Bice Cavallo

EXCEL RIFERIMENTI ASSOLUTI E RELATIVI

Inserire un nuovo foglio

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

EXCEL software Excel .xlxs, La cella intestazione della colonna intestazione di righe l indirizzo della cella testo numeri formule

Appunti sui Fogli Elettronici. Introduzione. D. Gubiani. 19 Luglio 2005

Laboratorio con DERIVE

USO DELLA TASTIERA E DEL MOUSE

USO DELLA TASTIERA E DEL MOUSE

Il foglio elettronico

per immagini guida avanzata Modificare il contenuto del foglio di lavoro Geometra Luigi Amato Guida Avanzata per immagini Excel

Excel. I fogli di calcolo Le funzioni base Gli strumenti. 1

Ordina e filtra elenchi

Esiste anche l operatore logico NON che rende FALSA una condizione VERA e VERA una condizione FALSA.

Excel 1. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

Imparare a utilizzare le formule e le funzioni

VISUAL BASIC FOR APPLICATION

OGGETTO RANGE DI CELLE. Una cella o un gruppo di celle in un foglio di lavoro di Excel è un oggetto di tipo Range.

EXCEL AVANZATO Le Funzioni in Excel DEFINIZIONE DI FUNZIONE

Studio delle successioni con il software

CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Modulo: Elementi di Informatica

Excel 2007 avanzato Lezione 08

Corso sul PACCHETTO OFFICE. Modulo Access

Esercizi con uso di foglio elettronico nella suite OOo: Calc. Sommatoria e Grafici

Sviluppare un programma in FORTRAN

Il foglio elettronico

Come ordinare facilmente i dati in un foglio di calcolo Excel definendo chiavi e parametri.

Foglio di calcolo con OpenOffice Calc III

Excel avanzato. Certificazione Microsoft. Excel: le basi. 1.1 Excel: le basi NUMBER TITLE

Appunti di Excel per risolvere alcuni problemi di matematica (II parte) a.a

Formule e funzioni. Manuale d uso

Excel di Microsoft o Calc di OpenOffice sono programmi per la gestione dei fogli di calcolo

Grafici. 1 Generazione di grafici a partire da un foglio elettronico

Ma cominciamo a vedere questo programma un pò più da vicino:

LEZIONE 4. Per semplificarne la comprensione della tastiera possiamo suddividere i tasti in diversi gruppi in base alla funzione che possono svolgere:

L ALLOCAZIONE DEI COSTI GENERALI CON MICROSOFT EXCEL

Lena Cota Guido Corso di Informatica - II livello. Tastiera. Conoscenza e utilizzo della periferica

Database Modulo 6 CREAZIONE DI MASCHERE

EXCEL. Alfabetizzazione Informatica Prof. GIUSEPPE PATTI

24 ore (a partire da oggi). In quest aula (P2). Distribuzione ore: questa settimana, poi 2 ore a settimana

Insert > Object > Chart

Excel 3. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

Programmazione web lato client con JavaScript. Marco Camurri 1

Lena Cota Guido Corso di Informatica - II livello. Excel 2003 Formule. Imparare a usare le formule con la pratica

Programma del corso Che cosa è Excel. Il comando File \ Impostazione Pagina. Come selezionare le celle con il mouse.

Esercitazione sull'utilizzo della funzione CERCA.VERT(...;...;...;...)

CONSIGLIO SUPERIORE DELLA MAGISTRATURA UFFICIO DEI REFERENTI PER LA FORMAZIONE DECENTRATA DEL DISTRETTO DI MILANO MICROSOFT EXCEL

Dipartimento Regionale Pubblica Istruzione Servizio XIII Diritto allo studio

Viene contemporaneamente avviato Excel e aperto il file prescelto. D Viene contemporaneamente avviato PowerPoint e aperto il file prescelto.

Coordinate Relative/Assolute, Nomi, Collegamenti

Ordine degli Ingegneri di Bari 12 gennaio 2016 A cura dell Ing. Ugo LOPEZ

L EVOLUZIONE DEL SOFTWARE SMS SENDER. Unisoft S.r.l.

I GRAFICI CON IL FOGLIO DI CALCOLO DI OPENOFFICE. SCHEDA 1 INSERIMENTO

I CARE Azione. Elementi di base Excel Le funzioni; Macro. Gruppo di lavoro h Scuola secondaria di primo grado S.G. Bosco Fara Gera d Adda

11-Cap :40 Pagina Tabelle pivot

Corso di Informatica di Base

Corso Excel ECDL Prof. Stefano Bistarelli

Calcoli con Fogli Elettronici

Transcript:

CAPITOLO 15 I COMANDI GENERALIZZATI In questo capitolo ci occuperemo di un concetto di notevole importanza nella programmazione macro: la generalizzazione di un comando. Vediamo di cosa si tratta. Vogliamo calcolare i primi n termini di una famosa relazione di ricorrenza: la serie di Fibonacci. Ricordiamo che una relazione si dice di ricorrenza, quando il generico elemento della sequenza può essere espresso in funzione di elementi che lo precedono. I primi due termini della serie, chiamiamoli T0 e T1, hanno rispettivamente valore 0 e 1. Il generico termine della serie, chiamiamolo Tn, è dato dalla somma dei due termini che lo precedono. Valgono perciò le seguenti relazioni. T0 = 0 T1 = 1 Tn = Tn-1 + Tn-2 L algoritmo che riportiamo, richiede il valore di n al momento dell esecuzione con la condizione che tale valore sia un numero maggiore o uguale a 4. Le istruzioni sono: 1. Inserimento dei primi due termini della serie; 2. Richiesta di un valore n, utilizzando InputBox o Application.InputBox. 3. Scrittura della formula per il calcolo del terzo termine (T2 = T1 + T0 ); 4. Copia della formula di cui al punto 3, per un numero di volte pari al valore specificato al punto numero 2, modificato per tenere conto dei termini già presenti ( To & T1 ). Figura 15.1 La serie Fibonacci A B C D E F G H 1 0 1 2 3 5 8 2 3 4 5 6 Modulo vba, alt+f11 Progetto VBAProject r (generale) u MacroSerieFibonacci u! Microsoft Excel Oggetti Sub MacroSerieFibonacci ( ) Macro registrata il 22/06/2001 da www scelta rapida da tastiera: CTRL +f Range( A1 ).Value = 0 Range( B1 ).Value = 1 x = InputBox( digita il valore N della serie Fibonacci, N>4 Range( C1 ).Select ActiveCell.FormulaR1C1 = =RC[-2] + RC[-1] Selection.Copy With ActiveCell Range(ActiveCelle,.Offset(0, x 4)).Select ActiveSheet.Paste Application.CutCopyMode = False

ESERCIZI 15.1 Una colonna di un foglio contiene, a partire da una posizione nota, disposti uno per riga, un insieme di nomi qualsiasi. Scrivere il programma che dopo aver chiesto un nome qualsiasi lo confronta con quelli della colonna. Quando un nome dell insieme è uguale a quello richiesto ad inizio del programma, deve essere copiato a destra sulla stessa riga. La copia deve agire in modo da spostare il nome uguale la prima volta una cella a destra, il nome uguale la seconda volta due celle a destra, e così via. 15.2 Un foglio di lavoro riporta il codice e il prezzo di un insieme di prodotti. Questi dati si trovano rispettivamente nella colonna A e B, a partire dalla cella A3, un prodotto per ogni riga come mostrato nella figura sottostante. Nelle colonne D e E sono riportati alcuni codici e le quantità corrispondenti che sono state vendute. Considerato di non conoscere il numero di dati delle colonne A-B che sono in corrispondenza biunivoca, di non conoscere il numero dei dati della colonna D-E, scrivere il programma che riporta per ogni prodotto della colonna D, considerata la quantità della colonna E, il valore della vendita. Così per esempio, nella cella F6 deve comparire il valore 252.000 pari a 12.000*21. Per la soluzione di questo problema è consigliato l utilizzo della funzione CERCA.VERT( ). A B C D E F 1 PRODOTTO PREZZO PRODOTTO QUANTITA RICAVO 2 3 abc 12.000 g13 5 4 k7 7.000 abc 12 5 g13 3.850 k7 3 6 abc 21 7 k7 12 8 k7 1 15.3 Una colonna di un foglio di lavoro Excel, a partire da una posizione sconosciuta, contiene un insieme di valori numeri qualunque. Premesso che non si conosce il numero dei dati, si chiede di scrivere il programma che calcola la media dei valori suddetti, copia sulla stessa riga, una colonna a destra, i valori che superano la media. 15.4 Si chiedono le istruzioni macro che inseriscono, in tre colonne adiacenti utilizzando l istruzione InputBox, un insieme di dati disponendoli come mostrato nella figura sottostante. Per l inserimento deve essere utilizzata l istruzione InputBox. A B C D E F 1 Materiali 12.300 5 2 Cartoleria 2.150 4 3 Alimentari 35.000 6 4 Accessori 12.000 4 5 6 7 L inserimento dovrà iniziare dalla posizione A1 e avrà termine quando verrà digitata la sequenza «XXX». Fatto questo, si deve caricare nel prospetto il contenuto del foglio Ritenute.xls mostrato nella figura sottostante. In questo foglio sono riportati, in corrispondenza di un numero progressivo, l aliquota da applicare alle triple precedentemente inserite. Lo stesso programma dovrà quindi scrivere, in corrispondenza di ciascuna tripla di lavori, il risultato della formula: importo*aliquota/100 Nella colonna D. se necessario, consultare l utilizzazione della funzione CERCA.VERT( ) [che in Vba deve essere utilizzato con la sua espressione inglese VLOOKUP( )] nella guida in linea e sfruttare l editor di Visual Basic per vedere le istruzioni che corrispondono alle

diverse operazioni operate sul foglio di lavoro. Infatti se si apre un nuovo foglio di lavoro e si registra una nuova macro [STRUMENTI/MACRO/REGISTRA NUOVA MACRO/a INVIO], si digita contemporaneamente ALT+F11 per andare nell Editor di Visual Basic e si clicca sul MODULO1,e si torna al foglio di lavoro attivo con ALT+F4. A questo punto qualsiasi operazione esguiamo verrà tradotta automaticamente dall editor nel Modulo1, per vedere le istruzioni in codice Vba delle operazioni eseguite basta ritornare sul Modulo1 con ALT+F11.. A B C D E F 1 1 50 2 2 33 3 3 27 4 4 20 5 5 18 6 6 9 7 7 8 15.5 Risolvere il problema della serie Fibonacci generalizzando anche per il caso in cui il numero dei termini sia maggiore di1. Prima di procedere alla risoluzione degli esercizi, è opportuno soffermarsi su una nuova funzione standard che il Visual Basic mette a disposizione per ottemperare alle necessità di dialogo uomo macchina: InputBox( ). Si tratta di una nuova istruzione dell ambiente indiretto. Il programma attende l inserimento di una dato da tastiera. Il dato, per poter essere utilizzato da Excel, deve essere inserito in una variabile [ad es. " x = InputBox( inserisci un numero )]. esistono due versioni di InputBox, quella di Excel Vba [ x = Application.InputBox( ) ] e quella del Visual Basic standard [ x = InputBox( )]. La SINTASSI è: oggetto.inputbox(prompt, Title, Default, Xpos, Ypos, Helpfile, Context, Type) È l argomento Type, presente soltanto con Application.InputBox a diversificare le due versioni. Type è molto utile per filtrare il tipo di dati da digitare leciti che la funzione Application.InputBox ammette. Infatti si puo preventivamente impostare InputBox in modo che accetti solo valori numerici, oppure formule ecc. La mancata impostazione di Type imposta la funzione sul tipo di dato di default ammesso che è quello alfanumerico, alternativamente si può scegliere xlformula, xlnumber, xltext (default), xllogical (True o False), xlrange (riferimenti), xlerror (valore di errore, come #N/A), xlmatrix. È anche possibile sommare i valori del tipo, nel qual caso l accettazione si estende a quelli sommati. Ad esempio: Application.InputBox(prompt := digita un numero o un testo, type := xlnumber + xltext) Un altra differenza tra le due versioni di InputBox, è che quella di Excel (Application.InputBox) se, una volta inserito un dato si clicca Annulla invece di OK, restituisce il valore logico False, invece InputBox restituisce (stringa vuota), in tal modo è possibile, nella versione Excel, discriminare un esplicita rinuncia alla digitazione dalla mancata digitazione con il seguente programmino che prosegue il Loop, ossia la richiesta di inserire un dato continua finché l utente preme OK senza digitare alcunchè, ma se fa clic sul pulsante Annulla (anche dopo aver scritto qualcosa nella casella) si ha Risp = False e conseguente uscita dal programma (con Exit Sub). Sub ProvaInput ( ) While Risp = Risp = Application.InputBox( dammi un dato ) Wend If Risp = False Then Exit Sub MsgBox Risp

SOLUZIONI ESERCIZIO 15.1 A B C D E F G H 1 Alessia 2 Beatrice 3 Cristina 4 Daniela 5 Elisabetta 6 Francesca 7 Grazia 8 Francesca 9 Ilaria 10 Loredana 11 Manuela 12 Nadia 13 Alessia 14 Paola 15 Raffaella 16 Stefania 17 Tiziana 18 Stefania 19 20 Soluzione Esercizio 15.1 ALT + F11 (Editor di Visual Basic) Modulo1 Progetto VBAProject r (generale) u Macro15_1 u! Microsoft Excel Oggetti Sub Macro15_1 ( ) Macro registrata il 09/07/2001 da www scelta rapida da tastiera: CTRL +s i = 0 x = InputBox( digita un nome, es: ALESSIA, NOME DA CONFRONTARE ) n = Application.WorksheetFunction.CountA(Range( A1:A20 )) MsgBox numero delle celle piene & n Range( A1 ).Select For k = 0 To n - 1 With Selection y = ActiveCell msgbox il nome selezionato è: & y If x = y Then i = i + 1 MsgBox il nome & x & è stato ripetuto per & i & volte Selection.Copy Destination:=.Offset(0, i) Else MsgBox il nome selezionato: & y & è diverso da & x End If Next

Soluzione Esercizio 15.2 ALT + F11 (Editor di Visual Basic) Modulo1 VBAProject r (generale) u Macro15_2 u! Microsoft Excel Oggetti Sub Macro15_2 ( ) Macro registrata il 09/07/2001 da www scelta rapida da tastiera: CTRL +f y = Application.WorksheetFunction.CountA(Range( A1:D56636 )) MsgBox colonna composta da & y & celle piene Range( D3 ).Select With Selection Range(ActiveCell,.Offset(y 1, 0)).Select IntervalloCelle = Selection.Address MsgBox l intervallo selezionato ha il seguente indirizzo: & IntervalloCelle z = Application.WorksheetFunction.CountA(Range( & IntervalloCelle & )) MsgBox le prime & y & celle, contengono & z & celle piene ZonaCelle = D & 3 + y & :D65536 MsgBox l intervallo selezionato ha il seguente indirizzo: & ZonaCelle w = Application.WorksheetFunction.CountA(Range( & ZonaCelle & )) MsgBox le restanti & 65536 y 3 & celle, contengono & w & celle piene If y <> z And w <> 0 Then Exit Sub MsgBox l intervallo & IntervalloCelle & contiene consecutivamente tutte le celle piene Range( F3 ).Select ActiveCell.Formula = =VLOOKUP(D3, $A$3:$B$65536, 2, FALSE)*E3 Selection.Copy Range( F4:F & 4 + y 2 & ).Select ActiveSheet.Paste Application.CutCopyMode = False Soluzione Esercizio 15.3 ALT + F11 (Editor di Visual Basic) Modulo1 VBAProject r (generale) u Macro15_3 u! Microsoft Excel Oggetti Sub Macro15_3 ( ) Macro registrata il 12/07/2001 da www scelta rapida da tastiera: CTRL +h y = Application.WorksheetFunction.CountA(Range( A1:A65536 )) MsgBox la colonna A contiene & y & celle piene IntervCelle = A1:A & y & x = Application.WorksheetFunction.CountA(Range( & IntervCelle & )) MsgBox le prime & y & celle, sono composte da & x & celle piene ZonaCelle = A & y + 1 & :A65532 w = Application.WorksheetFunction.CountA(Range( & ZonaCelle & )) If y <> x And w <> 0 Then Exit Sub MsgBox la colonna contiene consecutivamente & y & celle piene, nel range & IntervCelle m = Application.WorksheetFunction.Average(Range( & IntervCelle & )) MsgBox la media calcolata è: & m For i = 0 To y 1 z = ActiveCell MsgBox il valore selezionato è & z If z > m Then Selection.Copy Destination:=ActiveCell.Offset(0, 1) Else ActiveCell.Offset(1, 0) End If Next

Se la funzione CERCA.VERTICALE, invece di essere inserita in una cella, andava inserita in una VARIABILE, avrebbe avuto la seguente sintassi: k = WorksheetFunction.VlookUp(Range( D3 ), Range( $A$3:$b$65536 ), 2, False)* Range( E3 ) SOLUZIONE ESERCIZIO 15.4 Per semplificare la soluzione e per sfruttare le possibilità che Excel e il Vba offrono, non ricopieremo il contenuto del file RITE.xls nel nostro foglio di lavoro, ma con la funzione CERCA.VERTICALE, cercheremo e utilizzeremo i dati che ci servono con comandi a distanza, ossia che agiscono su fogli di lavoro diversi da quello attivo. Inoltre sfruttando una particolarità di Application.InputBox, termineremo l inserimento dei dati non digitando la sequenza XXX, ma premendo ANNULLA nella mascherina di InputBox, in modo che essa dia come risultato dell inserimento in valore logico FALSE, che con opportune istruzione può consentire l uscita del programma dal loop per l inserimento dei dati, e di proseguire con le successive istruzioni. If i = 1 And x = XXX Then Exit Do If <VariabileDiAppoggio_INPUTBOX> = vbyes Then Exit Do Soluzione Esercizio 15.4 ALT + F11 (Editor di Visual Basic) Modulo1 VBAProject r (generale) u Macro15_4 u! Microsoft Excel Oggetti Sub Macro15_4 ( ) Macro registrata il 21/07/2001 da www scelta rapida da tastiera: CTRL +s w = 0 Range( A1 ).Select Do For i = 1 To 3 Do x = Application.InputBox(Choose(i, NOME PRODOTTO, PREZZO,_ ID_PRODOTTO ), INSERISCI I DATI RICHIESTI ) If i = 1 And x = False Then Exit Do Verifica = MsgBox( CONFERMI IL VALORE INSERITO: & x, vbyesno,_ VERIFICA DATI INSERITI ) If Verifiva = vbyes Then Exit Do Loop If i = 1 And x = False Then Exit Do ActiveCell.Formula = x If i = 3 Then Selection.End(xlToLeft).Select Selection.End(xlToLeft).Select Else ActiveCell.Offset(0, 1).Select End If Next w = w + 1 MsgBox SONO STATE RIEMPITE & w & RIGA/RIGHE Loop Range( D1 ).Select ActiveCelle.Formula = =VLOOKUP(C1, C:\Documenti\[RITE.xls]Foglio1!$A$1:$B$7,_ 2, FALSE)*B1)/100 Selection.Copy With Selection Range(ActiveCell,.Offset( w 1, 0)).Select ActiveSheet.Paste Application.CutCopyMode = False

Per risolvere questo esercizio sono state utilizzate per la prima volta diverse STRUTTURE DI CONTROLLO CICLICHE, quali For.. Next ; Do [While Until] Loop [While Until] ; If Then....Else.. End If, che sono molto utili per evitare il ricorso alle istruzioni di SALTO INCONDIZIONATO ( Go To <riga> o <etichetta>). Do Loop oltre che con Exit Do, può essere controllato con: Exit Do While <condizione> posto in cima dopo Do, non esegue mai il codice se il primo Test della condizione e falso; posto in fondo dopo Loop, lo esegue almeno una volta, terminando il ciclo con condizione True. Until <condizione> posto in cima, dopo Do, non esegue il codice se il test della condizione è verificato; posto alla fine, dopo Loop, lo esegue almeno una volta, terminando il cilclo con condizione = True.