Selezione di celle e intervalli utilizzando procedure di Visual Basic in Excel

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze. Negli esempi riportati in questo articolo vengono utilizzati i metodi di Visual Basic elencati nella seguente tabella.

Metodo Argomenti
------------------------------------------
Activate nessuno
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select nessuno
Sheets index (o sheetName)
Workbooks index (o bookName)
End direction
CurrentRegion nessuno
Negli esempi forniti in questo articolo vengono utilizzate le proprietà di Visual Basic elencate nella seguente tabella.

Proprietà Utilizzo
---------------------------------------------------------------------
ActiveSheet per specificare il foglio attivo
ActiveWorkbook per specificare la cartella di lavoro attiva
Columns.Count per contare il numero di colonne nell'elemento specificato
Rows.Count per contare il numero di righe nell'elemento specificato
Selection per fare riferimento all'intervallo attualmente selezionato

1: Selezione di una cella nel foglio di lavoro attivo

Per selezionare la cella D5 nel foglio di lavoro attivo, è possibile utilizzare uno degli esempi seguenti:
ActiveSheet.Cells(5, 4).Select
Oppure
ActiveSheet.Range("D5").Select

2: Selezione di una cella in un altro foglio di lavoro nella stessa cartella di lavoro

Per selezionare la cella E6 in un altro foglio di lavoro nella stessa cartella di lavoro, è possibile utilizzare uno degli esempi seguenti:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

Oppure
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
In alternativa è possibile attivare il foglio di lavoro, quindi utilizzare il metodo 1 sopra descritto per selezionare la cella:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

3: Selezione di una cella in un foglio di lavoro in una diversa cartella di lavoro

Per selezionare la cella F7 in un foglio di lavoro in una diversa cartella di lavoro, è possibile utilizzare uno degli esempi seguenti:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
Oppure
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
In alternativa è possibile attivare il foglio di lavoro, quindi utilizzare il metodo 1 sopra descritto per selezionare la cella:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

4: Selezione di un intervallo di celle nel foglio di lavoro attivo

Per selezionare l'intervallo C2:D10 nel foglio di lavoro attivo, è possibile utilizzare uno qualsiasi degli esempi seguenti:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

5: Selezione di un intervallo di celle in un altro foglio di lavoro nella stessa cartella di lavoro

Per selezionare l'intervallo D3:E11 in un altro foglio di lavoro nella stessa cartella di lavoro, è possibile utilizzare uno degli esempi seguenti:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
In alternativa è possibile attivare il foglio di lavoro, quindi utilizzare il metodo 4 sopra descritto per selezionare l'intervallo:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

6: Selezione di un intervallo di celle in un foglio di lavoro in una diversa cartella di lavoro

Per selezionare l'intervallo E4:F12 in un foglio di lavoro in una diversa cartella di lavoro, è possibile utilizzare uno degli esempi seguenti:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
In alternativa è possibile attivare il foglio di lavoro, quindi utilizzare il metodo 4 sopra descritto per selezionare l'intervallo:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

7: Selezione di un intervallo denominato nel foglio di lavoro attivo

Per selezionare l'intervallo denominato "Test" nel foglio di lavoro attivo, è possibile utilizzare uno degli esempi seguenti:
Range("Test").Select
Application.Goto "Test"

8: Selezione di un intervallo denominato in un altro foglio di lavoro nella stessa cartella di lavoro

Per selezionare l'intervallo denominato "Test" in un altro foglio di lavoro nella stessa cartella di lavoro, è possibile utilizzare l'esempio seguente:
Application.Goto Sheets("Sheet1").Range("Test")
In alternativa è possibile attivare il foglio di lavoro, quindi utilizzare il metodo 7 sopra descritto per selezionare l'intervallo denominato:
Sheets("Sheet1").Activate
Range("Test").Select

9: Selezione di un intervallo denominato in un foglio di lavoro in una diversa cartella di lavoro

Per selezionare l'intervallo denominato "Test" in un foglio di lavoro in una diversa cartella di lavoro, è possibile utilizzare l'esempio seguente:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
In alternativa è possibile attivare il foglio di lavoro, quindi utilizzare il metodo 7 sopra descritto per selezionare l'intervallo denominato:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

10: Selezione di una cella relativa alla cella attiva

Per selezionare una cella che si trova cinque righe sotto e quattro colonne a sinistra della cella attiva, è possibile utilizzare l'esempio seguente:
ActiveCell.Offset(5, -4).Select
Per selezionare una cella che si trova due righe sopra e tre colonne a destra della cella attiva, è possibile utilizzare l'esempio seguente:
ActiveCell.Offset(-2, 3).Select
Nota Se si tenta di selezionare una cella che si trova "all'esterno del foglio di lavoro", verrà generato un errore. Il primo esempio sopra indicato restituirà un errore se la cella attiva si trova nelle colonne da A a D, in quanto lo spostamento di quattro colonne verso sinistra comporterebbe lo spostamento della cella attiva a un indirizzo di cella non valido.

11: Selezione di una cella relativa a un'altra cella non attiva

Per selezionare una cella che si trova cinque righe sotto e quattro colonne a destra della cella C7, è possibile utilizzare uno degli esempi seguenti:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

12: Selezione di un intervallo di celle spostato rispetto a un intervallo specificato

Per selezionare un intervallo di celle con le stesse dimensioni dell'intervallo denominato "Test", ma spostato di quattro righe sotto e tre colonne a destra, è possibile utilizzare l'esempio seguente:
ActiveSheet.Range("Test").Offset(4, 3).Select
Se l'intervallo denominato si trova in un altro foglio di lavoro non attivo, attivare innanzitutto il foglio di lavoro, quindi selezionare l'intervallo utilizzando l'esempio seguente:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

13: Selezione di un intervallo specificato e ridimensionamento della selezione

Per selezionare l'intervallo denominato "Database" ed estendere quindi la selezione di cinque righe, è possibile utilizzare l'esempio seguente:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select

14: Selezione di un intervallo specificato, spostamento e ridimensionamento

Per selezionare un intervallo quattro righe sotto e tre colonne a destra dell'intervallo denominato "Database", includendo due righe e una colonna in più dell'intervallo denominato, è possibile utilizzare l'esempio seguente:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select

15: Selezione dell'unione di due o più intervalli specificati

Per selezionare l'unione, ovvero l'area combinata, di due intervalli denominati "Test" e "Sample", è possibile utilizzare l'esempio seguente:
Application.Union(Range("Test"), Range("Sample")).Select
Per il corretto funzionamento di questo esempio, è necessario che entrambi gli intervalli si trovino nello stesso foglio di lavoro. Il metodo Union, inoltre, non può essere utilizzato su fogli diversi. Ad esempio, la riga seguente funziona correttamente,
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
mentre la riga riportata di seguito
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
restituisce un messaggio di errore analogo al seguente:
Errore del metodo Union per la classe Application

16: Selezione dell'intersezione di due o più intervalli specificati

Per selezionare l'intersezione di due intervalli denominati "Test" e "Sample", è possibile utilizzare l'esempio seguente:
Application.Intersect(Range("Test"), Range("Sample")).Select
Per il corretto funzionamento di questo esempio, è necessario che entrambi gli intervalli si trovino nello stesso foglio di lavoro.



Negli esempi da 17 a 21 di questo articolo viene fatto riferimento al seguente set di dati di esempio. In ogni esempio è specificato l'intervallo di celle nei dati di esempio che verrà selezionato.

A1: Nome B1: Vendite C1: Quantità
A2: a B2: € 10 C2: 5
A3: b B3: C3: 10
A4: c B4: € 10 C4: 5
A5: B5: C5:
A6: Totale B6: € 20 C6: 20

17: Selezione dell'ultima cella di una colonna di dati contigui

Per selezionare l'ultima cella in una colonna contigua, utilizzare l'esempio seguente:
ActiveSheet.Range("a1").End(xlDown).Select
Se si utilizza questo codice con la tabella di esempio, verrà selezionata la cella A4.


18: Selezione della cella vuota nella parte inferiore di una colonna di dati contigui

Per selezionare la cella al di sotto di un intervallo di celle contigue, utilizzare l'esempio seguente:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Se si utilizza questo codice con la tabella di esempio, verrà selezionata la cella A5.


19: Selezione di un intero intervallo di celle contigue in una colonna

Per selezionare un intervallo di celle contigue in una colonna, utilizzare uno degli esempi seguenti:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select

Oppure
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Se si utilizza questo codice con la tabella di esempio, verranno selezionate le celle da A1 ad A4.

20: Selezione di un intero intervallo di celle non contigue in una colonna

Per selezionare un intervallo di celle non contigue, utilizzare uno degli esempi seguenti:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select

Oppure
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
End(xlUp).Address).Select
Se si utilizza questo codice con la tabella di esempio, verranno selezionate le celle da A1 ad A6.

21: Selezione di un intervallo rettangolare di celle

Per selezionare un intervallo rettangolare di celle intorno a una cella, utilizzare il metodo CurrentRegion. L'intervallo selezionato dal metodo CurrentRegion è un'area delimitata da una combinazione qualsiasi di celle e colonne vuote. Di seguito è riportato un esempio di utilizzo del metodo CurrentRegion:
ActiveSheet.Range("a1").CurrentRegion.Select
Con questo codice verranno selezionate le celle da A1 a C4. Di seguito sono riportati altri esempi che consentono di selezionare lo stesso intervallo di celle:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select

Oppure
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
In alcuni casi può essere necessario selezionare le celle da A1 a C6. In questo esempio il metodo CurrentRegion non funzionerà, in quanto la riga 5 è vuota. Negli esempi seguenti verranno selezionate tutte le celle:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

Oppure
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select

22. Selezione di più colonne non contigue di lunghezza variabile

Per selezionare più colonne non contigue di lunghezza variabile, utilizzare la tabella di esempio e l'esempio di macro seguenti:

A1: 1 B1: 1 C1: 1 D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
Se si utilizza questo codice con la tabella di esempio, verranno selezionate le celle A1:A3 e C1:C6.

NOTE SUGLI ESEMPI

  • In genere è possibile omettere la proprietà ActiveSheet, essendo implicita se non viene denominato un foglio specifico. Ad esempio, anziché
    ActiveSheet.Range("D5").Select
    è possibile utilizzare:
    Range("D5").Select
  • Anche la proprietà ActiveWorkbook può essere generalmente omessa. A meno che venga denominata una cartella di lavoro specifica, è implicita la cartella di lavoro attiva.
  • Quando si utilizza il metodo Application.Goto, per utilizzare due metodi Cells nel metodo Range quando l'intervallo specificato si trova in un altro foglio di lavoro non attivo, è necessario includere ogni volta l'oggetto Sheets. Ad esempio:
    Application.Goto Sheets("Sheet1").Range( _
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
    Sheets("Sheet1").Cells(4, 5)))
  • Per qualsiasi elemento tra virgolette, ad esempio l'intervallo denominato "Test", è inoltre possibile utilizzare una variabile il cui valore sia una stringa di testo. Ad esempio, anziché
    ActiveWorkbook.Sheets("Sheet1").Activate
    è possibile utilizzare
    ActiveWorkbook.Sheets(myVar).Activate
    dove il valore di myVar è "Sheet1".

Riferimenti


Per ulteriori informazioni sull'utilizzo del codice di esempio riportato in questo articolo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:

290140 Esecuzione del codice di esempio per i programmi di Office XP contenuto negli articoli della Knowledge Base

Proprietà

ID articolo: 291308 - Ultima revisione: 15 dic 2016 - Revisione: 1

Feedback