Come utilizzare l'intervallo e le celle in vba?

Introduzione all’intervallo e alle celle in VBA

Quando ti guardi intorno in una cartella di lavoro di Excel, vedrai che tutto funziona attorno alle celle. Una cella e un intervallo di celle sono il luogo in cui memorizzi i tuoi dati e poi tutto inizia.

Per ottenere il massimo da VBA, devi imparare come utilizzare celle e intervalli nei tuoi codici. Per questo, è necessario avere una solida conoscenza degli oggetti Range. Usandolo, puoi fare riferimento alle celle nei tuoi codici nel modo seguente:

  • Una singola cellula.
  • Una serie di celle
  • Una riga o una colonna
  • Una gamma tridimensionale

L’OGGETTO RANGE fa parte della gerarchia degli oggetti di Excel: Applicazione ➜ Cartelle di lavoro ➜ Fogli di lavoro ➜ Intervallo e altrove all’interno del foglio di lavoro. Quindi se scrivi del codice per fare riferimento all’oggetto RANGE, sarebbe così:

 Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range

Facendo riferimento a una cella o a un intervallo di celle, puoi effettuare le seguenti operazioni:

  • Puoi leggere il valore.
  • Qui puoi inserire un valore.
  • Inoltre, puoi apportare modifiche al formato.

Per fare tutte queste cose, devi imparare come fare riferimento a una cella o a un intervallo di celle e nella sezione successiva di questo tutorial imparerai come fare riferimento a una cella in diversi modi. Per fare riferimento a una cella o a un intervallo di celle, puoi utilizzare tre metodi diversi.

  • Proprietà sulla spiaggia
  • Proprietà della cella
  • Proprietà di compensazione

Bene, quale sia il migliore tra questi dipende dalle tue esigenze, ma vale la pena impararli tutti e tre in modo da poter scegliere quello più adatto a te.

Quindi iniziamo.

Proprietà sulla spiaggia

La proprietà Range è il modo più comune e popolare per fare riferimento a un intervallo nei codici VBA. Con la proprietà Range, fai semplicemente riferimento all’indirizzo della cella. Lascia che ti dica la sintassi.

 expression.range(address)

Qui l’espressione è una variabile che rappresenta un oggetto VBA. Quindi, se devi fare riferimento alla cella A1, la riga di codice che devi scrivere sarebbe:

 Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)

Il codice sopra indica a VBA che ti riferisci alla cella A1 che si trova nel foglio di lavoro “Foglio1” e nella cartella di lavoro “Libro1”.

Nota: ogni volta che inserisci l’indirizzo di una cella nell’oggetto intervallo, assicurati di racchiuderlo tra virgolette doppie. Ma ecco qualcosa da capire. Poiché stai utilizzando VBA in Excel, non è necessario utilizzare la parola “Applicazione”. Quindi il codice sarebbe:

 Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)

E se sei nel Libro1, puoi ridurre ulteriormente il tuo codice:

 Worksheets(“Sheet1”).Range(“A1”)

Ma se ti trovi già nel foglio di lavoro “Foglio1”, puoi ridurre ulteriormente il codice e utilizzare solo:

 Range(“A1”)

Supponiamo ora di voler fare riferimento a un intero intervallo di celle (ovvero più celle), è necessario scrivere il codice in questo modo:

 Range("A1:A5")

Nel codice sopra, hai fatto riferimento all’intervallo da A1 a A5 che consiste di cinque celle. Puoi anche fare riferimento a un intervallo denominato utilizzando l’oggetto intervallo. Supponiamo di avere un intervallo denominato con il nome “Sales Discount” per fare riferimento ad esso, puoi scrivere un codice come questo:

 Range("Sales Discount")

Se vuoi fare riferimento a un intervallo non continuo, devi fare qualcosa del genere:

 Range("A1:B5,D5:G10")

E se vuoi fare riferimento a un’intera riga o colonna, devi inserire un codice come quello qui sotto:

 Range("1:1") Range("A:A")

A questo punto, capisci chiaramente come fare riferimento a una cella e all’intervallo di celle. Ma per essere il migliore, devi imparare come usarlo per fare altre cose.

1. Seleziona e attiva una cella

Se vuoi selezionare una cella, puoi usare l’intervallo. Seleziona il metodo. Diciamo che se vuoi selezionare la cella A5, tutto ciò che devi fare è specificare l’intervallo e quindi aggiungere “.Seleziona” successivamente.

 Range(“A1”).Select

Questo codice indica a VBA di selezionare la cella A5 e se desideri selezionare un intervallo di celle, fai semplicemente riferimento a quell’intervallo e aggiungi semplicemente “.Seleziona” successivamente.

 Range(“A1:A5”).Select

Esiste anche un altro metodo che puoi utilizzare per attivare una cella.

 Range(“A1”).Activate

Qui devi ricordare che puoi attivare solo una cella alla volta. Anche se specifichi un intervallo con il metodo “.Activate , selezionerà quell’intervallo ma la cella attiva sarà la prima cella dell’intervallo.

2. Immettere un valore in una cella

Utilizzando la proprietà intervallo, puoi inserire un valore in una cella o in un intervallo di celle. Capiamo come funziona utilizzando un semplice esempio:

 Range("A1").Value = "Exceladvisor"

Nell’esempio sopra, hai specificato A1 come intervallo e successivamente hai aggiunto ” .Value ” che indica a VBA di accedere alla proprietà value della cella.

La prossima cosa che hai è il segno uguale e poi il valore che vuoi inserire (devi usare virgolette doppie se inserisci un valore di testo). Per un numero, il codice sarebbe questo:

 Range("A1").Value = 9988

E se vuoi inserire un valore in un intervallo di celle, intendo più celle, tutto ciò che devi fare è specificare quell’intervallo.

 Range("A1:A5").Value = "Exceladvisor"

Ed ecco il codice se ti riferisci all’intervallo non continuo.

 Range("A1:A5 , E2:E3").Value = "Exceladvisor"

3. Copia e incolla una cella/intervallo

Con la proprietà Range, puoi utilizzare il metodo “.Copy” per copiare una cella e quindi incollarla in una cella di destinazione. Diciamo che devi copiare la cella A5, il codice corrispondente sarebbe:

 Range("A5").Copy

Quando esegui questo codice, copia semplicemente la cella A5, ma il passaggio successivo è incollare questa cella copiata in una cella di destinazione. Per fare ciò, devi aggiungere la parola chiave di destinazione dopo di essa e seguita dalla cella in cui desideri incollarla. Quindi, se volessi copiare la cella A1 e incollarla nella cella E5, il codice sarebbe:

 Range("A1").Copy Destination:=Range("E5")

Allo stesso modo, se hai a che fare con un intervallo di più celle, il codice sarebbe simile a questo:

 Range("A1:A5").Copy Destination:=Range("E5:E9")

Se hai copiato un intervallo di celle e poi hai menzionato una cella come intervallo di destinazione, VBA copierà l’intero intervallo copiato dalla cella specificata come destinazione.

 Range("A1:A5").Copy Destination:=Range("B1")

Quando esegui il codice precedente, VBA copia l’intervallo A1: A5 e lo incolla in B1: B5 anche se hai menzionato solo B1 come intervallo di destinazione.

Suggerimento: proprio come il metodo “.Copy”, puoi utilizzare il metodo “.Cut” per tagliare una cella, quindi utilizzare semplicemente una destinazione per incollarla.

4. Utilizzare la proprietà Font con la proprietà Range

Con la proprietà range, puoi accedere alla proprietà del carattere di una cella che ti aiuta a modificare tutte le impostazioni del carattere. Esistono un totale di 18 proprietà diverse per il carattere a cui puoi accedere. Supponiamo che tu voglia rendere il testo in grassetto nella cella A1, il codice sarebbe:

 Range("A1").Font.Bold = True

Questo codice indica a VBA di accedere alla proprietà BOLD del carattere compreso nell’intervallo A1 e hai impostato questa proprietà su TRUE. Ora supponiamo che tu voglia applicare la barratura alla cella A1, questo timecode sarebbe:

Come ho detto, ci sono un totale di 18 diverse proprietà che puoi utilizzare, quindi assicurati di controllarle tutte per vedere quale ti è utile.

5. Cancella la formattazione da una cella

Utilizzando il metodo “.ClearFormats”, puoi cancellare solo il formato di una cella o di un intervallo di celle. Tutto quello che devi fare è aggiungere “.ClearFormat” dopo aver specificato l’intervallo, come di seguito:

 Range("A1").ClearFormats

Quando esegui il codice sopra, cancella tutta la formattazione dalla cella A1 e se vuoi farlo per un intero intervallo, sai cosa fare, giusto?

 Range("A1:A5").ClearFormats

Ora il codice sopra rimuoverà semplicemente la formattazione dall’intervallo da A1 ad A5.

Proprietà della cella

Oltre alla proprietà RANGE, puoi utilizzare la proprietà “Cells” per fare riferimento a una cella o a un intervallo di celle nel tuo foglio di lavoro. Nella proprietà della cella, invece di utilizzare il riferimento di cella, devi inserire il numero di colonna e il numero di riga della cella.

 expression.Cells(Row_Number, Column_Number)

Qui l’espressione è un oggetto VBA e Row_Number è il numero di riga della cella e Column_Number è la colonna della cella. Quindi se vuoi fare riferimento alla cella A5, puoi utilizzare il codice seguente:

 Cells(5,1)

Ora questo codice indica a VBA di fare riferimento alla cella che si trova nella riga numero cinque e nella colonna numero uno. Come suggerisce la sintassi, devi inserire il numero della colonna come indirizzo, ma la realtà è che puoi anche utilizzare l’alfabeto della colonna, se lo desideri, semplicemente racchiudendolo tra virgolette doppie.

Il codice seguente farà riferimento anche alla cella A5:

 Cells(5,"A")

E in VBA per selezionarlo basta aggiungere “.Select” alla fine.

 Cells(5,1).Select

Il codice sopra selezionerà la cella A5 che si trova nella quinta riga e nella prima colonna del foglio di lavoro.

Proprietà OFFSET

Se vuoi giocare bene con gli intervalli in VBA, devi sapere come utilizzare la proprietà OFFSET. È utile fare riferimento a una cella che si trova a un certo numero di righe e colonne di distanza da un’altra cella.

Supponiamo che la tua cella attiva sia B5 in questo momento e che desideri navigare verso la cella che si trova 3 colonne a destra e 1 riga in basso da B5, puoi eseguire questo SHIFT. Di seguito è riportata la sintassi da utilizzare per OFFSET:

 expression.Offset (RowOffset, ColumnOffset)
  • RowOffset: in questo argomento, devi specificare un numero che indicherà a VBA quante righe vuoi esaminare. Un numero positivo definisce una linea in basso e un numero negativo definisce una linea in alto.
  • ColumnOffset : in questo argomento, devi specificare un numero che indicherà a VBA quante colonne vuoi navigare. Un numero positivo definisce una colonna di destra e un numero negativo definisce quella di sinistra.

Scriviamo ad esempio un codice semplice di cui abbiamo discusso sopra.

  1. Innanzitutto bisogna definire l’intervallo dal quale si vuole navigare e quindi digitare il codice qui sotto:
    define-the-range
  2. Successivamente, digita “.Offset” e inserisci le parentesi aperte, come di seguito:
    type-offset
  3. Successivamente, devi inserire il numero della riga e quindi il numero della colonna in cui desideri navigare.
    enter-row-and-column number
  4. Alla fine devi aggiungere “.Select” per dire a VBA di selezionare la cella verso cui vuoi navigare.
    add-select-to-tell-vba

Pertanto, quando esegui questo codice, seleziona la cella che si trova una riga in basso e 3 colonne a destra della cella B5.

Ridimensionare un intervallo utilizzando OFFSET

OFFSET non solo ti consente di navigare verso una cella, ma puoi anche ridimensionare ulteriormente l’intervallo. Continuiamo con l’esempio sopra.

 Range("B5").Offset(1, 3).Select

Il codice sopra ti indirizza alla cella E6 e ora diciamo che devi selezionare l’intervallo di celle composto da cinque colonne e tre righe di E6. Quindi quello che devi fare è, dopo aver usato OFFSET, usare la proprietà di ridimensionamento aggiungendo “.Resize”.

 Range("B5").Offset(1, 3).Resize

Ora devi inserire la dimensione della riga e la dimensione della colonna. Digita una parentesi iniziale e inserisci il numero per impostare la dimensione della riga, quindi un numero per impostare la dimensione della colonna.

 Range("B5").Offset(1, 3).Resize(3,5)

Alla fine, aggiungi “.Select” per indicare a VBA di selezionare l’intervallo e quando esegui questo codice, selezionerà l’intervallo.

 Range("B5").Offset(1, 3).Resize(3, 5).Select

Quindi quando esegui questo codice selezionerà l’intervallo da E6 a I8.

 Range("A1").Font.Strikethrough = True

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *