Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Utilizzo del Risolutore  di Excel Tramite Macro in Linguaggio V.B.A. <ul><li>Agabiti Giuseppe </li></ul><ul><li>Boni Diego...
Visual Basic (V.B.) <ul><li>Linguaggio di programmazione “Event Driven” derivato dal “Basic”. </li></ul><ul><ul><li>Caratt...
Storia del V.B. <ul><li>Visual Basic 1.0 per Windows (Maggio 1991) </li></ul><ul><li>Visual Basic 1.0 per DOS (Settembre 1...
Linguaggi Derivati da V.B. <ul><li>La Sintassi di V.B. è stata utilizzata da Microsoft per lo sviluppo dei linguaggi desti...
Macro Excel <ul><li>Una macro è un piccolo programma che viene creato per automatizzare alcune operazioni … noiose. </li><...
<ul><li>Per registrare una Macro in microsoft excel posizioniamoci in una cella qualsiasi di un qualsiasi foglio excel ed ...
<ul><li>Compare una finestra di dialogo, nella cui casella Nome macro possiamo o accettare il nome di default &quot;Macro1...
Esecuzione di una Macro <ul><li>La macro registrata può essere facilmente eseguita se ci spostiamo sul foglio di lavoro, r...
Risolutore Excel <ul><ul><li>Il Risolutore Excel aiuta a stabilire il valore ottimale per una formula situata nella cella ...
<ul><li>Cella Obiettivo: Dà come risultato il valore impostato nei vincoli.  </li></ul><ul><li>Celle Variabili: Vengono mo...
Utilizzare le funzioni del Risolutore in una Macro VBA <ul><li>Se desideriamo utilizzare il risolutore all’interno di una ...
<ul><li>Funzione SolverOK: Equivale al lancio di Risolutore Excel e  all’immissione dei parametri in questo. </li></ul><ul...
<ul><ul><li>UserFinish:= indica la scelta fra due visualizzazioni di risultato. </li></ul></ul><ul><ul><li>Seguito da: </l...
<ul><li>Funzione SolverFinish: Indica l’utilizzo che dobbiamo fare dei risultati ottenuti. </li></ul><ul><ul><li>KeepFinal...
Creare un modello in modo interattivo <ul><li>Svolgimento: </li></ul><ul><ul><li>Creare il foglio di lavoro </li></ul></ul...
Trovare la radice quadrata <ul><li>Si vuole trovare la radice quadrata di un numero dato come input dall’utente, salvando ...
Utilizzo delle Funzioni ExcelSolver (Risolutore) in una Macro che effettua il ciclo <ul><li>In molti casi, la cella obiett...
Trovare la radice dei numeri da 1 a 10 utilizzando il ciclo FOR <ul><li>Si vuole trovare la radice quadrata dei numeri che...
Come utilizzare i vincoli <ul><li>Un vincolo è una restrizione di una o più celle sui contenuti </li></ul><ul><li>Un model...
<ul><li>Nel Caso in cui il risolutore che dobbiamo applicare attraverso la Macro V.B.A. ha dei vincoli interni, dobbiamo u...
Trovare la combinazione ottimale dei prodotti per ottenere il massimo profitto <ul><li>Si vuole trovare la combinazione ot...
<ul><li>Per modificare o eliminare un vincolo al livello di programmazione bisogna utilizzare un’altra funzione insieme al...
Modifica del Vincolo <ul><li>Utilizzando la funzione SolverChange cambiamo il vincolo “parti usate <= parti disponibili” i...
Eliminazione e Aggiunta del Vincolo <ul><li>Rimuovere il vincolo “pezzi usati <= pezzi disponibili” e aggiungere un nuovo ...
<ul><li>Se si salva la cartella di lavoro i parametri del risolutore si salvano con la stessa. </li></ul><ul><li>Possono e...
<ul><li>Funzione SolverSave (SaveArea): Salva i parametri del risolutore per un  modello. </li></ul><ul><li>SaveArea </li>...
I Modelli del Risolutore si memorizzano in un intervallo di celle del foglio Formula Cella Obiettivo Formula identificante...
Programmazione del dipendente <ul><li>Esempio  4: </li></ul><ul><li>Presupponiamo di lavorare per un piccolo produttore. S...
N° 4a: Nuova scheda Impiegati Si illustra come creare, risolvere e salvare un modello basato sull’input dell’utente a cui ...
Finestre di dialogo Funzione Input Box -visualizza un messaggio in una finestra di dialogo -attende l’immissione di un tes...
Strutture di controllo e Cicli <ul><li>Controllo:  </li></ul><ul><ul><li>If … Then … Else </li></ul></ul><ul><ul><li>If … ...
Selezione semplice  if-else-end <ul><li>Sintassi </li></ul><ul><li>If   condizione   Then  [ istruzioni ] [ Else   istruzi...
Fine
Upcoming SlideShare
Loading in …5
×

Linguaggio V.B.A.

5,421 views

Published on

  • Be the first to comment

Linguaggio V.B.A.

  1. 1. Utilizzo del Risolutore di Excel Tramite Macro in Linguaggio V.B.A. <ul><li>Agabiti Giuseppe </li></ul><ul><li>Boni Diego </li></ul><ul><li>Procaccioli Nello </li></ul>
  2. 2. Visual Basic (V.B.) <ul><li>Linguaggio di programmazione “Event Driven” derivato dal “Basic”. </li></ul><ul><ul><li>Caratteristiche: </li></ul></ul><ul><ul><ul><li>Semplicità d’uso </li></ul></ul></ul><ul><ul><ul><li>Ambiente di lavoro RAD </li></ul></ul></ul><ul><ul><ul><li>Creazione di controlli ActiveX </li></ul></ul></ul><ul><ul><ul><li>Pratico accesso alle basi dati </li></ul></ul></ul>
  3. 3. Storia del V.B. <ul><li>Visual Basic 1.0 per Windows (Maggio 1991) </li></ul><ul><li>Visual Basic 1.0 per DOS (Settembre 1992) </li></ul><ul><li>Visual Basic 2.0 (Novembre 1992) </li></ul><ul><li>Visual Basic 3.0 (Estate 1993) </li></ul><ul><li>Visual Basic 4.0 (Agosto 1995) </li></ul><ul><li>Visual Basic 5.0 (Febbraio 1997) </li></ul><ul><li>Visual Basic 6.0 (Estate 1998) V.B. muore con questa versione </li></ul><ul><ul><ul><li>Visual Basic.NET (2001) </li></ul></ul></ul><ul><li>Visual Basic.NET (2003) </li></ul><ul><li>Visual Basic.NET (2005) </li></ul><ul><li>Visual Basic.NET (2008) </li></ul>
  4. 4. Linguaggi Derivati da V.B. <ul><li>La Sintassi di V.B. è stata utilizzata da Microsoft per lo sviluppo dei linguaggi destinati alle applicazioni Office e quelle di tipo script </li></ul><ul><ul><li>Virtual Basic Application (VBA) </li></ul></ul><ul><ul><li>VBScript </li></ul></ul>
  5. 5. Macro Excel <ul><li>Una macro è un piccolo programma che viene creato per automatizzare alcune operazioni … noiose. </li></ul><ul><li>Excel permette la registrazione di sequenze di comandi senza che l’utente debba ripetere le stesse azioni. </li></ul><ul><li>Prima di procedere bisogna applicare delle regole: </li></ul><ul><ul><li>Il registratore macro si utilizza solo per operazioni sequenziali rigide </li></ul></ul><ul><ul><li>Evitare operazioni ridondanti </li></ul></ul>
  6. 6. <ul><li>Per registrare una Macro in microsoft excel posizioniamoci in una cella qualsiasi di un qualsiasi foglio excel ed eseguiamo i seguenti passi: </li></ul><ul><li>dal menu Strumenti (Excel 2003) si sceglie Macro, poi Registra nuova macro. </li></ul>Registrazione di una Macro
  7. 7. <ul><li>Compare una finestra di dialogo, nella cui casella Nome macro possiamo o accettare il nome di default &quot;Macro1&quot;, oppure digitare un nome di propria scelta (solitamente si sceglie un nome che ricordi la funzione della macro, come &quot;StileTitolo&quot; - notate la mancanza di spazi nel titolo!). </li></ul><ul><li>Una volta premuto il pulsante “OK” comparirà l’editor di Microsoft Visual Basic. Qui dovremo scrivere il codice della Macro. </li></ul><ul><li>Nota: Se desideriamo utilizzare il risolutore all’interno di una Macro bisogna attivare il riferimento a questo: Strumenti, Riferimenti, SOLVER </li></ul>
  8. 8. Esecuzione di una Macro <ul><li>La macro registrata può essere facilmente eseguita se ci spostiamo sul foglio di lavoro, rendiamo attiva una qualsiasi cella, scegliamo il menu Strumenti (Excel 2003) / Visualizza (Excel 207), Macro, ancora Macro (Excel 2003) / Visualizza Macro(Excel 207) e nella finestra scegliamo il pulsante Esegui. </li></ul>
  9. 9. Risolutore Excel <ul><ul><li>Il Risolutore Excel aiuta a stabilire il valore ottimale per una formula situata nella cella obiettivo modificando i valori situati nelle celle variabili tramite delle restrizioni preimpostate. </li></ul></ul><ul><ul><ul><li>Scopo del Risolutore: Costruita l’equazione e definiti i vincoli per le variabili si cerca una risposta che soddisfa tutti i vincoli </li></ul></ul></ul>Utilizzo del Risolutore Dal menù strumenti cliccare su risolutore
  10. 10. <ul><li>Cella Obiettivo: Dà come risultato il valore impostato nei vincoli. </li></ul><ul><li>Celle Variabili: Vengono modificate dal Risolutore per trovare la soluzione ottimale per la Cella obiettivo. </li></ul><ul><li>Vincoli: Sono le restrizioni sui contenuti delle celle. </li></ul><ul><li>Il Risolutore Excel utilizza 3 diversi elementi per “risolvere” un’equazione: </li></ul>
  11. 11. Utilizzare le funzioni del Risolutore in una Macro VBA <ul><li>Se desideriamo utilizzare il risolutore all’interno di una Macro bisogna attivare il riferimento a questo. Come Fare? </li></ul><ul><ul><li>Aprire la Cartella di Lavoro </li></ul></ul><ul><ul><li>Strumenti/Macro/VBA </li></ul></ul><ul><ul><li>Strumenti/Riferimenti/SOLVER.xls </li></ul></ul>Nota: Se SOLVER.xls manca nei Riferimenti bisogna andare su sfoglia e trovare il SOLVER in Programmi/Microsoft Office/Office11/Libreria/SOLVER.xls
  12. 12. <ul><li>Funzione SolverOK: Equivale al lancio di Risolutore Excel e all’immissione dei parametri in questo. </li></ul><ul><li>SetCell:= indica la cella obiettivo. </li></ul><ul><li>Per progettare una macro in linguaggio V.B.A. che crea e risolve un modello semplice di Risolutore Excel sono fondamentali tre Funzioni: </li></ul><ul><li>MaxMinVal:= indica il valore della cella obiettivo. Seguito da: </li></ul><ul><li>Valore massimo, </li></ul><ul><li>Valore minimo, </li></ul><ul><li>Valore specifico, seguito da ValueOf:=VALORE </li></ul><ul><li>ByChange:= indica la cella o l’intervallo delle celle modificate. </li></ul>
  13. 13. <ul><ul><li>UserFinish:= indica la scelta fra due visualizzazioni di risultato. </li></ul></ul><ul><ul><li>Seguito da: </li></ul></ul><ul><ul><ul><li>TRUE ci dà il risultato diretto. </li></ul></ul></ul><ul><ul><ul><li>FALSE ci dà la possibilità di scegliere se modificare i parametri originali del foglio Excel con quelli del risultato oppure di lasciarli invariati. </li></ul></ul></ul><ul><li>Funzione SolverSolve: Equivale a immettere il comando Risolvi nel Risolutore Excel. </li></ul><ul><li>ShowRef:= Identifica la macro chiamata quando il risolutore restituisce una soluzione intermedia e viene utilizzato solo quando si applica la funzione “ScalaAutomatica” dell’opzione del Risolutore. </li></ul>
  14. 14. <ul><li>Funzione SolverFinish: Indica l’utilizzo che dobbiamo fare dei risultati ottenuti. </li></ul><ul><ul><li>KeepFinal:= seguito da: </li></ul></ul><ul><li>1 sostituisce i valori originali con i risultati ottenuti </li></ul><ul><ul><li>2 mantiene i valori originali </li></ul></ul><ul><li>ReportArray:= seguito da: </li></ul><ul><li>1 Excel crea un “Report” di Risposta </li></ul><ul><li>2 Excel crea un “Report” di Riservatezza </li></ul><ul><li>3 Excel crea un “Report” dei Limiti </li></ul>
  15. 15. Creare un modello in modo interattivo <ul><li>Svolgimento: </li></ul><ul><ul><li>Creare il foglio di lavoro </li></ul></ul><ul><ul><li>Inserire dati nelle celle e una formula in almeno una </li></ul></ul><ul><ul><li>Scegliere strumenti/risolutore </li></ul></ul><ul><ul><li>Spedificare cella obiettivo, valore per cui si risolve, intervalli di celle modificate e vincoli </li></ul></ul><ul><ul><li>Clicca su risolvi </li></ul></ul>
  16. 16. Trovare la radice quadrata <ul><li>Si vuole trovare la radice quadrata di un numero dato come input dall’utente, salvando i risultati nella “radice quadrata variabile” scartando la soluzione e ripristinando i valori iniziali </li></ul><ul><li>Esempio 1 : </li></ul>
  17. 17. Utilizzo delle Funzioni ExcelSolver (Risolutore) in una Macro che effettua il ciclo <ul><li>In molti casi, la cella obiettivo può essere risolta per più valori. </li></ul><ul><li>Tale operazione può essere effettuata utilizzando una delle strutture che effettuano il ciclo in VBA ad esempio “il ciclo FOR”. </li></ul>
  18. 18. Trovare la radice dei numeri da 1 a 10 utilizzando il ciclo FOR <ul><li>Si vuole trovare la radice quadrata dei numeri che vanno da 1 a 10 attraverso una macro “Tabella_delle_Radici” che effettua un ciclo FOR per eseguire l’iterazione e risolvere la cella obiettivo per un valore che soddisfa il numero dell’iterazione. </li></ul><ul><li>Esempio 2 : </li></ul>
  19. 19. Come utilizzare i vincoli <ul><li>Un vincolo è una restrizione di una o più celle sui contenuti </li></ul><ul><li>Un modello può includere uno o più vincoli </li></ul><ul><li>Un vincolo può richiedere che una cella sia maggiore di zero e che quell’altra cella contenga solo un valore intero (integer) </li></ul>
  20. 20. <ul><li>Nel Caso in cui il risolutore che dobbiamo applicare attraverso la Macro V.B.A. ha dei vincoli interni, dobbiamo utilizzare una nuova funzione insieme alle altre tre sopra citate: </li></ul><ul><li>Funzione SolverAdd: Aggiunge il vincolo al modello. </li></ul><ul><ul><li>CellRef:= Indica la/le cella/e alla sinistra dell’equazione. </li></ul></ul><ul><ul><li>Relation:= Indica la relazione interna fra CellRef e FormulaText. Seguito da: </li></ul></ul><ul><ul><li>1 assume valore “minore uguale” </li></ul></ul><ul><ul><li>2 assume valore “uguale” </li></ul></ul><ul><ul><li>3 assume valore “maggiore uguale” </li></ul></ul><ul><ul><li>4 assume valore “intero” </li></ul></ul><ul><ul><li>5 assume valore “binario, 0 o 1” </li></ul></ul><ul><li>FormulaText:= Indica la/le cella/e alla destra dell’equazione. </li></ul>
  21. 21. Trovare la combinazione ottimale dei prodotti per ottenere il massimo profitto <ul><li>Si vuole trovare la combinazione ottimale dei prodotti per ottenere il massimo profitto di una società che produce macchine, ciclomotori e biciclette, questa utilizza nella creazione un inventario comune di parti come ruota, scocca, faro, ... nella fornitura limitata. </li></ul><ul><li>Esempio 3a : </li></ul>
  22. 22. <ul><li>Per modificare o eliminare un vincolo al livello di programmazione bisogna utilizzare un’altra funzione insieme alla SolverAdd: </li></ul><ul><li>Funzione SolverChange: Modifica in parte il vincolo ( FormulaText ) assegnato con la SolverAdd. </li></ul><ul><li>Funzione SolverDelete: Elimina il vincolo immesso con la SolverAdd. </li></ul><ul><li>Gli argomenti delle funzioni sono gli stessi della SolverAdd. </li></ul>
  23. 23. Modifica del Vincolo <ul><li>Utilizzando la funzione SolverChange cambiamo il vincolo “parti usate <= parti disponibili” in “parti usate <= parti progettate” e risolviamo. </li></ul><ul><li>Esempio 3b : </li></ul>
  24. 24. Eliminazione e Aggiunta del Vincolo <ul><li>Rimuovere il vincolo “pezzi usati <= pezzi disponibili” e aggiungere un nuovo vincolo che per assurdo è l’inverso dell’originale. </li></ul><ul><li>Nota: Visto che SolverChange cambia solo l’argomento FormulaText del vincolo, se CellRef e Relation non corrispondono a un vincolo esistente si deve eliminare lo stesso e aggiungere quello modificato con SolverDelete e SolverAdd. </li></ul><ul><li>Esempio 3c: </li></ul>
  25. 25. <ul><li>Se si salva la cartella di lavoro i parametri del risolutore si salvano con la stessa. </li></ul><ul><li>Possono essere definiti più problemi per prospetto, tutti i Problemi sono composti da celle e vincoli immessi nel risolutore e nella finestra di dialogo opzioni del risolutore. </li></ul><ul><li>Si salva col foglio solo l’ultimo problema impostato </li></ul><ul><li>Per salvare scegliere Opzioni del Risolutore/Salva Modello </li></ul><ul><li>Per caricare scegliere Opzioni del Risolutore/Carica Modello </li></ul>Salvare e Caricare Problemi
  26. 26. <ul><li>Funzione SolverSave (SaveArea): Salva i parametri del risolutore per un modello. </li></ul><ul><li>SaveArea </li></ul><ul><li>Funzione SolverLoad: Carica i parametri del risolutore per un modello. </li></ul><ul><li>Funzione SolverReset: Elimina tutte le selezioni di celle e i vincoli nella finestra parametri del risolutore. </li></ul><ul><li>Le Funzioni utilizzate per effettuare le operazioni di salvataggio, caricamento e eliminazione sono: </li></ul>
  27. 27. I Modelli del Risolutore si memorizzano in un intervallo di celle del foglio Formula Cella Obiettivo Formula identificante le celle modificabili Formula Vincolo Formula Vincolo Matrice con le opzioni del Risolutore
  28. 28. Programmazione del dipendente <ul><li>Esempio 4: </li></ul><ul><li>Presupponiamo di lavorare per un piccolo produttore. Si illustrano stipendio orario, ore lavorate, costo straordinario, unità costruite all’ora e a settimana. L’obiettivo è ridurre il costo del lavoro al minimo. </li></ul><ul><li>Ulteriori due vincoli sono il numero minimo/massimo delle ore di lavoro e il numero di unità che si vogliono </li></ul>Parametro Desrizione Cella Obiettivo Costo lavoro Cella Variabili Ore lavorate per dipendente Vincoli Ore minime del lavoro effettuato dal dipendente Ore massime del lavoro effettuate dal dipendente Numero di unità prodotte
  29. 29. N° 4a: Nuova scheda Impiegati Si illustra come creare, risolvere e salvare un modello basato sull’input dell’utente a cui si richiede di fornire la data del modello, numero minimo e massimo di ore di lavoro e unità da produrre. Il modello si risolve e si salva con l’input dell’utente N° 4b: Carica scheda impiegati Questa macro ricerca il modello per l’utente in base alla data inserita e se lo trova lo carica, lo risolve e mantiene i risultati finali
  30. 30. Finestre di dialogo Funzione Input Box -visualizza un messaggio in una finestra di dialogo -attende l’immissione di un testo dall’utente -restituisce una variabile di tipo string del testo immesso Funzione MsgBox -visualizza un messaggio in una finestra di dialogo -attende che l’utente selezioni un pulsante Offset Restituisce un oggetto di tipo Range che identifica un intervallo di celle distanti (Rows (righe) e Cols (colonne) della selezione considerata
  31. 31. Strutture di controllo e Cicli <ul><li>Controllo: </li></ul><ul><ul><li>If … Then … Else </li></ul></ul><ul><ul><li>If … Then … Else If … Then … Else </li></ul></ul><ul><ul><li>Select case … case x … case n … case N … </li></ul></ul><ul><li>Cicli: </li></ul><ul><ul><li>Do while|until … Loop </li></ul></ul><ul><ul><li>Do … Loop while|until </li></ul></ul><ul><ul><li>For … Next </li></ul></ul>
  32. 32. Selezione semplice if-else-end <ul><li>Sintassi </li></ul><ul><li>If condizione Then [ istruzioni ] [ Else istruzionielse ] </li></ul><ul><li>In alternativa, è possibile utilizzare la seguente sintassi a blocchi: </li></ul><ul><li>If condizione Then [ istruzioni ] </li></ul><ul><li>[ ElseIf condizione-n Then [ istruzionielseif ] ... </li></ul><ul><li>[ Else [ istruzionielse ]] </li></ul><ul><li>End If </li></ul>
  33. 33. Fine

×