Come sfogliare i fogli di calcolo in vba (con esempi)
È possibile utilizzare i seguenti metodi per spostarsi tra i fogli di una cartella di lavoro di Excel utilizzando VBA:
Metodo 1: esamina tutti i fogli di calcolo
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
End Sub
Questa particolare macro esamina ogni foglio di una cartella di lavoro e imposta il valore nella cella A1 di ciascun foglio su 100.
Metodo 2: sfoglia tutti i fogli di lavoro, esclusi quelli specifici
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
Questa particolare macro scorre ogni foglio di una cartella di lavoro e imposta il valore nella cella A1 di ogni foglio su 100, ad eccezione dei fogli chiamati Sheet2 e Sheet3 .
Gli esempi seguenti mostrano come utilizzare nella pratica ciascuno di questi metodi con una cartella di lavoro Excel contenente quattro fogli vuoti:
Esempio 1: sfoglia tutti i fogli di lavoro
Possiamo utilizzare la seguente macro per impostare il valore della cella A1 su ciascun foglio della nostra cartella di lavoro in modo che sia uguale a 100:
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
Quando eseguiamo questa macro, il valore della cella A1 in ogni foglio della cartella di lavoro sarà uguale a 100:
Esempio 2: sfoglia tutti i fogli di lavoro, esclusi quelli specifici
Diciamo che vogliamo esaminare ogni foglio di lavoro e impostare il valore della cella A1 in ogni foglio su 100, ad eccezione dei fogli chiamati Sheet2 e Sheet3 .
Per fare ciò possiamo creare la seguente macro:
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
Quando eseguiamo questa macro, vedremo che Foglio1 e Foglio4 hanno un valore pari a 100 nella cella A1 .
Tuttavia, Foglio2 e Foglio3 non avranno alcun valore nella cella A1 poiché abbiamo utilizzato la funzione Case per ignorare questi fogli:
Tieni presente che in questi esempi abbiamo esaminato ogni foglio di lavoro e impostato il valore di una cella uguale a un valore specifico, solo per semplicità.
Tuttavia, se lo desideri, puoi utilizzare una sintassi simile con un’istruzione For Each per eseguire attività molto più complicate in ciascun foglio.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
VBA: come contare il numero di righe nell’intervallo
VBA: come contare le celle con testo specifico
VBA: come scrivere le funzioni COUNTIF e COUNTIFS