ActiveSheet

Una de las situaciones más comunes en las que se utiliza VBA es la manipulación de hojas de cálculo.

Para obtener información de una hoja específica de Excel o para imprimir los resultados de cálculos en una hoja, primero es necesario obtener la hoja de destino.

VBA ofrece varios métodos para obtener una hoja, pero en esta ocasión explicaremos el método que utiliza la propiedad ActiveSheet.

Precauciones al usar ActiveSheet

La propiedad ActiveSheet es un método común para obtener una hoja y se utiliza en muchas situaciones.

Sin embargo, dado que la propiedad ActiveSheet obtiene la hoja que está activa en el momento de la ejecución del código, existe la posibilidad de que se obtenga una hoja no deseada.

Por lo tanto, se recomienda utilizar otros métodos para obtener una hoja siempre que sea posible.

Cómo usar la propiedad ActiveSheet

La propiedad ActiveSheet se utiliza para obtener la hoja que está activa en ese momento.

El uso general es el siguiente:

Uso_de_ActiveSheet
Dim ws As Worksheet
Set ws = ActiveSheet
MsgBox ws.Name

Al ejecutar el código anterior, se mostrará en un cuadro de mensaje el nombre de la hoja activa actual.

Dado que la propiedad ActiveSheet es una propiedad de la clase Application, se puede obtener simplemente escribiendo ActiveSheet en el código, lo que facilita mucho la obtención de la hoja.

Para asignarla a una variable, se debe preparar una variable del tipo Worksheet y usar la instrucción Set para asignarla.

ActiveSheet devuelve la hoja activa del libro activo. No es necesariamente el libro que contiene la macro, por lo que puede apuntar a una hoja no deseada, por ejemplo justo después de abrir otro libro. Además, si la hoja activa es una hoja de gráfico, asignarla a una variable Worksheet provoca un error.

Alternativa a ActiveSheet

Para trabajar con una hoja concreta, obtenerla por nombre es más fiable.

Operar
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Now

Los métodos para obtener una hoja se comparan en la siguiente página.

Obtener hoja de trabajo
Explicamos cómo obtener una hoja de trabajo específica usando VBA. También explicamos cómo especificar por nombre o por

Ejemplos específicos

Imprimir la hoja activa actual

Imprimir_la_hoja_activa_actual
Private Sub PrintActiveSheet()
    ActiveSheet.PrintOut
End Sub

Ingresar un valor en una celda de la hoja activa actual

Ingresar_un_valor_en_una_celda_de_la_hoja_activa_actual
Private Sub InputValueToActiveSheet()
  ' Ingresar la fecha y hora actual en la celda A1 de la hoja activa
  ActiveSheet.Range("A1").Value = Now
End Sub
#VBA #Operaciones de Excel