Vantaggi delle macro
Transcript
Vantaggi delle macro
Cosa è una macro ? • strumento per automatizzare delle operazioni fatte con un programma • istruzione complessa, composta da più istruzioni elementari 1 Vantaggi delle macro • • • • velocità di esecuzione semplificazione di operazioni complesse automazione di procedimenti ripetitivi standardizzazione di procedure Attenzione: A volte si creano macro che eseguono funzioni già presenti nel programma ... 2 Un possibile esempio ... Prelevare dati esterni che esprimono l’andamento di un fenomeno Importare i dati in Excel, eseguire una funzione e produrre un grafico Trasferire il grafico in Word, in una relazione, e stamparla 3 Creazione di macro Registratore semplice ma non adatto ad operazioni complesse Visual Basic più complicato ma potente 4 Dal registratore al Visual Basic • Le macro create con il registratore vengono registrate in Visual Basic e possono essere rivedute e modificate • Il solo registratore non è adatto per creare macro complesse 5 Registratore • Non è necessario scrivere delle istruzioni per creare una macro • Il registratore memorizza tutte le operazioni (utili) fatte dall’utente: – – – – tastiera mouse menu ... 6 Procedura di registrazione 1 Avvio del registratore e assegnazione nome macro 2 Esecuzione azioni da registrare 3 Fine della registrazione Eseguendo la macro si riesegue la stessa sequenza di azioni 7 Finestra del registratore nome assegnato alla macro la macro é eseguibile con una combinazione di tasti dove viene registrata la macro descrizione delle azioni da registrare 8 Dove si registra • È possibile memorizzare le macro in tre modi: – in una cartella personale sempre disponibile – nella cartella aperta – in una cartella nuova • Nel secondo e terzo caso la macro sarà usabile solo quando la relativa cartella è aperta • Nel primo caso la macro sarà sempre disponibile in ogni cartella 9 Fine registrazione • Durante la registrazione compare una barra con due pulsanti • Premendo il pulsante la registrazione termina • Da questo momento la macro può essere eseguita 10 Modi di esecuzione • Mediante il menu Strumenti / Macro / Esegui • Con una combinazione di tasti definite in avvio di registrazione oppure con Strumenti / Macro / Opzioni • Con un bottone in una barra degli strumenti • Con un bottone o un oggetto grafico 11 Esempio di creazione • • • • • Strumenti / Registra Macro / Registra nuova macro Dare un nome (InserisciNomi) Dare una descrizione (Inserisce i nominativi della squadra) Con il click su OK si avvia la registrazione Selezionare una cella (E4) e scrivere cinque nominativi, terminando ogni inserimento con Invio (sposta alla cella inferiore) • Premere il pulsante di fine registrazione 12 Il codice VB corrispondente Sub Sub InserisciNomi() InserisciNomi() '' '' InserisciNomi InserisciNomi Macro Macro Range("E4").Select Range("E4").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Belli" "Belli" Range("E5").Select Range("E5").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Bertello" "Bertello" Range("E6").Select Range("E6").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Furlani" "Furlani" Range("E7").Select Range("E7").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Lanza" "Lanza" Range("E8").Select Range("E8").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Pacifico" "Pacifico" Range("E9").Select Range("E9").Select End End Sub Sub 13 Selezione di celle Range("E4").Select Range("E4").Select Viene selezionato l’intervallo composto dalla cella E4 Ovvero - si comunica all’oggetto E4, che è di tipo intervallo, di compiere l’azione di selezione Range("C2:E2").Select Range("C2:E2").Select Seleziona l’intervallo composto dalle celle C2, D2 ed E2 Range("C3,E3").Select Range("C3,E3").Select Seleziona l’intervallo composto dalle celle C3 ed E3 Esempio di operazioni con selezioni di celle: modifiche al formato Selection.Font.Bold= Selection.Font.Bold= True True 14 Assegnazione ActiveCell.Formula ActiveCell.Formula == "Betti" "Betti" Inserisce la stringa “Betti” nella cella attiva ActiveCell.Formula ActiveCell.Formula == 30 30 Inserisce il valore numerico 30 nella cella attiva ActiveCell.Formula ActiveCell.Formula == "=A1+B1" "=A1+B1" Inserisce la formula (non il risultato!) nella cella attiva 15 Riferimenti relativi • Bottone nella barra di interruzione registrazione • Definizione come l’esempio precedente • Le differenze: – Non è necessaria la selezione della prima cella – Viene utilizzato un metodo diverso per lo spostamento – Ci si sposta con: ActiveCell.Offset(1, 0).Range("A1") Spostamento di una riga in basso • Rif. Assoluti = operazioni ripetute nelle stesse celle • Rif. Relativi = operazioni ripetute in celle diverse 16 Il codice VB corrispondente Sub Sub InserisciNomi() InserisciNomi() '' '' InserisciNomi InserisciNomi Macro Macro ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Belli" "Belli" ActiveCell.Offset(1, ActiveCell.Offset(1, 0).Range("A1").Select 0).Range("A1").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Bertello" "Bertello" ActiveCell.Offset(1, ActiveCell.Offset(1, 0).Range("A1").Select 0).Range("A1").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Furlani" "Furlani" ActiveCell.Offset(1, ActiveCell.Offset(1, 0).Range("A1").Select 0).Range("A1").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Lanza" "Lanza" ActiveCell.Offset(1, ActiveCell.Offset(1, 0).Range("A1").Select 0).Range("A1").Select ActiveCell.FormulaR1C1 ActiveCell.FormulaR1C1 == "Pacifico" "Pacifico" End End Sub Sub 17 Pulsante in barra strumenti • Attivare la personalizzazione delle barre • Attivare la categoria macro e aggiungere un pulsante • Scegliere, per il pulsante, la voce assegna macro dal menu contestuale • Si possono usare anche icone personalizzate 18 Macro accoppiata ad oggetto grafico • Attivare la barra del disegno • Si definisce un oggetto grafico • Scegliere la voce assegna macro dal menu contestuale 19 Esempio • Creare macro per visualizzare le formule (Opzioni/Visualizza/Formule) • Con l’editor di Visual Basic trasformarla in un toggle • Si utilizza l’operatore logico NOT ActiveWindow.DisplayFormulas ActiveWindow.DisplayFormulas == Not Not (ActiveWindow.DisplayFormulas) (ActiveWindow.DisplayFormulas) 20