register.png   lostpass.png
Benvenuto nella Community di Alexsandra.it
05 Febbraio 2012 03:57:25
Shoutbox
Devi essere loggato per poter inserire un messaggio.

Faby
28/01/2012 13:48
Buon week end anche ate Delfi Smile

DELFINO
28/01/2012 11:03
buon sabato e buon weekend a tutti... E un bacio alle ragazze Bacio

Faby
27/01/2012 18:21
Ciao Angarat

angarat
27/01/2012 14:38
ciao belli e brutti Bacio ao! ciaooooo! Biggrin

Faby
26/01/2012 13:52
Ciao Delfi, sono di corsa.. a presto

Utenti Connessi
· Gianca04:59:02
· Alex07:59:24
· SALVO18:20:15
· Mirko 1 giorno
· carlo1973 1 giorno
· Spawn 2 giorni

· Totale iscritti: 553
· Nuovo iscritto: SALVO
RSS Feeds
Subscribe to our Feeds

Latest News Latest Articles
Le nostre rubriche

Quotidiani online

Siti Web Visti per Voi

Fotogallery
Siti Amici

Siti Amici

Noi diciamo no

No alla Pedofilia

Page Rank

Powered by  MyPagerank.Net

Pagerank
Award
Corso VBA #2 : Gestione degli errori, Metodi e Proprietà
Pubblicato da :Alex | 4310 letture | Stampa
Premessa

Continuiamo il nostro percorso nell'apprendimento e conoscenza delle basi del linguaggio VBA, ma prima di addentrarci nell'argomento vorrei aprire una piccola parentesi che ci servirà comunque nel proseguo del nostro corso per presentarvi questo linguaggio che in seguito amplieremo, per ora ci limiteremo ad affrontare passo passo i problemi che potete incontrare nella personalizzazione dei vostri file Excel e in questa lezione parleremo del debug dell'applicazione ossia del controllo degli errori nell'esecuzione del codice.
Iniziamo ora un percorso che toccherà i vari aspetti e problematiche che potete trovare affrontando di primo impatto il VBA ed il suo editor, cercherò di portarvi a conoscenza dei vari problemi che potete incontrare e come risolverli.

Un altro aspetto del VBA è il suo editor ed affrontare la gestione degli errori, è molto frequente, anche per chi conosce bene il VBA, commettere degli errori, per la maggior parte sono dovuti ad errori di digitazione, o ad errori di distrazione, vediamo come dobbiamo comportarci in questi casi, nella lezione precedente abbiamo visto come entrare nell'editor, non abbiamo ancora conosciuto come gestire un errore.

Ora ci aiuteremo con degli esempi, per esporvi il percorso da seguire per la risoluzione degli errori all'interno dell'editor, lo scopo di questa lezione è proprio quello di mettervi in condizione di usare l'editor di VBA e riuscire ad interpretare i suoi messaggi e gli errori che vi può rimandare.

Per qualsiasi dubbio potete chiedere chiarimenti commentando l'srticolo, detto questo ora ritorniamo al Visual Basic Editor per spiegare come comportarsi ed agire nei casi in cui si presenti un errore inaspettato, cerchiamo ora con qualche piccolo esempio di capire come aggirare l'errore, facciamo un esempio di codice e posizioniamo il cursore alla fine dell'ultima riga di una ruotine qualsiasi che abbiamo scritto e premiamo due volte Invio, si creerà uno spazio dopo l'ultima riga ed in tale posizione proviamo ad inserire il seguente codice:

Sub prova()
Sheets("Foglio11").Range("F5").Select
End Sub


il cui significato è: vai nel Foglio 11 di questa cartella e seleziona (Select) la cella F5 Range("F5").

Tornando ad Excel (basta cliccare sulla prima icona col simbolo di Excel in alto a sinistra) e mandando in esecuzione la macro (premere ALT+F8, selezionare il nome della macro e poi Esegui) succede che ci compare un avviso come quello sotto riportato



Come si può intuire dal testo si tratta di un errore generato dal codice, se premiamo sul pulsante Debug ci verrà automaticamente aperto l'editor di VBA e verremo riportati nella routine (o Sub) che lo ha causato



Nella figura sopra riportata potrete notare che la riga di codice che ha causato l'errore è già evidenziata in giallo, questo ci facilita notevolmente le cose, abbiamo già individuato l'errore e possiamo così intervenire e correggere il codice, tuttavia l'errore ha bloccato l'esecuzione della macro e per poter continuare ad operare dobbiamo ripristinare l'editor (cioè sbloccarlo) e rimediare all'errore.
Per eseguire questa operazione basta premere sul pulsante blu in alto nella barra degli strumenti contrassegnato dalla freccia rossa, il quale interrompe il debug del codice e ripristina l'uso dell'editor.

Spieghiamo ora la natura dell'errore volontariamente provocato: nella nostra cartella di lavoro, l'errore è stato causato per il semplice fatto che non esiste all'interno della stessa un foglio denominato Foglio11, per cui VBA ha evidenziato questa situazione con quel codice un po' sibillino ed interrompendo l'esecuzione della macro, in pratica non ha trovato il percorso che gli abbiamo indicato

Programmazione ad Oggetti: Metodi e Proprietà

Continuiamo con l'esposizione dei vari metodi e funzioni che possiamo usare tramite il VBA, tenendo ben presente che il linguaggio VBA è orientato agli oggetti.
Ma cosa significa questa espressione? Si riferisce ad una tecnica di programmazione ormai invalsa in questi ultimi anni, tutto il mondo intorno a noi è pieno di oggetti: la tastiera, il mouse, lo schermo e così via, quello che contraddistingue un oggetto è una serie di caratteristiche o Proprietà.

Ad esempio il mouse è dotato di una rotellina e di due tasti, un oggetto oltre alle proprietà possiede anche dei Metodi ossia delle funzioni attraverso i quali esercitare delle azioni. Nell'esempio appena citato, (quello del mouse) tenendo premuto il tasto sinistro e facendo scorrere il mouse si seleziona una o più parole di una riga di testo.
Riferendoci alla nostra cartella di lavoro possiamo dire che essa è costituita da oggetti di varia natura, come gli oggetti grafici o i controlli (finestre di dialogo, pulsanti ecc.) incollati su un foglio, ma non è questa la peculiarità di un foglio elettronico la cui ossatura è costituita, partendo dal livello più basso, da :

- celle
- intervalli
- fogli
- cartelle di lavoro


Se osserviamo questo insieme di oggetti come un albero genealogico il capostipite, o il culmine, spetta all'oggetto, denominato Application, che rappresenta, tutti gli Oggetti di Excel. Si tratta appunto di Excel stesso. Proseguendo nella discesa genealogica troveremo i seguenti oggetti :

- l'oggetto Workbook : è la cartella di lavoro (cioè il nostro file)

- l'oggetto Worksheet : è il foglio di lavoro (Foglio1, Foglio2 ecc...)

- l'oggetto Range : è un intervallo di celle (A1: B12, C1:D12, ecc...)

Sintatticamente possiamo affermare che ciascun oggetto fa parte di una famiglia o classe e l'accesso al singolo membro di ciascuna classe si effettua attraverso metodi, "pluralistici", ai quali corrispondono insiemi di oggetti omogenei quali : Workbooks, Worksheet, Range e Cells, inoltre i membri più elevati si possono omettere nel caso che il soggetto sia attivo; vedremo meglio questo passaggio fra poche righe.

Fin qui abbiamo delineato i componenti principali cercando di esporre come vengono interpretati dal Visual Basic applicato al foglio elettronico, ma l'obiettivo vero è quello di focalizzare gli oggetti che formano l'ossatura, il nucleo di uno spreadsheet (foglio di lavoro), al cui centro, vi sono intervalli e celle con il loro contenuto di dati da elaborare o formule di legame; il loro inquadramento nel mondo Visual Basic è fondamentale e aiuterà a capire meglio tutto il resto, vediamo di interpretare quanto appena affermato usando il Visual Basic.

Con queste sintassi

Workbooks("Lezione2.xls") e Worksheets("Foglio1")

si individuano rispettivamente la cartella e il foglio di lavoro (notare i loro nomi virgolettati entro le parentesi), ma dobbiamo però tenere presente che un elemento può anche venire individuato tramite un indice, il quale può essere o il numero di ordine o il nome fra virgolette, per capire meglio il concetto di indice possiamo dire che la sintassi Workbooks(2) e Workbooks("Lezione2.xls") puntano entrambe alla stessa cartella [Lezione2.xls] a patto che questa sia la seconda fra quelle aperte contemporaneamente da Excel.

Infatti se abbiamo solo la cartella Lezione2.xls aperta, la sintassi esatta diventa Workbooks(1)
A questo punto è abbastanza chiaro che l'indice che usiamo fra parentesi nell'oggetto Workbooks varia ed è strettamente legato al numero di cartelle aperte nel momento dell'esecuzione di questa istruzione, pertanto possiamo far notare che è possibile scrivere questa istruzione in tre diversi modi:

- Application.Workbooks(1).Worksheets(1).Range("A1:B10")

- Application.Workbooks("Lezione2.xls").Worksheets(1).Range("A1:B10")

- Application.Workbooks("Lezione2.xls").Worksheets("Foglio1".Range("A1:B10")

Ricordate che poco sopra abbiamo però affermato che i membri più elevati si possono omettere quando sono attivi, per cui:

- se abbiamo Excel aperto
- se la cartella Lezione2.xls è aperta
- se infine ci troviamo nel Foglio1


possiamo ridurre tutto il listato ad un semplice

Range("A1:B10")

in caso contrario credo che sia abbastanza chiaro come agire usando gli indici per individuare il nostro intervallo (o Range).

Prestiamo inoltre attenzione alle proprietà "pluralistiche" che poco sopra abbiamo citato: le prime volte è facile scordarsi del plurale, scrivendo Workbook("Lezione2.xls") anziché Workbooks ("Lezione2.xls") oppure Worksheet("Foglio1") invece di Worksheets ("Foglio1").

Vediamo qualche esempio di codice da applicare a quanto esposto finora, ma sopratutto vediamo come automatizzare l'esecuzione di routine creando un pulsante, ad esempio apriamo la nostra cartella ("Lezione2.xls") e rientriamo nel Visual Basic Editor.
Questa volta scriveremo noi una macro direttamente senza affidarci all'aiuto del Registratore di macro utilizzato nella precedente lezione.
Ponendoci al di sotto dell'ultima riga della macro precedente (basta porre il cursore alla fine di End Sub e premere una o due volte Invio), scriviamo il seguente codice

Sub Nascondi_Foglio()
Worksheets(2).Visible = False
MsgBox "Il Foglio 2 è sparito"
End Sub


Commentiamo questo codice:

- la routine inizia con Sub (seguito dal nome della routine, le macro sono tutte sub-routine) e termina con End Sub

- l'oggetto Worksheets(2) ossia il Foglio 2, è seguito da una sua proprietà che si evidenzia con .visible, si richiama perciò la proprietà visible che consente al foglio di essere visibile o meno a seconda del fatto che tale proprietà sia dichiarata vera o falsa (in questo caso = False indica che il foglio sarà nascosto).

- MsgBox "Il Foglio 2 è sparito" è invece una funzione di VBA che permette di mostrare all'utente un messaggio che nella sua forma più semplice riporta un messaggio di avviso per l'utente (il testo racchiuso fra virgolette) ed un bottone di OK necessario per la sua chiusura.
Torniamo ora ad Excel e facciamo click col destro del mouse sulla barra degli strumenti, ci comparirà un box con delle voci, scegliamo Moduli



Ci comparirà un nuova barra flottante che possiamo ancorare alle altre barre degli strumenti semplicemente trascinandocela.



Premiamo sul pulsante evidenziato dalla freccia rossa e poi spostandoci sul foglio di lavoro teniamo premuto il pulsante di sinistra del mouse, trasciniamolo fino a raggiungere le dimensioni desiderate ed al rilascio ci comparirà il nostro pulsante. Contestualmente si aprirà anche la finestra per assegnare la macro (Nascondi_Foglio)al pulsante appena creato



Stessa operazione e identico risultato si può ottenere inserendo un'immagine sul foglio (si dovrà attivare la barra degli strumenti Disegno) e quindi tramite il solito menu contestuale ottenuto cliccando col destro sull'immagine, assegnargli la macro, Il pulsante ottenuto sarà simile al seguente:



Possiamo ridimensionare il pulsante, editarne il testo, cambiarne i caratteri ecc ... facendo click sopra al pulsante stesso col pulsante destro del mouse e scegliere, tra le voci del menù contestuale che compare, quella di cui abbiamo bisogno. Se invece vogliamo spostare il pulsante, facciamo ancora click col destro del mouse, sparirà il menù contestuale e rimarrà evidenziato il pulsante



Possiamo allora spostarlo a piacimento e ridimensionarlo trascinandolo negli angoli



Possiamo ora mandare in esecuzione la macro stessa semplicemente cliccando sul pulsante appena creato, adesso il foglio è sparito, come facciamo a farlo riapparire?

Basta creare una nuova macro che assoceremo ad un altro pulsante, con le stesse modalità di costruzione della precedente:

Sub Mostra_Foglio()
Worksheets(2).Visible = True
MsgBox "Il Foglio 2 è Ricomparso"
End Sub

I commenti sono superflui perchè il codice è esattamente identico al precedente solo che la proprietà visible è stata ora posta a True (Vero) ed in tal caso il Foglio 2 riappare, esaminate attentamente i codici e quanto esposto, e nella prossima lezione ci addentreremo più profondamente nel Visual Basic e allegheremo anche un file di esempio che raccoglie quanto finora esposto.

Come avete avuto modo di vedere abbiamo accennato anche a qualche esempio di codice, è molto importante riuscire a capire i legami fra i vari membri che legano la struttura del nostro file, ma è altrettanto importante non correre subito ad esempi e file "preconfezionati", è comprensibile la noia che le prime lezioni possano far nascere, ma per i neofiti che si avvicinano a questo linguaggio, sono fondamentali, mentre a coloro che conoscono già il linguaggio possiamo anticipare che molto presto troverete una sezione ricca di routine, codice sorgente e anche di lavori già svolti con codice sorgente libero con cui potete personalizzare i vostri file Excel.

Inoltre se vi affascina tutto questo e volete inviare i vostri lavori, verranno controllati e pubblicati con il vostro nick, concludiamo questa lezione con un breve accenno alla prossima e possiamo anticiparvi che tratteremo come usare le variabili, i cicli e interfacceremo questi argomenti con dei dati presenti nel foglio, elaborandoli direttamente da VBA, in buona sostanza cominciamo ad addentraci nel cuore del VBA.


Condividi Articolo
AddThis:
URL:
BBcode:
HTML:
Facebook Like:


php fusion  copyright © 2002 - 2011 by Nick Jones   Released as free software without warranties under GNU Affero

Theme designed by Benjamin Eriksen | PhpFusionBox.com | Edited and rewritten by Alex