Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Lavorare con gli oggetti Excel (settima parte)

Premessa

Come già visto nelle lezioni precedenti, i requisiti fondamentali per poter interagire con gli oggetti di Excel sono due: avere installato una copia di Microsoft Excel ed aver precedentemente caricato la libreria oggetti di Excel disponibile nella finestra di dialogo Riferimenti. Per una maggiore comprensione, la finestra si apre cliccando sulla voce Progetto del menu principale e selezionando dal menu Progetto che si aprirà, la voce Riferimenti che è quella accompagnata dall'icona dei libri. Basterà poi selezionare la voce Microsoft Excel Object Library per poter utilizzare tutti gli oggetti di cui la libreria in questione si compone.

E' importante poter avere il pieno controllo di tutti i dati presenti sul foglio di calcolo. Ad esempio si può avere la necessità di riempie oppure copiare il Range specificato a partire dalla cella indicata o dalle celle superiori, fino a quelle inferiori.
Il metodo da utilizzare in questo caso è FillDown. In questo modo tra le altre cose, viene evitato di ripetere lunghi cicli per riempire le celle. Facciamo un esempio. Se da codice si volesse inserire nelle celle A1, A2, A3, A4, A5, A6, A7, A8, A9 e A10 lo stesso valore (ad esempio il testo "cella") si dovrà agire in questo modo: inserire il testo nella prima cella, A1 e richiamare il metodo FillDown per le celle A1-A10.
Perchè partire proprio dalla cella A1 visto che le è già stato assegnato il valore in modo 'manuale'? La ragione è che, come già accennato prima, il metodo FillDown individua un Range (nel caso in esame di celle A1,A10) la cui prima cella è quella da copiare e riprodurre nelle seguenti.
Esempio:

foglioExcel.Cells(1, 1).Value = "cella"
foglioExcel.Range("A1:A10").FillDown

Mentre con la prima linea si imposta il valore della cella A1 su "cella", con la seconda si copia tale valore nelle celle ad essa successive, ossia A2, A3, ... , A10.
Il risultato da un punto di vista grafico è il seguente:


Che cosa accade se si richiama il metodo FillDown per un Range che va al di là di una singola colonna, indicando ad esempio il seguente codice:

foglioExcel.Range("A1:B10").FillDown

Specificando la linea di codice sopra si indica che le celle A2, A10 devono essere riempite col valore della cella A1 e che le celle B2, B10 con quello della cella B1. Perciò avviando l'applicazione in questo modo si otterrà lo stesso risultato di prima perchè alla cella B1 non è stato assegnato alcun valore. In realtà le celle B2, B10 verranno riempite ugualmente, ma col valore della cella B1 ossia "".
Per ottenere un risultato si dovrà indicare espressamente il valore della cella B2, ad esempio:

foglioExcel.Cells(1, 2).Value = "colonna 2"

il risultato a questo punto sarà il seguente:


naturalmente indicando "colonna 1" e non più "cella" come valore per il Range A1,A10. Per riempire le celle in ogni direzione e non solo in verticale, esiste una serie di metodi alternativi. Uno di essi è FillLeft, che come s'intuisce, assegna il valore della cella indicata a quelle alla sua sinistra, fino alla fine del Range.
Ad esempio, partendo dalla cella F1 ossia dalla cella di coordinate 1 (riga), 6 (colonna), si può provare a riempire tutte le celle alla sua sinistra, fino alla A1:

foglioExcel.Cells(1, 6).Value = "sinistra"
foglioExcel.Range("F1:A1").FillLeft

ottenendo così il seguente effetto:


E' importante notare l'assegnazione del Range in questo secondo caso. Non è possibile indicare una selezione di celle A1,F1 anche se in altre occasioni questo potrebbe essere indifferente. La spiegazione è che, come per FillDown, la prima cella del Range indica il valore da copiare.
Indicando così F1,A1 si copia la cella F1 in E1, D1, C1, B1 e A1, mentre indicando il Range A1,F1 si sarebbe copiata la cella A1.
Anche in questo caso valgono le considerazioni fatte per il caso precedente: se si indica un Range di più colonne si dovrà indicare la prima cella di ogni colonna.
Molto simile ai metodi appena analizzati è FillRight che riempie le celle alla destra della cella di partenza, entro il Range specificato.
Ad esempio se si vuole ottenere un risultato simile al precedente, partendo però dalla cella A1 e non più dalla F1, bisogerà indicare il valore della cella A1 e richiamare il metodo FillRight specificando il Range A1,F1 (e quindi non più F1,A1):

foglioExcel.Cells(1, 1).Value = "destra"
foglioExcel.Range("A1:F1").FillRight

Il logico risultato in questo caso è il seguente:


Per terminare le considerazione su questa serie di metodi è necessario analizzare anche FillUp che assegna il valore della cella indicata a tutte le celle al di sopra di essa.
Se infatti si prende in considerazione la cella A10 e si vuole riempire il Range A10,A1 (partendo sempre dalla cella a cui è stato assegnato un valore ossia in questo caso A10):

foglioExcel.Cells(10, 1).Value = "sopra"
foglioExcel.Range("A10:A1").FillUp

Si otterrà quindi un risultato molto simile al primo analizzato. In questo caso però il punto di partenza non è la cella A1 ma la cella A2 ed il verso dell'operazione non è dall'alto verso il basso ma dal basso verso l'alto:




Soluzione dell'esercizio precedente:

'nessun esercizio precedente

Esercizio:

Proponiamo in questa lezione un semplice esercizio per cominciare a prendere confidenza con i concetti appresi nell'articolo corrente e in tutti i precedenti. La soluzione dell'esercizio sarà pubblicata nel corso del prossimo articolo.

1) aprire ed attivare una nuova sessione, una cartella ed un foglio di calcolo Excel.

2) all'avvio dell'applicazione selezionare il primo foglio di lavoro, renderlo attivo e popolare il Range A1,F10 col testo "cella" utilizzando il minor numero di volte (ne sono sufficienti due) i metodi FillDown, FillUp, FillRight e FillLeft.

Ecco un esempio di come può essere impostata l'applicazione:





Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it