Seleccionar Hojas de Trabajo
Seleccionar una sola hoja
Pasa el nombre o el número de índice de la hoja a la colección Worksheets y llama al método Select.
Public Sub SelectSingleSheet()
Worksheets("Sheet1").Select
End Sub
Public Sub SelectSingleSheetByIndex()
Worksheets(1).Select
End Sub
El índice es la posición en el libro (las hojas ocultas también cuentan). Ten en cuenta que la cadena "1" significa «la hoja llamada 1», mientras que el número 1 significa «la primera hoja».
Worksheets se refiere solo a hojas de cálculo.Sheets es una colección que incluye tanto hojas de cálculo como hojas de gráfico.Select requiere que la hoja esté visible. Si intentas seleccionar una hoja oculta se produce el error en tiempo de ejecución 1004.
Seleccionar varias hojas
Pasa los nombres de las hojas como matriz con la función Array para seleccionar varias a la vez.
Public Sub SelectMultipleSheets()
Worksheets(Array("Sheet1", "Sheet2")).Select
End Sub
Aunque haya varias hojas seleccionadas, solo una está activa. Si quieres que una hoja concreta sea la activa, ejecuta Worksheets("Sheet1").Activate después de seleccionar.
Ejemplos
Seleccionar una hoja mediante una variable
Public Sub SelectSheetDynamically()
Dim sheetName As String
sheetName = "Sheet3"
Worksheets(sheetName).Select
End Sub
Seleccionar todas las hojas cuyo nombre cumple una condición
Si el argumento Replace de Select es False, se añade una hoja sin borrar la selección actual. La clave es seleccionar la primera hoja con True (el valor predeterminado) y añadir las demás con False.
Public Sub SelectSheetsByPattern()
Dim ws As Worksheet
Dim isFirst As Boolean
isFirst = True
ThisWorkbook.Activate
For Each ws In ThisWorkbook.Worksheets
If InStr(ws.Name, "Report") > 0 And ws.Visible = xlSheetVisible Then
ws.Select isFirst ' la primera hoja reemplaza la selección; las demás se añaden
isFirst = False
End If
Next ws
End Sub
Si pasas False desde el principio, la hoja que ya está activa permanece en la selección y se incluyen hojas no deseadas.
Trabajar sin seleccionar
En la mayoría de los casos no necesitas seleccionar una hoja. Seleccionar cambia la pantalla, lo que ralentiza el proceso y puede provocar errores si otra hoja está activa mientras se ejecuta el código.
Public Sub WriteWithoutSelect()
Worksheets("Sheet1").Range("A1").Value = "Hello"
End Sub
- Indicar el nombre de una hoja que no existe provoca el error en tiempo de ejecución 9 (Subíndice fuera del intervalo).
- Para seleccionar una hoja de otro libro, activa antes ese libro.
- Si editas una celda con varias hojas seleccionadas, el cambio se aplica a la misma celda de todas las hojas seleccionadas. Al terminar, vuelve a seleccionar una sola hoja para que no ocurra sin querer.
Resumen
- Selecciona una hoja con
Worksheets("Nombre").SelectoWorksheets(Número).Select - Selecciona varias con
Worksheets(Array(...)).Select - Al añadir por condición, reemplaza la selección con la primera hoja y añade las demás con
Select False - Siempre que sea posible, evita seleccionar y haz referencia directa a la hoja