Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

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 routine ed eseguire il debug. 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. <Formatting Type="FixedText"><![CDATA[   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").ActivateActiveSheet.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").ActivateActiveSheet.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").ActivateActiveSheet.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").ActivateRange("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").ActivateRange("Test").Select				

10: selezione di una cella relativa a un'altra 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 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").ActivateActiveSheet.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").SelectSelection.Resize(Selection.Rows.Count + 5, _   Selection.Columns.Count).Select				

14: selezione, spostamento e ridimensionamento di un intervallo specificato

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").SelectSelection.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 nel 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 in una colonna, 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).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select				
    Oppure				
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.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
OfficeKBHowTo howto contiguous how to discontiguous non-contiguous nonadjacent non-adjacent  XL2003 XL2007 XL2010
Proprietà

ID articolo: 291308 - Ultima revisione: 03/09/2014 01:17:00 - Revisione: 3.0

Microsoft Office Excel 2003, Microsoft Office Excel 2007, Microsoft Excel 2010

  • kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
Feedback