33
Utilizzo del Utilizzo del Risolutore di Risolutore di Excel Tramite Excel Tramite Macro in Macro in Linguaggio V.B.A. Linguaggio V.B.A. Agabiti Giuseppe Agabiti Giuseppe Boni Diego Boni Diego Procaccioli Nello Procaccioli Nello

Linguaggio V.B.A

Embed Size (px)

Citation preview

Page 1: Linguaggio V.B.A

Utilizzo del Utilizzo del Risolutore di Excel Risolutore di Excel Tramite Macro in Tramite Macro in Linguaggio V.B.A.Linguaggio V.B.A.

Utilizzo del Utilizzo del Risolutore di Excel Risolutore di Excel Tramite Macro in Tramite Macro in Linguaggio V.B.A.Linguaggio V.B.A.

Agabiti GiuseppeAgabiti GiuseppeBoni DiegoBoni Diego

Procaccioli NelloProcaccioli Nello

Agabiti GiuseppeAgabiti GiuseppeBoni DiegoBoni Diego

Procaccioli NelloProcaccioli Nello

Page 2: Linguaggio V.B.A

Visual Basic (V.B.)Visual Basic (V.B.)• Linguaggio di programmazione

“Event Driven” derivato dal “Basic”.

• Caratteristiche:

Semplicità d’uso

Ambiente di lavoro RAD

Creazione di controlli ActiveX

Pratico accesso alle basi dati

Page 3: Linguaggio V.B.A

Storia del V.B.Storia del V.B.• Visual Basic 1.0 per Windows (Maggio 1991)

• Visual Basic 1.0 per DOS (Settembre 1992)

• Visual Basic 2.0 (Novembre 1992)

• Visual Basic 3.0 (Estate 1993)

• Visual Basic 4.0 (Agosto 1995)

• Visual Basic 5.0 (Febbraio 1997)

• Visual Basic 6.0 (Estate 1998) V.B. muore con questa versione

•Visual Basic.NET (2001)

• Visual Basic.NET (2003)

• Visual Basic.NET (2005)

• Visual Basic.NET (2008)

Page 4: Linguaggio V.B.A

Linguaggi Derivati da Linguaggi Derivati da V.B.V.B.

• La Sintassi di V.B. è stata utilizzata da Microsoft per lo sviluppo dei linguaggi destinati alle applicazioni Office e quelle di tipo script

Virtual Basic Application (VBA)

VBScript

Page 5: Linguaggio V.B.A

Macro ExcelMacro Excel• Una macro è un piccolo programma che viene

creato per automatizzare alcune operazioni … noiose.

• Excel permette la registrazione di sequenze di comandi senza che l’utente debba ripetere le stesse azioni.

• Prima di procedere bisogna applicare delle regole:

1. Il registratore macro si utilizza solo per operazioni sequenziali rigide

2. Evitare operazioni ridondanti

Page 6: Linguaggio V.B.A

• Per registrare una Macro in microsoft excel posizioniamoci in una cella qualsiasi di un qualsiasi foglio excel ed eseguiamo i seguenti passi:

dal menu Strumenti (Excel 2003) si sceglie Macro, poi Registra nuova macro.

Registrazione di una Registrazione di una MacroMacro

Page 7: Linguaggio V.B.A

Compare una finestra di dialogo, nella cui casella Nome macro possiamo o accettare il nome di default "Macro1", oppure digitare un nome di propria scelta (solitamente si sceglie un nome che ricordi la funzione della macro, come "StileTitolo" - notate la mancanza di spazi nel titolo!).

Una volta premuto il pulsante “OK” comparirà l’editor di Microsoft Visual Basic. Qui dovremo scrivere il codice della Macro.

Nota: Se desideriamo utilizzare il risolutore all’interno di una Macro bisogna attivare il riferimento a questo: Strumenti, Riferimenti, SOLVER

Page 8: Linguaggio V.B.A

Esecuzione di una Esecuzione di una MacroMacro

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.

Page 9: Linguaggio V.B.A

Risolutore Risolutore ExcelExcel✴ 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.

✴ Scopo del Risolutore: Costruita l’equazione e definiti i vincoli per le variabili si cerca una risposta che soddisfa tutti i vincoli

Utilizzo del Utilizzo del RisolutoreRisolutoreDal menù strumenti cliccare su risolutore

Page 10: Linguaggio V.B.A

Cella Obiettivo: Dà come risultato il valore impostato nei vincoli.

Celle Variabili: Vengono modificate dal Risolutore per trovare la soluzione ottimale per la Cella obiettivo.

Vincoli: Sono le restrizioni sui contenuti delle celle.

• Il Risolutore Excel utilizza 3 diversi elementi per “risolvere” un’equazione:

Page 11: Linguaggio V.B.A

Utilizzare le funzioni del Risolutore in Utilizzare le funzioni del Risolutore in una Macro VBAuna Macro VBA

• Se desideriamo utilizzare il risolutore all’interno di una Macro bisogna attivare il riferimento a questo. Come Fare?

Aprire la Cartella di Lavoro

Strumenti/Macro/VBA

Strumenti/Riferimenti/SOLVER.xls

Nota: Se SOLVER.xls manca nei Riferimenti bisogna andare su sfoglia e trovare il SOLVER in Programmi/Microsoft Office/Office11/Libreria/SOLVER.xls

Page 12: Linguaggio V.B.A

✴ Funzione SolverOK: Equivale al lancio di Risolutore Excel e all’immissione dei parametri in questo.

• SetCell:= indica la cella obiettivo.

✦ Per progettare una macro in linguaggio V.B.A. che crea e risolve un modello semplice di Risolutore Excel sono fondamentali tre Funzioni:

• MaxMinVal:= indica il valore della cella obiettivo. Seguito da:1. Valore massimo,2. Valore minimo,3. Valore specifico, seguito da ValueOf:=VALORE

• ByChange:= indica la cella o l’intervallo delle celle modificate.

Page 13: Linguaggio V.B.A

• UserFinish:= indica la scelta fra due visualizzazioni di risultato.

• Seguito da:

TRUE ci dà il risultato diretto.

FALSE ci dà la possibilità di scegliere se modificare i parametri originali del foglio Excel con quelli del risultato oppure di lasciarli invariati.

✴ Funzione SolverSolve: Equivale a immettere il comando Risolvi nel Risolutore Excel.

• 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.

Page 14: Linguaggio V.B.A

✴ Funzione SolverFinish: Indica l’utilizzo che dobbiamo fare dei risultati ottenuti.

• KeepFinal:= seguito da:

1 sostituisce i valori originali con i risultati ottenuti

2 mantiene i valori originali

• ReportArray:= seguito da:

1 Excel crea un “Report” di Risposta

2 Excel crea un “Report” di Riservatezza

3 Excel crea un “Report” dei Limiti

Page 15: Linguaggio V.B.A

Creare un modello in Creare un modello in modo interattivomodo interattivo

✦ Svolgimento:

1. Creare il foglio di lavoro

2. Inserire dati nelle celle e una formula in almeno una

3. Scegliere strumenti/risolutore

4. Spedificare cella obiettivo, valore per cui si risolve, intervalli di celle modificate e vincoli

5. Clicca su risolvi

Page 16: Linguaggio V.B.A

Trovare la radice quadrataTrovare la radice quadrata

• 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

Esempio 1:

Page 17: Linguaggio V.B.A

Utilizzo delle Funzioni ExcelSolver Utilizzo delle Funzioni ExcelSolver (Risolutore) in una Macro che effettua il (Risolutore) in una Macro che effettua il ciclociclo

• In molti casi, la cella obiettivo può essere risolta per più valori.

• Tale operazione può essere effettuata utilizzando una delle strutture che effettuano il ciclo in VBA ad esempio “il ciclo FOR”.

Page 18: Linguaggio V.B.A

Trovare la radice dei numeri da 1 a 10 Trovare la radice dei numeri da 1 a 10 utilizzando il ciclo FORutilizzando il ciclo FOR

• 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.

Esempio 2:

Page 19: Linguaggio V.B.A

Come utilizzare i Come utilizzare i vincolivincoli

• Un vincolo è una restrizione di una o più celle sui contenuti

• Un modello può includere uno o più vincoli

• Un vincolo può richiedere che una cella sia maggiore di zero e che quell’altra cella contenga solo un valore intero (integer)

Page 20: Linguaggio V.B.A

✦ 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:

✴ Funzione SolverAdd: Aggiunge il vincolo al modello.

CellRef:= Indica la/le cella/e alla sinistra dell’equazione.

Relation:= Indica la relazione interna fra CellRef e FormulaText. Seguito da:

• 1 assume valore “minore uguale”

• 2 assume valore “uguale”

• 3 assume valore “maggiore uguale”

• 4 assume valore “intero”

• 5 assume valore “binario, 0 o 1”

FormulaText:= Indica la/le cella/e alla destra dell’equazione.

Page 21: Linguaggio V.B.A

Trovare la combinazione ottimale Trovare la combinazione ottimale dei prodotti per ottenere il dei prodotti per ottenere il massimo profittomassimo profitto• 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.

Esempio 3a:

Page 22: Linguaggio V.B.A

✦ Per modificare o eliminare un vincolo al livello di programmazione bisogna utilizzare un’altra funzione insieme alla SolverAdd:

✴ Funzione SolverChange: Modifica in parte il vincolo (FormulaText) assegnato con la SolverAdd.

✴ Funzione SolverDelete: Elimina il vincolo immesso con la SolverAdd.

✴ Gli argomenti delle funzioni sono gli stessi della SolverAdd.

Page 23: Linguaggio V.B.A

Modifica del VincoloModifica del Vincolo

• Utilizzando la funzione SolverChange cambiamo il vincolo “parti usate <= parti disponibili” in “parti usate <= parti progettate” e risolviamo.

Esempio 3b:

Page 24: Linguaggio V.B.A

Eliminazione e Aggiunta del Eliminazione e Aggiunta del VincoloVincolo

• Rimuovere il vincolo “pezzi usati <= pezzi disponibili” e aggiungere un nuovo vincolo che per assurdo è l’inverso dell’originale.

• 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.

Esempio 3c:

Page 25: Linguaggio V.B.A

• Se si salva la cartella di lavoro i parametri del risolutore si salvano con la stessa.

• 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.

• Si salva col foglio solo l’ultimo problema impostato

1. Per salvare scegliere Opzioni del Risolutore/Salva Modello

2. Per caricare scegliere Opzioni del Risolutore/Carica Modello

Salvare e Caricare ProblemiSalvare e Caricare Problemi

Page 26: Linguaggio V.B.A

✴ Funzione SolverSave (SaveArea): Salva i parametri del risolutore per un modello.

✴ SaveArea

✴ Funzione SolverLoad: Carica i parametri del risolutore per un modello.

✴ Funzione SolverReset: Elimina tutte le selezioni di celle e i vincoli nella finestra parametri del risolutore.

✦ Le Funzioni utilizzate per effettuare le operazioni di salvataggio, caricamento e eliminazione sono:

Page 27: Linguaggio V.B.A

I Modelli del Risolutore si I Modelli del Risolutore si memorizzano in un intervallo di celle memorizzano in un intervallo di celle del fogliodel foglio

Formula Cella

Obiettivo

Formula identificante le celle

modificabili

Formula Vincolo

Formula Vincolo

Matrice con le

opzioni del Risolutore

Page 28: Linguaggio V.B.A

Programmazione del dipendenteProgrammazione del dipendente

ParametroParametro DesrizioneDesrizioneCella Obiettivo Costo lavoro

Cella Variabili Ore lavorate per dipendente

Vincoli Ore minime del lavoro effettuato dal dipendenteOre massime del lavoro effettuate dal dipendenteNumero di unità prodotte

Esempio 4:

• 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.

• Ulteriori due vincoli sono il numero minimo/massimo delle ore di lavoro e il numero di unità che si vogliono

Page 29: Linguaggio V.B.A

N° 4a: Nuova scheda N° 4a: Nuova scheda ImpiegatiImpiegatiSi 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 impiegatiN° 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

Page 30: Linguaggio V.B.A

Finestre di dialogoFunzione 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 immessoFunzione MsgBox-visualizza un messaggio in una finestra di dialogo-attende che l’utente selezioni un pulsanteOffsetRestituisce un oggetto di tipo Range che identifica un intervallo di celle distanti (Rows (righe) e Cols (colonne) della selezione

considerata

Page 31: Linguaggio V.B.A

Strutture di controllo e Cicli

Controllo:

If … Then … Else

If … Then … Else If … Then … Else

Select case … case x … case n … case N …

Cicli:

Do while|until … Loop

Do … Loop while|until

For … Next

Page 32: Linguaggio V.B.A

Selezione semplice if-else-end

• Sintassi

• If condizione Then [istruzioni] [Else istruzionielse]

• In alternativa, è possibile utilizzare la seguente sintassi a blocchi:

• If condizione Then[istruzioni]

• [ElseIf condizione-n Then[istruzionielseif] ...

• [Else[istruzionielse]]

• End If

Page 33: Linguaggio V.B.A

FineFine