Discussione: Corso VBA
Visualizza messaggio singolo
Vecchio 02-06-2014, 11.16.56   #32
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
#2

Oggetti: Nozioni generali



La programmazione VBA è utilizzata per ottenere una migliore funzionalità di calcolo, per automatizzare le operazioni ripetitive e per integrare Excel con altre applicazioni di Office. Le istruzioni date a Excel sono sotto forma di codice, e vengono chiamate macro o procedure e sono sviluppate in Visual Basic Editor (VBE), che è l'ambiente di sviluppo VBA. Utilizzando il VBA è possibile facilitare le operazioni necessarie per ottenere un risultato, sia esso di calcolo che di ricerca, attraverso delle azioni svolte su un oggetto, in pratica, attraverso un semplice Click su un pulsante, il computer elabora una serie di dati, agevolando così il nostro lavoro.
È necessario, per prima cosa, illustrare alcune piccole terminologie di base che identificano le varie fasi della programmazione, ricordando che ogni oggetto, o controllo, presente nella casella degli strumenti è dotato di un insieme di proprietà, metodi ed eventi.


Oggetti, Proprietà e Metodi
Un oggetto è una “cosa” che contiene i dati e ha proprietà e metodi e sono una parte fondamentale della programmazione VBA. Gli oggetti sono la cartella di lavoro, il foglio di lavoro, un pulsante di comando, i font, i pulsanti di opzione che andiamo ad inserire su un foglio e ai quali affidiamo il compito di eseguire una determinata azione
Le Proprietà sono le caratteristiche o gli attributi che descrivono l'oggetto, come il nome, il colore, la dimensione, e definiscono il comportamento di un oggetto, se è visibile o abilitato. I dati o le informazioni di un oggetto possono essere raggiunti con proprietà o metodi, dove il metodo è un'azione eseguita da un oggetto tramite un codice VBA che farà sì che l'oggetto esegua un'azione.
I metodi sono le istruzioni, impartite ad un oggetto, relative alle azioni che deve intraprendere in risposta ad un evento. Ogni tipo di oggetto ha un elenco di metodi diversi e specifici, per esempio una Userform può compiere azioni come: Unload (il form si cancella dalla memoria temporanea del computer per lasciare il posto ad un altro form o per terminare il programma), Hide (il form si nasconde durante l’esecuzione del programma), Show (il form si mostra in un momento determinato, durante l’esecuzione del programma), etc.
Gli Eventi sono le azioni, che vengono svolte durante l’utilizzo del programma dall'utente finale e sono connesse ad un oggetto. Una routine evento (un codice VBA) viene attivata quando si verifica un evento come l’apertura, la chiusura, l’attivazione o disattivazione della cartella di lavoro, la selezione di una cella o cambiando la selezione delle celle in un foglio di lavoro, fare un cambiamento nel contenuto di un foglio di lavoro, la selezione o l'attivazione di un foglio di lavoro, e così via. Excel dispone di routine evento che sono procedure richiamate automaticamente quando un oggetto riconosce il verificarsi di un evento.
Le procedure di evento sono collegate a oggetti come la cartella di lavoro, il foglio di lavoro, i grafici, le Form o i vari controlli e sono attivate da un evento predefinito. Vengono installate all'interno di Excel con un nome standard e predeterminato, come la procedura di modifica del foglio di lavoro viene installata con il foglio di lavoro e denominata "Private Sub Worksheet_Change". In questa routine l'oggetto foglio di lavoro è associato all'evento Change, che contiene un codice personalizzato che viene eseguito automaticamente quando si modifica il contenuto di una cella del foglio di lavoro.

Il modello a oggetti Application rappresenta l’intera applicazione Excel e contiene tutti gli oggetti di programmazione legati gli uni agli altri in una gerarchia. L’oggetto Application è in cima alla gerarchia di oggetti di Excel e spostandosi verso il basso è possibile accedere all'oggetto cartella di lavoro (Workbook), ai fogli di lavoro (Wotsheet), alle Celle etc.
Gli oggetti di Excel sono accessibili attraverso oggetti "padri", il foglio di lavoro è il genitore dell'oggetto Range (Celle), la cartella di lavoro (Workbook) è il padre dell'oggetto foglio di lavoro (Worksheet), e l'oggetto Application è il padre dell'oggetto Workbook. Prima di inoltraci ulteriormente negli argomenti è opportuno almeno conoscere il significato di certi termini e aspetti della programmazione VBA. In questa fase indicheremo in maniera marginale il significato e la sintassi di certi argomenti, che verranno ampiamente trattati nel proseguo del corso in maniera più chiara ed esauriente.

L'insieme Workbooks
Come abbiamo poco sopra affermato l’oggetto Workbook rappresenta una cartella di lavoro di Microsoft Excel, ed è un elemento dell'insieme Workbooks che contiene tutti gli oggetti Workbook aperti in Microsoft Excel. Vediamo alcuni esempi di metodi e proprietà per l’oggetto Workbook.

Workbooks.Close ==> [chiude tutte le cartelle di lavoro aperte]
Workbooks.Add ==> [aggiunge una nuova cartella di lavoro vuota]
Workbooks(1).Activate ==> [attiva la prima cartella di lavoro aperta]

Il numero di indice determina l'ordine nel quale le cartelle di lavoro sono state aperte o create, per cui: Workbooks(1) rappresenta la prima cartella di lavoro creata

L'insieme Worksheets
L’insieme Worksheets è un insieme di tutti gli oggetti Worksheet nella cartella di lavoro specificata o attiva e ciascun oggetto Worksheet rappresenta un foglio di lavoro.

Worksheets(1) ==> [è il primo foglio di lavoro a sinistra della cartella di lavoro]
Worksheets(1).Visible = False ==> [nasconde il foglio 1 della cartella di lavoro attiva]
Worksheets("Foglio1").Activate ==> [attiva Foglio1]

Quando il foglio attivo è un foglio di lavoro, per farvi riferimento è possibile utilizzare la proprietà "ActiveSheet"

ActiveSheet.Name = "Archivio" ==> [imposta il nome al foglio attivo]
MsgBox ActiveSheet.Name ==> [riporta il nome del foglio attivo]
ActiveSheet.PrintOut ==> [stampa il foglio di lavoro]

L'insieme Sheets
Sheets è l’insieme di tutti i fogli della cartella di lavoro specificata o attiva e può contenere l'oggetto Chart (grafico) o Worksheet (foglio di lavoro).

Sheets.PrintOut ==> [stampa tutti i fogli della cartella di lavoro attiva]
Sheets("Foglio1").Activate ==> [attiva Foglio1]

L'insieme Range
Rappresenta una cella, una riga, una colonna, una selezione di celle contenente uno o più blocchi contigui di celle. Per restituire un oggetto Range che rappresenta una singola cella o un intervallo di celle, la modalità di utilizzo è

Worksheets("Foglio1").Range("A5").Value = 15 ==> [Inserisce il valore 15 nella cella A5]

Quando viene utilizzata senza qualificatore di oggetto (vale a dire l’oggetto prima del punto), la proprietà Range restituisce un intervallo del foglio attivo. Si può utilizzare il metodo Activate per attivare un foglio di lavoro prima di utilizzare la proprietà Range senza il qualificatore di oggetto

Worksheets("Foglio1").Activate
Range("A1:A10").Formula = "=Rand()" ==> [inseriamo un numero causale nell’intervallo specificato]

La Proprietà Cells
La proprietà Cells restituisce un oggetto che rappresenta tutte le celle del foglio di lavoro attivo e la modalità di utilizzo è Cells(row, column) dove row è l'indice di riga e column è l'indice della colonna, per restituire una singola cella.

Worksheets(1).Cells(1, 1).Value = 15 ==> [imposta il valore della cella A1 a 15]
ActiveSheet.Cells(2, 1).Formula = "=Somma(A1:B10)" ==> [imposta la formula nella cella A2]

La Proprietà Columns
Per un oggetto Application restituisce un oggetto che rappresenta tutte le colonne del foglio di lavoro attivo mentre per un oggetto Range restituisce le righe dell’intervallo specificato. Utilizzare questa proprietà senza un qualificatore di oggetto equivale ad ActiveSheet.Columns.

Worksheets("Foglio1").Columns(1).Font.Bold = True ==> [imposta il carattere grassetto alla Colonna A di Foglio1]
Columns(1).Value = 0 ==> [imposta il valore di tutte le celle a zero della colonna 1]

La Proprietà Rows
Per un oggetto Application, restituisce un oggetto che rappresenta tutte le righe del foglio di lavoro attivo mentre per un oggetto Worksheet, restituisce tutte le righe del foglio di lavoro specificato. Utilizzare questa proprietà senza un qualificatore di oggetto equivale a ActiveSheet.Rows.

Worksheets("Foglio1").Rows(3).Delete ==> [elimina la riga 3 di Foglio1]
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato