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 un macro VBA es más difícil.
La ayuda en línea de Excel sugiere el uso de la función Matriz con la colección Sheets para seleccionar hojas por nombre. Esto funciona muy bien cuando conoces los nombres de cada hoja del libro de trabajo. Esto plantea un problema cuando deseas crear un código genérico para seleccionar todas las hojas para cualquier libro de trabajo. La buena noticia es que puedes utilizar una variante de la técnica de Microsoft para hacer referencia a 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. 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
Mediante el parámetro Replace, 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
Ten en cuenta que mySheet se define como un Object, en lugar de un Worksheet. Esto se hace porque cuando realice pruebas encontré un problema con las hojas de gráficos: no se seleccionaban porque no eran de un tipo de hoja de trabajo.
Este consejo se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.
Deja una respuesta
Debes estar conectado para dejar un comentario.