Obtener hoja de trabajo

El uso más común de VBA es la manipulación de hojas de cálculo de Excel.

Para manipular una hoja de cálculo, primero es necesario obtenerla.

VBA ofrece varios métodos para obtener una hoja de cálculo, como especificarla por nombre, por índice o obtener la hoja de cálculo activa.

En esta página, explicaremos cómo obtener una hoja de cálculo usando VBA con ejemplos específicos.

Métodos para obtener una hoja de cálculo

Obtener por nombre

Primero, explicaremos cómo obtener una hoja de cálculo usando el nombre de la hoja.

Este método es el más intuitivo y fácil de entender, ya que se basa en el nombre.

Usamos la propiedad Sheets de la clase Workbook para obtener la hoja de cálculo.

Obtener_por_nombre
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")

En el ejemplo anterior, ThisWorkbook se refiere al libro actual y utiliza la propiedad Sheets para obtener la hoja de trabajo.

Al especificar el nombre de la hoja como argumento, puede obtener la hoja de trabajo con ese nombre.

Si la hoja de destino no existe, se generará un error.

Obtener usando el índice

A continuación, se explica cómo obtener una hoja de trabajo utilizando el índice de la hoja.

Al obtener usando el índice, al igual que con el método de obtener usando el nombre mencionado anteriormente, se utiliza la propiedad Sheets de la clase Workbook para obtener la hoja de trabajo.

Obtener_usando_el_índice
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1)

Puede obtener la hoja de trabajo en ese índice especificando el índice en lugar del nombre de la hoja para la propiedad Sheets.

Dado que el índice comienza en 1, en el ejemplo anterior, se obtiene la primera hoja de trabajo en el libro.

Obtener la hoja de trabajo actualmente activa

También hay una forma de obtener la hoja de trabajo que está activa (mostrada en la pantalla) cuando se ejecuta VBA.

Puede obtener la hoja de trabajo actualmente activa utilizando la propiedad ActiveSheet.

Obtener
Dim ws As Worksheet
Set ws = ActiveSheet

En los dos métodos de obtención mencionados anteriormente, se obtenía la hoja de trabajo utilizando la propiedad Sheets de la clase Workbook, pero la propiedad ActiveSheet se puede acceder directamente desde la clase Application.

Por lo tanto, simplemente ingresando ActiveSheet, puede obtener la hoja de trabajo actualmente activa.

Sin embargo, debido a que la hoja de trabajo objetivo puede cambiar según el entorno en el que se ejecute, se debe evitar su uso imprudente. Se recomienda utilizar métodos para obtener la hoja de trabajo utilizando nombres o índices siempre que sea posible.

Para obtener más detalles sobre cómo usar la propiedad ActiveSheet, consulte la siguiente página.

ActiveSheet
Explicamos cómo obtener la hoja activa actual en Excel usando VBA, con ejemplos específicos. También discutimos los ries

Obtener todas las hojas de trabajo de un archivo de Excel usando un iterador

También es posible obtener todas las hojas de trabajo en un archivo de Excel utilizando la declaración For Each.

Obtener_todas_las_hojas_de_trabajo
Dim sheet As Worksheet

For Each sheet In ThisWorkbook.Worksheets
  Debug.Print sheet.Name
Next

ThisWorkbook.Worksheets es un objeto iterable y se puede usar la declaración For Each para obtener todas las hojas de cálculo.

En el ejemplo anterior, sheet se asigna secuencialmente a todas las hojas de cálculo en el archivo de Excel, y Debug.Print sheet.Name imprime el nombre de la hoja de cálculo.

Ejemplo específico

Veamos un ejemplo específico utilizando el método mencionado anteriormente.

Obtener por nombre

Primero, veamos el ejemplo más simple de cómo obtener una hoja de cálculo por su nombre.

Obtener
Dim ws As Worksheet, cellValue As String
Set ws = ThisWorkbook.Sheets("Sheet1")
cellValue = ws.Range("A1").Value

Debug.Print cellValue

En el ejemplo anterior, ThisWorkbook.Sheets("Sheet1") obtiene la hoja de cálculo llamada Sheet1 y usa la propiedad Range para obtener el valor de la celda A1.

Procesar todas las hojas

A continuación, veamos un ejemplo de cómo procesar todas las hojas de trabajo.

Procesar
Dim sheet As Worksheet, concatenated As String

For Each sheet In ThisWorkbook.Worksheets
  concatenated = concatenated & sheet.Name & ","
Next

En el ejemplo anterior, se utiliza la declaración For Each para procesar todas las hojas de trabajo.

En concatenated, se concatenan los nombres de todas las hojas de trabajo separados por comas.

Resumen

Se explicó cómo obtener hojas de trabajo usando VBA.

Existen múltiples formas de obtener hojas de trabajo, y dependiendo del método, la mantenibilidad y legibilidad pueden variar, por lo que es importante usarlas adecuadamente.

En particular, el método para obtener la hoja de trabajo activa puede cambiar la hoja de trabajo objetivo dependiendo del entorno en el que se ejecute, por lo que debe evitarse su uso imprudente.

Para obtener más información sobre la mantenibilidad y los puntos clave de la definición de constantes, consulte la siguiente página.

Evitar números mágicos
En programación, los números mágicos deben evitarse en principio. En otros lenguajes de programación, con un poco de apr

Utilice los métodos para obtener hojas de trabajo presentados en este artículo como referencia y adáptelos a sus necesidades laborales.

#VBA #Excel #Hoja de trabajo