VBA. Programación orientada a objetos

Las macros de Excel se crean mediante Programación orientada a objetos usando el lenguaje de programación Visual Basic for Applications (VBA). Este es un tipo de programación en el que se trabaja directamente con elementos llamados objetos.

Objetos

Un objeto representa un elemento de una aplicación. Por ejemplo, en Excel los libros, hojas de cálculo o rangos de celdas son considerados objetos. Estos objetos tendrán una serie de atributos (propiedades), se podrán realizar acciones con ellos (Métodos) y estarán relacionados con otros objetos.

En VBA para Excel, disponemos de una serie de objetos estructurados de forma jerárquica. El nivel más alto de la jerarquía corresponde al objeto “Application”, es decir, la propia aplicación Microsoft Excel.

Programación orientada a objetos. Jerarquía de objetos
  • WoorkBooks: Corresponde a los libros de Excel. Mediante este objeto podemos hacer referencia a los libros con los que estemos trabajando en la aplicación de Excel. Si queremos referirnos al archivo que contiene la macro que se está ejecutando usaremos el objeto ThisWorkbook. Con ActiveWorkbook aludimos al archivo activo.
  • WorkSheets: Son las hojas de cálculo de Excel. Mediante este objeto hacemos referencia a las hojas con las que estemos trabajando. Si necesitamos referirnos a la hoja activa utilizaremos el objeto ActiveSheet.
  • Range: Hace referencia a los rangos de celdas en una hoja de Excel. Con ActiveCell aludimos a la celda activa.

En la programación de las macros, para hacer referencia a cualquier objeto podemos usar esta jerarquía, separando los objetos con puntos ‘.’ Por tanto, si deseamos usar la jerarquía completa para seleccionar la celda A1 de la hoja activa, podemos usar el siguiente código:

Application.ThisWorkbook.ActiveSheet.Range("A1").Select

Aunque bastaría con usar la última parte de este código

Range("A1").Select

Colecciones

Una colección es un elemento que contiene un conjunto de objetos, normalmente del mismo tipo. En Excel, por ejemplo, la colección Workbooks contiene todos los objetos Workbook abiertos. Podemos identificar los elementos de una colección por número y por nombre. Por ejemplo, la siguiente instrucción identifica el primer objeto Workbook abierto.

 Workbooks(1).Select

O la siguiente instrucción hace referencia a la hoja con el nombre “hoja1”.

Sheets("Hoja1").Select

También se puede trabajar con una colección completa de objetos si los objetos comparten métodos comunes.

Programación orientada a objetos. Métodos

Los métodos son acciones que pueden realizar los objetos. Para indicar qué acción va a realizar el objeto, escribiremos el nombre del objeto, un punto y, a continuación, el método. En los ejemplos anteriores se ha usado el método Select que permite seleccionar el objeto en cuestión. Veamos otros ejemplos:

Range("A1").Copy
Sheets.Add
ActiveCell.AddComment
Workbooks.Close

En estas instrucciones se realizan las siguientes acciones usando los métodos de los objetos:

  • Copiar la celda A1
  • Añadir una hoja
  • Añadir un comentario a la celda activa
  • Cerrar el libro

Programación orientada a objetos. Propiedades

Las propiedades son atributos que nos permiten conocer o definir características de un objeto. Por ejemplo, el objeto Range tiene como propiedades, entre otras, la fuente, los bordes o el relleno de las celdas.

Podemos establecer el valor de una propiedad con una simple igualación. Es decir, escribiremos la referencia a un objeto seguido de un punto, el nombre de la propiedad, un signo igual (=) y el nuevo valor de la propiedad. Por ejemplo:

ActiveCell.Font.Color = 255 

Esta instrucción cambiará a rojo el color de la letra de la celda activa. Podemos conseguir lo mismo usando la función RGB (indicando la tonalidad rojo, verde y azul deseada):

ActiveCell.Font.Color = RGB(255, 0, 0)

Otro ejemplo:

ActiveSheet.Name = “HojaUno”

Con esta instrucción cambiamos el nombre de la hoja activa.

Existen algunas propiedades que no se pueden establecer mediante instrucciones de este tipo, son propiedades de solo lectura. Por ejemplo, mediante esta instrucción podemos conocer cuántas columnas tiene un rango:

Range(“A1:J10”).Columns.Count

Para conocer los métodos y propiedades que tiene un objeto en Excel podemos acudir a la ayuda que nos ofrece el equipo de Microsoft. Además también tenemos disponible el examinador de objetos (F2):

examinador de objetos

O podemos escribir en la ventana de código el nombre del objeto, pulsar el punto y entonces nos aparecerá el listado de métodos (icono verde) y propiedades.

Programación orientada a objetos. Propiedades y métodos

Programación orientada a objetos. Eventos

Un evento es una acción que se realiza sobre un objeto. Por ejemplo, seleccionar unas celdas, abrir un libro o crear una hoja. Gracias a los eventos podemos definir qué va a ocurrir cuando el usuario hace algo específico.

Para descubrir los eventos que tiene un objeto accederemos al Examinador de objetos (F2). Podremos distinguir los eventos al seleccionar un objeto y, en el panel derecho, buscar los elementos que tienen un icono en forma de rayo (color amarillo):

Eventos. Examinador de Objetos

Para acceder a los eventos de un objeto entramos a la ventana de código correspondiente al objeto (doble clic sobre el objeto en el Explorador de proyectos) y en los dos cuadros desplegables que aparecen en la parte superior seleccionamos el objeto a la izquierda y el evento a la derecha.

Eventos. Programación orientada a objetos

Nos aparecerán dos líneas de código para definir el evento. Entre estas líneas escribiremos todas las instrucciones que queremos que se ejecuten cuando se realice la acción definida por el evento.

Algunos ejemplos

Accedemos a la ventana de código correspondiente a nuestro libro (doble clic sobre ThisWorkBook en el Explorador de proyectos). A continuación, en esta ventana seleccionamos en la parte superior izquierda el WorkBook y en el desplegable que tenemos a la derecha el evento NewSheet.

Programación orientada a objetos. Evento nueva hoja

Y escribimos este código:

MsgBox "Has creado una nueva hoja, ¿quieres cambiarle el nombre?"

La instrucción MsgBox genera un mensaje en forma de ventana. Por tanto cuando creemos una nueva hoja en Excel nos aparecerá este mensaje:

Mensaje al crear nueva hoja

Otro ejemplo:

Accedemos a la ventana de código correspondiente a nuestra hoja (doble clic sobre la hoja en el Explorador de proyectos). A continuación, en esta ventana seleccionamos en la parte superior izquierda el WorkSheet y en el desplegable que tenemos a la derecha el evento SelectionChange.

Y escribimos este código:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "La celda activa es " & ActiveCell.Address
End Sub

Con esta instrucción nos aparecerá un mensaje cada vez que seleccionemos una celda en la hoja de cálculo. El mensaje nos indicará la celda activa.


Ahora que ya tenemos las nociones básicas sobre el Editor de Visual Basic y la programación orientada a objetos, vamos a utilizar la grabadora de macros para crear algunos procedimientos. Aprovecharemos el código generado para estudiar algo más de Visual Basic para Aplicaciones.

Diseño de macros en Excel. Con ejemplos prácticos

Esta entrada es parte de nuestro curso Diseño de macros en Excel. Con ejemplos prácticos

Diseño de macros en Excel. Con ejemplos prácticos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *