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.
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.
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
.
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.
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
.
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.
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.
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.
Utilice los métodos para obtener hojas de trabajo presentados en este artículo como referencia y adáptelos a sus necesidades laborales.