Discussione: Corso VBA
Visualizza messaggio singolo
Vecchio 02-06-2014, 12.16.56   #32
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
#2

Introduzione agli Oggetti




Il termine Excel Objects (collettivamente denominato Excel Object Model) fa riferimento alle entità che costituiscono una cartella di lavoro di Excel, come fogli di lavoro, righe, colonne, intervalli di celle e la stessa cartella di lavoro di Excel. Ogni oggetto in Excel ha delle proprietà, che sono memorizzate come parte di quell'oggetto. Ad esempio, le proprietà di un foglio di lavoro di Excel includono il nome del foglio, la protezione, la proprietà visibile, l'area di scorrimento, etc. pertanto, se durante l'esecuzione di una macro, volessimo nascondere un foglio di lavoro Excel, potremmo farlo accedendo all'oggetto Foglio di lavoro, e alterando la proprietà Visible.

È possibile accedere ai principali oggetti di Excel dall'oggetto "Cartelle di lavoro", che è una raccolta di tutte le cartelle di lavoro attualmente aperte e ogni oggetto "Cartella di lavoro" contiene l'oggetto "Fogli" (costituito da tutti i fogli della cartella di lavoro) e, a sua volta, ciascun oggetto "Foglio di lavoro" contiene un oggetto "Righe" (composto da tutte le righe del foglio) e un oggetto "Colonne" (costituito da tutte le colonne del foglio), etc.

E’ facile intuire che gli oggetti nel modello di programmazione di Excel sono organizzati in una gerarchia in quanto, come abbiamo appena visto, un oggetto può contenere un altro oggetto, e quell'oggetto può contenerne un altro ancora, ed il capostipite è Excel stesso, definito Application che contiene la cartella di lavoro WorkBook che a sua volta contiene il foglio di lavoro, WorkSheet che contiene le celle, Range. In sostanza l'oggetto Application contiene tutti i file che vengono creati (Workbook) e un file (Workbook) contiene tutti i fogli di lavoro (Worksheet) che si possono creare, i quali contengono l'oggetto Range che individua le celle.

Fig. 1

Per lavorare con gli oggetti in VBA è essenziale per prima cosa, sapere come fare riferimento a loro durante la scrittura del codice VBA in quanto per iniziare a lavorare con un particolare oggetto VBA, si deve identificarlo con la seguente sintassi

OGGETTO. Identificatore

Un identificatore può essere uno dei tre tipi seguenti:
1. Proprietà
2. Metodo
3. Evento

Simile agli oggetti fisici come un'auto o una sedia, gli oggetti dell'applicazione, come elencato sopra, hanno proprietà e metodi (così come eventi). Dalla sintassi sopra esposta (Oggetto.Identificatore) vediamo come fare riferimento ad un oggetto (per es. Range) passando attraverso l'intera gerarchia di oggetti VBA e questo è noto deve essere fatto come riferimento completo perché comunichi a Excel esattamente su quale oggetto si vuole lavorare facendo riferimento a tutti i suoi “genitori”.
Di solito è possibile semplificare i riferimenti completi, tuttavia, si deve comprendere come funzionano. Sappiamo già che l'oggetto nella parte superiore della gerarchia degli oggetti VBA di Excel è Application, fare riferimento a questo oggetto è molto semplice, nel Visual Basic Editor, si fa il riferimento digitando: Application

Da lì in poi, è necessario iniziare a spostarsi lungo la gerarchia utilizzando l'operatore punto (.) in altre parole, si collega ogni oggetto VBA a quello precedente (l'oggetto principale) usando un punto. Questi punti (.) vengono utilizzati per connettere e fare riferimento ai membri del modello di oggetti VBA di Excel "dall'alto verso il basso".
Per vedere questo in pratica, supponiamo di voler fare riferimento a un oggetto Range, questo oggetto si trova nella parte inferiore della piramide gerarchica, si vede dalla Fig. 1 che ci sono 2 oggetti (WorkBook e WorkSheet) tra l’oggetto Application e l'oggetto Range, per cui se vogliamo fare riferimento al valore nella cella B5 possiamo usare una sintassi nel seguente formato:

Application.Workbooks(“Prova.xlsx”).Worksheets(“Fo glio1”).Range(“B5”).Value

Dove, Prova.xlsx è il file nome del file Excel che abbiamo aperto, e stiamo raggiungendo la cella B5 del Foglio 1. Va inoltre ricordato che in VBA l'oggetto Application è sempre assunto. Ciò significa che il nostro riferimento può essere scritto come:

Workbooks(“Prova.xlsx”).Worksheets(“Foglio1”).Rang e(“B5”).Value

Và ricordato che con Workbooks(“Prova.xlsx”) e Worksheets(“Foglio1”) si individuano rispettivamente la cartella e il foglio di lavoro (notare i loro nomi virgolettati dentro le parentesi) che abbiamo aperto. Si deve 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("prova.xlsx") puntano entrambe alla stessa cartella prova.xlsx a patto che questa sia la seconda fra quelle aperte contemporaneamente da Excel, infatti se abbiamo solo la cartella prova.xlsx aperta, la sintassi esatta diventa Workbooks(1).
A questo punto è 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("B5") .Value
  • Application.Workbooks("prova.xlsx").Worksheets(1 ).Range("B5").Value
  • Application.Workbooks("prova.xlsx").Worksheets("Fo glio1").Range("B5").Value


Si deve tenere presente che i membri più elevati, nel nostro caso WorkBook e WorkSheet si possono omettere quando sono attivi, per cui:
  • Se abbiamo Excel aperto la sintassi diventa: Workbooks("prova.xlsx").Worksheets("Foglio1").Rang e("B5").Value
  • Se abbiamo la cartella prova.xlsx aperta la sintassi diventa: Worksheets("Foglio1").Range("B5").Value
  • Se infine ci troviamo nel Foglio1 la sintassi diventa: Range("B5").Value

Poiché la proprietà Value viene considerata come proprietà predefinita, in questo caso possiamo anche creare un riferimento senza il riferimento e pertanto il tutto si può esprimere in un semplice:

Range(“B5”)

Si deve inoltre prestare attenzione alle proprietà "pluralistiche", le prime volte è facile scordarsi del plurale, scrivendo Workbook("prova.xlsx") anziché Workbooks("prova.xlsx") oppure Worksheet("Foglio1") invece di Worksheets("Foglio1").

Riassumendo abbiamo visto che ci sono tre elementi principali che un oggetto può avere. Questi sono
  • 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

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

Come spiegato sopra, per manipolare un oggetto è possibile impostarne le proprietà e chiamarne i metodi.

Per accedere alla proprietà di un oggetto si deve indicare il Nome dell’oggetto seguito dalla proprietà inserendo un punto tra di loro. Per esempio: Worksheets(1).Name restituisce il nome del primo foglio di lavoro
Alcuni oggetti hanno proprietà predefinite, per esempio la proprietà di default dell'oggetto Range è Value e si può omettere di menzionare Value. In questo caso, utilizzare Range ("A1"). Value o solo Range ("A1") è lo stesso e restituirà il valore o il contenuto della cella A1.
Per accedere al metodo di un oggetto, si usa la stessa sintassi delle proprietà, indicando il Nome dell’oggetto seguito dal Metodo inserendo un punto tra di loro. Per esempio: Worksheets(1).Activate attiva il primo foglio di lavoro chiamando il metodo Activate.

Un metodo può avere argomenti che devono essere specificati e può avere argomenti facoltativi che è possibile omettere. Gli argomenti visualizzati tra parentesi quadre nella sintassi del metodo sono facoltativi mentre altri sono obbligator e possono essere forniti nell'ordine della posizione in cui sono definiti nella sintassi del metodo, separando il valore di ogni argomento con una virgola anche per gli argomenti facoltativi che potrebbero non essere specificati. In alternativa, gli argomenti possono essere forniti dal nome dell'argomento (indicato come argomenti con nome) nel qual caso la posizione in cui sono specificati diventa irrilevante.

Gli oggetti hanno anche procedure di eventi ad essi collegate che sono azioni eseguite o occorrenze che attivano un codice VBA o una macro. Una procedura evento viene attivata quando si verifica un evento come apertura / chiusura / salvataggio / attivazione / disattivazione della cartella di lavoro, selezione di una cella o modifica della selezione di celle in un foglio di lavoro, modifica del contenuto di un foglio di lavoro cella, selezionando o attivando un foglio di lavoro, quando viene calcolato un foglio di lavoro e così via.

Excel ha fornito la procedura di evento integrata- una procedura di evento viene automaticamente richiamata quando un oggetto riconosce il verificarsi di un evento. Le procedure degli eventi sono associate a oggetti come cartella di lavoro, foglio di lavoro, grafici, applicazione o controlli. Le Procedure evento vengono attivate da un evento predefinito e vengono installate in Excel con un nome standard e predefinito. come la procedura di modifica del foglio di lavoro è installata con il foglio di lavoro - "Private Sub Worksheet_Change (ByVal Target As Range)".

Nella procedura evento Modifica foglio di lavoro, l'oggetto Foglio di lavoro è associato all'evento Modifica, il che significa che con l'evento di modifica del foglio di lavoro, una sotto procedura contenente codice personalizzato viene eseguita automaticamente quando si modifica il contenuto di una cella del foglio di lavoro. Eventi personalizzati: puoi anche definire i tuoi eventi in classi personalizzate (moduli di classe),
___________________________________

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