Excel & VBA. Excel e Visual Basic for Application

Похожие документы
Excel & VBA. Excel e Visual Basic for Application

Caratteristiche generali del linguaggio Visual Basic

28/02/2014 Copyright V. Moriggia

Programmazione con il linguaggio LibreOffice Basic

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

VBA Principali Comandi

Lezione 11. Anno accademico Titolare corso: Prof. Costanza Torricelli Docente a contratto: Dott. Marianna Brunetti

Note per la programmazione in linguaggio Visual Basic di Excel

Elementi di Informatica e Programmazione

VISUAL BASIC FOR APPLICATION

Automazione Excel con Visual Basic (base)

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

Automazione Excel con Visual Basic (base)

Visual Basic For Application Guida Pratica per Esempi

Automazione Excel con Visual Basic (base)

PETER S BOOK EXCEL PROGRAMMING WITH VBA SUBROUTINE VBA PRESS BY

Automazione Excel con Visual Basic - avanzato

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

4. I moduli in Access 2000/2003

MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL

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

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante

Corso basi di dati Introduzione al VBScript

CAPITOLO 14 LE CONDIZIONI SUI LOOP. Figura 14.1 La fine dei dati A B C D E F G H

Informatica (A-K) 5. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Costrutti condizionali e iterativi

IL LINGUAGGIO Visual Basic

Programmazione in Excel con il linguaggio Visual Basic

VBScript. IL VBScript

Costanti e Variabili

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione al Foglio Elettronico

Dall algoritmo al programma

Corso Completo Visual Basic 6.0. THECLA INFORMATICA s.r.l. INDICE

Linguaggi di programmazione

CAPITOLO 3 - ALGORITMI E CODIFICA

MS Access: Tutorial Tabelle, Relazioni

Introduzione alla programmazione. Alice Pavarani

MODULO 4: LE STRUTTURE ITERATIVE: FOR, WHILE E DO LOOP UNTIL

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

Basi di Dati: Corso di laboratorio

INFORMATICA. Strutture iterative

3. Le routine evento in Access 2000/2003

Java SE 7. Strutture di programmazione (2)

PROGRAMMA = ALGORITMO

DAL DIAGRAMMA AL CODICE

Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple

Programmazione in Java (I modulo)

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Rimuovere la password dalle protezioni di foglio e cartella in Excel

CORSO DI INFORMATICA GENERALE. Università degli Studi di Bergamo

Транскрипт:

Excel & VBA Excel e Visual Basic for Application

Automazione Excel con VBA incorpora la tecnologia dell automazione (OLE automation) Excel dialoga con VBA attraverso un insieme di comandi detto libreria ad oggetti Excel Libreria di oggetti VBA

rogrammazione procedurale Linguaggi procedurali nascondono la complessità delle operazioni sui dati Si invocano delle funzioni su blocchi di dati Programmazione ad oggetti Linguaggi orientati agli oggetti nascondono i dati e la complessità del programma Si inviano dei messaggi agli oggetti

Astrazione dei dati É il meccanismo mediante il quale è possibile combinare una struttura di dati e le operazioni che possono essere su di essa in un nuovo tipo di dato. Tale unità prende il nome di classe. Variabili o istanze di una classe sono definiti oggetti.

Proprietà delle classi Se consideriamo un numero float esso è composto da esponente e mantissa che non possono essere manipolati direttamente. Per default i membri (variabili e funzioni) di una classe sono privati e non sono manipolabili direttamente.

Libreria di oggetti di Excel I metodi e le proprietà si suddividono in due gruppi I gruppo: sono posizionati al termine dell istruzione ed eseguono una azione (ad es. Copy, PasteSpecial) II gruppo: si riferiscono ad oggetti (ad es. ActiveWindows, Range( A1 ))

Esempi di oggetti di libreria Esempio I gruppo: Selection.Copy Range("B5").Select ActiveSheet.Paste Esempio II gruppo: Range("C12:D14").Select Application.CutCopyMode = False Selection.Copy

Oggetti di Excel

Dichiarazione di variabili Dim [WithEvents] nomevariabile[([indici])] [As [New] tipo] [, [WithEvents] nomevariabile[([indici])] [As [New] tipo]]... WithEvents Facoltativa. Parola chiave che specifica che nomevariabile è una variabile oggetto utilizzata per rispondere agli eventi generati. nomevariabile Obbligatoria. Nome della variabile, espresso in base alle convenzioni di denominazione standard delle variabili. indici Facoltativa. Dimensioni di una variabile matrice. New Facoltativa. Parola chiave che consente di creare un oggetto in modo implicito. tipo Facoltativa. Tipo di dati della variabile; può essere Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (per stringhe di lunghezza variabile), String * lunghezza (per stringhe di lunghezza fissa), Object, Variant, un tipo definito dall'utente oppure un tipo di oggetto.

tipo di dati Byte Tipo di dati utilizzato per contenere numeri interi positivi compresi nell'intervallo tra 0 e 255. Le variabili di tipo Byte vengono memorizzate come numeri singoli, senza segno a 8 bit (1 byte).

Esempio di variabile Byte Sub Macro1() Dim prima As Byte prima = 1 Range("a1").Select ActiveCell.Value = prima End Sub

tipo di dati Boolean Tipo di dati con solo due valori possibili, ovvero True (-1) o False (0). Le variabili di tipo Boolean vengono memorizzate come numeri a 16 bit (2 byte).

Esempio di Boolean Sub Macro1() Dim prima As Boolean prima = True If prima Then Range("a1").Select ActiveCell.Value = "La variabile prima è vera" End If End Sub

tipo di dati Integer Tipo di dati contenente variabili memorizzate come numeri interi a 2 byte nell intervallo da -32.768 a 32.767.

Esempio di Integer Sub Macro1() Dim prima, seconda As Integer prima = 32 seconda = 44 Range("a1").Select ActiveCell.Value = prima * seconda End Sub

tipo di dati Long Intero di quattro byte, ovvero un numero intero compreso tra -2.147.483.648 e 2.147.483.647.

Sub Macro1() Dim lunga(3) As Long lunga(0) = 2 ^ 10 lunga(1) = 2 ^ 11 lunga(2) = 2 ^ 12 Range("a10").Select ActiveCell.Value = lunga(0) Range("b10").Select ActiveCell.Value = lunga(1) Range("c10").Select ActiveCell.Value = lunga(2) End Sub Esempio di Long

tipo di dati Currency Tipo di dati compreso nell intervallo da -922.337.203.685.477,5808 a 922.337.203.685.477,5807. Utilizzato per calcoli monetari o a virgola fissa in cui la precisione è fondamentale.

tipo di dati Single Tipo di dati che contiene variabili a virgola mobile a precisione singola a 32-bit (4 byte), compresi tra -3,402823E38 e - 1,401298E-45 per valori negativi e tra 1,401298E-45 e 3,402823E38 per valori positivi.

tipo di dati Double Tipo di dati che contiene numeri a virgola mobile a doppia precisione a 64 bit (8 byte) compresi tra -1.79769313486231E308 e -4,94065645841247E-324 per i valori negativi, tra 4,94065645841247E-324 e 1,797693134862325E308 per i valori positivi.

Esempio di Double Sub Macro1() Dim grosso As Double grosso = 32 ^ 12 Range("a1").Select ActiveCell.Value = grosso End Sub

tipo di dati Date Tipo di dati utilizzato per memorizzare date e orari come numeri reali. Le variabili di tipo Date vengono memorizzate come numeri a 64 bit (8 byte). Il valore a sinistra del separatore decimale rappresenta una data e il valore a destra rappresenta un orario.

Esempio di Date Sub Macro1() Dim data As Date data = 37956.4407283565 Range("a1").Select ActiveCell.Value = data End Sub

tipo di dati String Tipo di dati i cui dati sono composti da una sequenza di caratteri contigui che rappresentano i caratteri effettivi stessi anziché un valore numerico. Può includere lettere, numeri, spazi e segni di punteggiatura. Il tipo di dati String può contenere stringhe di lunghezza fissa con lunghezza compresa tra 0 e circa 63 KB di caratteri, e stringhe dinamiche di lunghezza compresa tra 0 e circa 2 miliardi di caratteri.

Esempio di String Sub Macro1() Dim stringa As String stringa = "Il mio nome è Paolo" Range("a1").Select ActiveCell.Value = stringa End Sub

tipo di dati Object Tipo di dati che rappresenta qualsiasi riferimento a un oggetto. Le variabili Object vengono memorizzate come indirizzi a 32 bit (4 byte) che fanno riferimento a oggetti.

Memorizzazione di oggetti in variabili Quando si assegna il valore ad una variabile si utilizza il segno = Quando si assegna il riferimento di oggetto ad una variabile si utilizzano Set ed = Sub RegistraOggetto() myobject = Range( A1 ) Set myobject = Range( A1 ) End Sub

Esempio di variabile Object Sub Macro1() Dim stringa As Object Set stringa = Range("a1") Range("a10").Select ActiveCell.Value = stringa End Sub

Gli oggetti RANGE Le macro devono poter operare su intervalli di dati Si può far riferimento ad intervalli di dati tramite la proprietà RANGE

Visualizzatore oggetti Nell editor di Visual Basic fare clic sul pulsante Visualizzatore oggetti La lista a sinistra contiene le classi di oggetti La lista a destra riporta i membri (metodi e proprietà)

Esempio di macro su Range Sub ProvaIntervallo() Dim miorange As Range Set miorange = Range("b2") miorange.select End Sub

Esempio di selezione di riga al termine di un intervallo Sub ProvaIntervallo() Dim miorange As Range Set miorange = Range("b2").CurrentRegion miorange.rows(miorange.rows.count+1).select End Sub

Immissione di valori e formule in intervalli di celle differenti notazioni notazione A3 (colonna alfanumerica, riga numerica) notazione $A$3 (riferimento assoluto a riga e colonna) notazione R1C1 (si setta nel menù strumentiopzioni-generale, si fa riferimento alle righe ed alle colonne con numeri preceduti rispettivamente da R e C)

Immissione di valori e formule

Strutture di controllo in VB Condizioni: If Else End If Iterazioni: For Each Next For To Next Do Until Loop While... Wend

Istruzione If...Then...Else Consente l esecuzione condizionale di un gruppo di istruzioni in base al valore di un espressione. Sintassi If condizione Then [istruzioni] [Else istruzioni] oppure If condizione Then [istruzioni] [ElseIf condizione Then [istruzioni]... [Else [istruzioni]] End If

Esempio di If Sub Macro1() Dim data As Date data = Now If data > 37980 Then Range("a10").Select ActiveCell.Value = "Natale è passato da giorni = " Range("a11").Select ActiveCell.Value = data - 37980 Else Range("a10").Select ActiveCell.Value = "A Natale mancano giorni = " Range("a11").Select ActiveCell.Value = 37980 - data End If Range("A11").Select Selection.NumberFormat = "0.00" End Sub

InputBox Metodo Funzione

Metodo InputBox Visualizza una finestra di dialogo per l'input dell'utente. Restituisce le informazioni immesse nella finestra di dialogo. Sintassi espressione.inputbox(prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)

Esempio di metodo InputBox Sub prova() Dim num As Integer num = Application.InputBox(Prompt:="Digita un numero", Type:=1) MsgBox ("Il numero digitato è " & num) End Sub

Funzione InputBox Visualizza un messaggio in una finestra di dialogo, attendendo che l'utente immetta del testo o scelga un pulsante, quindi restituisce un valore String che include il contenuto della casella di testo. Sintassi InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Esempio di funzione InputBox Sub prova() Dim nome As String nome = InputBox("Come ti chiami?") MsgBox ("Ciao " & nome) End Sub

MsgBox e pulsanti bistabili Visualizza un messaggio in una finestra di dialogo e attende che l'utente scelga un pulsante, quindi restituisce un valore Integer che indica quale pulsante l'utente ha scelto. Sintassi MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Esempio di MsgBox Sub prova1() Msg = "Continuare?" Style = vbyesno + vbcritical + vbdefaultbutton2 Title = "Dimostrazione MsgBox" Response = MsgBox(Msg, Style, Title) If Response = vbyes Then MyString = "Sì" Else MyString = "No" End If End Sub

Istruzione For Each...Next Ripete un gruppo di istruzioni per ogni elemento di una matrice o di un insieme. Sintassi For Each elemento In gruppo [istruzioni] [Exit For] [istruzioni] Next [elemento]

Esempio di For each Sub Macro1() Dim Found As Boolean Dim OggettoMio, Collezione As Object Found = False Set Collezione = Range("a1:a4") For Each OggettoMio In Collezione If OggettoMio.Text = "Paolo" Then Found = True Exit For End If Next If Found Then Range("a10").Select ActiveCell.Value = "Trovato" Else Range("a10").Select ActiveCell.Value = "Non trovato" End If End Sub

Istruzione For...Next Ripete un gruppo di istruzioni per il numero di volte specificato. Sintassi For contatore = inizio To fine [Step incremento] [istruzioni] [Exit For] [istruzioni] Next [contatore]

Esempio di For... Next Sub Macro1() Dim Parole, Caratteri, Stringa As String For Parole = 10 To 1 Step -1 For Caratteri = 0 To 9 Stringa = Stringa & Caratteri Next Caratteri Stringa = Stringa & " " Next Parole Range("a1").Select ActiveCell.Value = Stringa End Sub

Istruzione Do Loop (do while) Ripete un blocco di istruzioni finché la valutazione di una condizione dà come risultato True. sintassi Do [{While Until} condizione] [istruzioni] [Exit Do] [istruzioni] Loop

Esempio di Do while Sub prova1() Dim Counter As Integer Range("a1").Select Counter = ActiveCell.Value Do While Counter < 20 Counter = Counter + 1 Range(Selection, Selection.End(xlDown)).Select ActiveCell.Offset(1, 1).Activate ActiveCell.Value = Counter Loop End Sub

Istruzione Do Loop (repeat until) Ripete un blocco di istruzioni fino a quando non dà come risultato True. sintassi Do [istruzioni] [Exit Do] [istruzioni] Loop [{While Until} condizione]

Esempio di Repeat until Sub prova() Dim Check As Boolean, Counter As Integer Check = True: Counter = 0 Do Do While Counter < 20 Counter = Counter + 1 If Counter = 10 Then Check = False Exit Do End If Loop Loop Until Check = False End Sub

Istruzione While... Wend Ripete un blocco di istruzioni fin quando la condizione è vera. While condizione [istruzioni] Wend sintassi

Esempio di While Sub giorni() oggi = Now() Cells(1, 1) = oggi Cells(1, 1).NumberFormat = "dd/mm/yy" fine_anno = 38352 data = oggi + 7 i = 1 While data < fine_anno i = i + 1 Cells(i, 1) = data Cells(i, 1).NumberFormat = "dd/mm/yy" data = data + 7 Wend End Sub