In Excel, selezionare tutti i fogli di lavoro visibili è facile come fare clic con il pulsante destro del mouse su qualsiasi scheda del foglio e scegliere Seleziona tutti i fogli. Tuttavia, eseguire la stessa operazione con il codice VBA è più difficile.

La guida in linea di Excel suggerisce di utilizzare la funzione Array con la raccolta Fogli per selezionare i fogli per nome. Funziona alla grande quando conosci i nomi di ogni foglio nella cartella di lavoro. Ciò pone un problema quando si desidera creare codice generico per selezionare tutti i fogli per qualsiasi cartella di lavoro. La buona notizia è che puoi utilizzare una variante della tecnica di Microsoft per fare riferimento ai fogli in base al numero di indice. Di seguito il codice:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     For i = 1 To Sheets.Count         ReDim Preserve myArray(i - 1)

myArray(i - 1) = i     Next i     Sheets(myArray).Select End Sub

Funziona alla grande, a meno che la cartella di lavoro non contenga fogli nascosti, dove Sheets (i) .Visible = False. Ovviamente, il codice sopra può essere adattato per ignorare i fogli di lavoro nascosti:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     Dim j As Integer     j = 0     For i = 1 To Sheets.Count         If Sheets(i).Visible = True Then             ReDim Preserve myArray(j)

myArray(j) = i             j = j + 1         End If     Next i     Sheets(myArray).Select End Sub

Tuttavia, esiste un parametro poco noto del metodo Select: il parametro Replace. Utilizzando il parametro Sostituisci, la selezione di tutti i fogli visibili diventa molto più semplice:

Sub SelectSheets1()

Dim mySheet As Object     For Each mySheet In Sheets         With mySheet             If .Visible = True Then .Select Replace:=False         End With     Next mySheet End Sub

Notare che mySheet è definito come un tipo di dati Object, invece che come un tipo di dati Worksheet. Questo viene fatto perché durante i test ho riscontrato un problema con i fogli grafici: non sarebbero stati selezionati perché non erano di un tipo di foglio di lavoro.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (11600) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.

Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: