Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Usar objetos en VBA

| Sin comentarios

Todos los elementos disponibles en Excel son objetos, Excel en si mismo también es un objeto, por lo que para poder trabajar en VBA debemos poder hacer uso de cualquiera de los objetos (elementos) que utilizamos en Excel.

Dado que todos los elementos son objetos, tenemos que aprender a usar objetos en VBA, es decir debemos poder invocarlos, modificarlos, o eliminar alguno si fuese necesario. 

La organización de los objetos en Excel sigue un modelo: Modelo de objetos en Excel

 

Usar objeto correspondiente a Hojas

Dentro de ese modelo tenemos variedades de objetos, algunos de ellos por ejemplo son las colecciones en VBA, 

Para hacer referencia a un solo objeto de una colección debe poner el nombre del objeto o el número correspondiente entre paréntesis, después del nombre de la colección, por ejemplo: 

Worksheets ("Hoja1")

Observe que el nombre de la hoja está entre comillas. Si omite las comillas Excel no podrá identificar el objeto y supondrá que se trata de una variable.

Si desea trabajar con la primera hoja de trabajo de la colección, también puede usar:

Worksheets (1)

Muchos usuarios suelen emplear de forma indistinta: 

Worksheets("Hoja1")

Sheets("Hoja1")

Sin embargo existe una diferencia entre ambas en función del tipo de hoja de Excel, para ver el detalle revise: Diferencia entre Worksheets y Sheets.

 

Usar objeto correspondiente a Excel

Para usar Excel como un objeto debe emplear application, todos los demás objetos del modelo de objetos de Excel están debajo del objeto application.

Para identificar lo que se se encuentra contenido dentro de un objeto se debe usar el punto ".", por ejemplo: 

Application.Workbooks ("Libro1.xlsx" onclick="gtag('event','generico')" )

Podemos volver a usar el punto para seguir encontrando objetos dentro del libro:

Application.Workbooks ("Libro1.xlsx" onclick="gtag('event','generico')" ).Worksheets(1)

Y dentro de la hoja se puede usar el objeto correspondiente a una celda: 

Application.Workbooks ("Libro1.xlsx" onclick="gtag('event','generico')" ).Worksheets(1).Range ("A1").value

 

Podemos decir que la línea previa es una referencia completa, pues se le ha precisado a Excel exactamente qué rango se usará, de una hoja de trabajo y libro específico. 

 

Simplificar el uso de objetos en VBA

El uso de objetos mostrado en la línea: 

Application.Workbooks ("Libro1.xlsx" onclick="gtag('event','generico')" ).Worksheets(1).Range ("A1").value

Se procederá a simplificar, de forma de facilitar la lectura.

Comencemos 0mitiendo Application, pues al estar dentro de una macro de Excel, no es necesario incluirla: 

Workbooks ("Libro1.xlsx" onclick="gtag('event','generico')" ). Worksheets(1).Range ("A1").value

Si el libro "Libro1.xlsx" onclick="gtag('event','generico')" es el único archivo abierto, o estamos seguros de que es el libro activo (el libro que esta en uso), entonces podemos omitir este objeto: 

Worksheets(1).Range ("A1").value

Finalmente, si solo se tiene una hoja, o estamos seguros que estamos en la hoja activa correspondiente podemos usar: 

Range ("A1").value

Si sabe que la primera hoja de trabajo es la hoja de trabajo actualmente activa

, Excel asume

esa referencia y te permite escribir

Rango ("A1"). Valor

 

Estas formas abreviadas son muy útiles, sin embargo debemos tener cuidado con el uso de la hoja activa y libro activo, pues esta última línea siempre se ejecutará sobre la hoja y libro activos, si desea que siempre se ejecute una hoja o libro en particular debe especificar ello. 

Deja una respuesta

Los campos requeridos estan marcados con *.