HOWTO · VBA
Cómo activar una hoja de cálculo en Excel en VBA
Este artículo te ayuda a comprender cómo activar una hoja de cálculo en Excel usando VBA. Aprende varios métodos, incluida la activación por nombre, índice y variables. Con ejemplos prácticos y explicaciones claras, esta guía mejorará tus habilidades en Excel y optimizará tus flujos de trabajo.
En esta página
Para convertir una hoja de cálculo en la hoja actual en Excel VBA, llama a su método Activate. Por ejemplo, Worksheets("Sheet2").Activate selecciona la hoja de cálculo llamada Sheet2. Cuando el código solo necesita leer o cambiar celdas, a menudo es más claro hacer referencia a la hoja de cálculo directamente sin cambiar la hoja activa.
Activar una hoja de cálculo por nombre
Usa el nombre de la pestaña de la hoja de cálculo en la colección Worksheets. Un procedimiento mínimo de VBA es Sub ShowSummary(): Worksheets("Summary").Activate: End Sub. Reemplaza Summary por el nombre exacto de la pestaña, incluidos los espacios. El nombre en esta colección es el nombre visible de la hoja de cálculo, no el nombre de código VBA de la hoja. El nombre del miembro es Activate, y el tipo de objeto utilizado para una referencia de hoja es Worksheet.
Este pequeño modelo de Python muestra cómo buscar una hoja de cálculo por el nombre de su pestaña y leer el valor de una celda:
worksheets = {
"Summary": {"A1": "Ready"},
"Archive": {"A1": "Saved"},
}
selected = worksheets["Summary"]
print(selected["A1"])
Ready
El modelo ilustra la selección por nombre; en Excel VBA, usa la instrucción Worksheets("Summary").Activate anterior. El libro debe contener una hoja de cálculo con ese nombre de pestaña exacto.
Califica la colección con un libro cuando el destino puede no pertenecer al libro que contiene la macro: Workbooks("Reports.xlsx").Worksheets("Summary").Activate. El libro debe estar abierto y su nombre debe coincidir con el libro abierto. Esto es más claro que depender de qué libro esté activo en ese momento.
Activar una hoja de cálculo por índice
Una hoja de cálculo también se puede seleccionar por su posición: Worksheets(2).Activate. El índice comienza en uno, por lo que Worksheets(1) se refiere a la primera hoja de cálculo de la colección Worksheets de ese libro. Los índices son útiles cuando se procesan hojas por orden, pero pueden apuntar a una hoja de cálculo diferente después de insertar, eliminar o mover hojas. Usa un nombre cuando la identidad de la hoja importa más que su posición.
Hacer referencia a la hoja activa con ActiveSheet
ActiveSheet hace referencia a la hoja actualmente seleccionada en Excel. Por ejemplo, ActiveSheet.Range("A1").Value = "Ready" escribe en la celda A1 de esa hoja. Un Range("A1") sin calificar también usa la hoja de cálculo activa en un contexto de hoja de cálculo, por lo que depende de la selección actual de Excel. Esa dependencia puede hacer que un procedimiento afecte a la hoja incorrecta si otra acción cambia la hoja activa. Prefiere una referencia de hoja de cálculo explícita cuando se conoce el destino.
Activar una hoja cambia la selección visible de Excel; no es necesario solo para editar esa hoja. Una referencia directa como Worksheets("Summary").Range("A1").Value = "Ready" nombra el destino explícitamente.
Usar una variable de hoja de cálculo
Una variable Worksheet mantiene una referencia a una hoja de cálculo concreta para que las instrucciones posteriores puedan reutilizarla. Declara la variable, asigna el objeto con Set y luego llama a Activate o trabaja con sus celdas. Por ejemplo, las instrucciones del procedimiento son Dim ws As Worksheet, Set ws = ThisWorkbook.Worksheets("Summary") y ws.Activate. ThisWorkbook significa el libro que contiene el código VBA; usa una referencia Workbooks("Reports.xlsx") cuando el destino es un libro abierto diferente.
Después de asignar ws, una operación de celda puede usar ws.Range("A1").Value = "Ready" sin activar la hoja. Esto mantiene el destino explícito incluso si el usuario cambia la hoja seleccionada.
Activar hojas de cálculo en un bucle
Cuando la tarea realmente requiere que cada hoja de cálculo se haga visible por turnos, recorre la colección Worksheets. Un bucle de VBA se puede escribir como Dim ws As Worksheet, seguido de For Each ws In ThisWorkbook.Worksheets, ws.Activate y Next ws. Coloca dentro del bucle la acción que necesita la hoja activa. Worksheets excluye las hojas de gráficos; Sheets incluye tanto hojas de cálculo como hojas de gráficos, así que usa el primero para trabajar solo con hojas de cálculo.
Para la mayoría de las operaciones de celda repetidas, la activación es innecesaria: pon en su lugar una operación directa como ws.Range("A1").Value = "Ready" dentro del bucle. Esto evita depender de la selección activa y deja claro cada destino.
Manejar errores y límites comunes de activación
El nombre o el índice deben identificar una hoja de cálculo en el libro especificado. Un nombre mal escrito o ausente, un libro cerrado o un índice fuera de rango hacen que VBA informe de un error en tiempo de ejecución. Revisa los nombres del libro y de las pestañas, y confirma que el destino existe antes de activarlo.
Una hoja de cálculo oculta no se puede activar mientras permanezca oculta. Hazla visible primero, por ejemplo con Worksheets("Summary").Visible = xlSheetVisible, y luego actívala si el usuario necesita verla. Una hoja muy oculta también debe tener su visibilidad cambiada desde VBA o desde el Editor de Visual Basic antes de la activación.
Excel tiene una hoja activa a la vez en el libro activo. Un libro puede contener muchas hojas de cálculo, pero activar otra reemplaza la hoja activa actual. Si el objetivo es actualizar varias hojas, recorre las referencias de hojas de cálculo en un bucle y actúa directamente sobre cada una en lugar de intentar mantener varias hojas activas.