Activar una hoja usando VBA en Excel

La aplicación del método Activate sobre un objeto Worksheet lo convierte en la hoja activa, la hoja de arriba.

Seleccionar hoja

Para poder activar una hoja primero hay que seleccionarla. Activar un objeto es simple, llame al método Activate en el objeto. Tendrás que especificar el objeto que quieres activar y ahí es donde tienes bastantes opciones que se discuten aquí.

Activar hoja por número

Se llama así:


ActiveWorkbook.Sheets(Index:=1).Activate

El código anterior activa la primera hoja del libro de trabajo especificado.

El objeto Worksheet se obtiene aquí del procedimiento Workbook Sheets.

Llamar a este método equivale a elegir la pestaña de la hoja.

Activar hoja por nombre

Activar hoja con nombre variable

La forma más habitual de referirse a una hoja es por su nombre, tal y como aparece en la pestaña de hojas:


ActiveWorkbook.Sheets(Index:="data2-17-14").Activate

Si su macro va a ser utilizada por otros, querrá añadir un tratamiento de errores adecuado, posiblemente como:


Dim ws As Worksheet
On Error Resume Next
Set ws = ActiveWorkbook.Sheets(Index:="data2-17-14")
On Error GoTo 0
If Not ws Is Nothing Then
    ws.Activate
Else
    
End If

Activar hoja por nombre en clave

También puede referirse directamente a una hoja utilizando su propiedad CodeName. Esto tiene la ventaja de que puede estar seguro de que la hoja existe. Pero esto sólo puede hacerse si la macro está en el mismo libro que la hoja, lo que no suele ser el caso.


Sheet1.Activate

Activar la hoja en función del valor de la celda

Una aplicación para querer activar una hoja basada en un valor de celda es cuando se tienen tantas pestañas que se hace difícil navegar. Una posible solución sería tener una hoja de navegación que enumere las hojas de destino y tener abierta la hoja que corresponde a la celda seleccionada.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim strWorksheet As String: strWorksheet = Target.Value
	On Error Resume Next
    Worksheets(Index:=strWorksheet).Activate
End Sub

Seleccionar hoja y celda

Una celda sólo puede seleccionarse si la hoja en la que se encuentra es la activa. Por lo tanto, generalmente precederá a la selección activando su Parent. Por ejemplo, en lugar de Application.Range("Sheet2!B2").Select será más seguro:


With Application.Range("Sheet2!B2")
    .Parent.Activate
    .Select
End With

Activar hoja en otro libro

Para activar una hoja no es necesario que el propio libro de trabajo sea el libro activo. Sólo tiene que identificar el libro de trabajo, y la hoja de trabajo que desea activar y luego hacerlo:


Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
Dim ws As Worksheet
Set ws = wb.Sheets(Index:="Countries")
ws.Activate

Activar hoja sin mostrar

No es necesario que una hoja de cálculo (¡o libro de trabajo!) esté activa para poder operar con ella. La forma de hacerlo es declarar una variable worksheet e instanciarla utilizando una sentencia Set, como se hizo en la sección anterior. Utilizar variables de esta forma en lugar de depender de que la hoja esté activa es más rápido y seguro.


Autor: Mark Uildriks
Referencia: Worksheet.Activate() | Microsoft Learn
icono

Pruebe el complemento del editor Code VBA