Selezione di tutti i fogli di lavoro visibili in una macro (Microsoft Excel)
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: