En Excel, seleccionar todas las hojas de trabajo visibles es tan fácil como hacer clic con el botón derecho en cualquier pestaña de la hoja y elegir Seleccionar todas las hojas. Sin embargo, realizar la misma tarea con el código VBA es más difícil.

La ayuda en línea de Excel sugiere usar la función Array con la colección Sheets para seleccionar hojas por nombre. Esto funciona muy bien cuando conoce los nombres de cada hoja en el libro de trabajo. Esto plantea un problema cuando desea crear un código genérico para seleccionar todas las hojas de cualquier libro. La buena noticia es que puede utilizar una variante de la técnica de Microsoft para hacer referencia a las hojas por número de índice. A continuación se muestra el código:

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

Esto funciona muy bien, a menos que el libro de trabajo contenga hojas ocultas, donde Sheets (i) .Visible = False. Por supuesto, el código anterior se puede adaptar para ignorar las hojas de trabajo ocultas:

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

Sin embargo, hay un parámetro poco conocido del método Select: el parámetro Reemplazar. Al usar el parámetro Reemplazar, seleccionar todas las hojas visibles se vuelve mucho más fácil:

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

Tenga en cuenta que mySheet se define como un tipo de datos de objeto, en lugar de un tipo de datos de hoja de trabajo. Esto se hace porque en las pruebas encontré un problema con las hojas de gráficos; no se seleccionarían porque no eran del tipo Hoja de trabajo.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11600) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.

Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Selecting_All_Visible_Worksheets_in_a_Macro [Seleccionar todas las hojas de trabajo visibles en una macro].