Selezionando tutti i fogli visibili in una macro

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

Guida in linea di Excel suggerisce di utilizzare la funzione Array con la raccolta Fogli per selezionare i fogli per nome. Questa grande opera quando si conoscono i nomi di ciascun foglio del lavoro. Questo pone un problema quando si desidera creare il codice generico per selezionare tutti i fogli per qualsiasi cartella di lavoro. La buona notizia è che è possibile utilizzare una variante della tecnica di Microsoft per schede di riferimento in base al numero di indice. Di seguito è riportato il codice:

SelectSheets Sub ()
Dim myArray () As Variant
Dim i As Integer
Per i = 1 Per Sheets.Count
ReDim Preserve myArray (i - 1)
myArray (i - 1) = i
Next i
Sheets (myArray) .Select
End Sub

Questa grande opera, a meno che la cartella di lavoro contiene fogli nascosti, dove Sheets (i) .Visible = False. Naturalmente, il codice di cui sopra può essere adattato per ignorare fogli nascosti:

SelectSheets Sub ()
Dim myArray () As Variant
Dim i As Integer
J Dim As Integer
j = 0
Per i = 1 Per Sheets.Count
Se 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, c'è un parametro poco noto del metodo Select: il parametro Sostituire. Utilizzando il parametro Sostituire, selezionando tutti i fogli visibili diventa molto più semplice:

Sub SelectSheets1 ()
MySheet Dim As Object
Per ogni MySheet In Fogli
Con MySheet
Se .Visible = True Then .Selezionare Replace: = False
End With
Successivo MySheet
End Sub

Si noti che MySheet è definito come un tipo di dati oggetto, invece di un tipo di dati foglio di lavoro. Ciò avviene perché nei test ho incontrato un problema con Grafico fogli, non sarebbero stati selezionati perché non erano di un tipo di foglio di lavoro.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (11600) si applica a Microsoft Excel 2007 e il 2010. Si può trovare una versione di questo suggerimento per l'interfaccia del menu precedente di Excel qui: Selezione di tutti i fogli di lavoro visibili in una macro.