¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. VBA Excel (versiones 2021 y Microsoft 365)
  3. La programación de objetos en Excel
Extrait - VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA
Extractos del libro
VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA Volver a la página de compra del libro

La programación de objetos en Excel

Presentación

VBA Excel es un lenguaje de programación orientado a objetos, si bien no dispone de todas las funcionalidades de los lenguajes de este tipo.

La mayoría de los elementos que maneja Excel son objetos: los libros, las hojas de cálculo, los rangos de celdas, las celdas, etc.

Los objetos se organizan según un modelo jerárquico: ciertos objetos contienen otros objetos que pueden, a su vez, contener otros. Estos objetos se llaman contenedor u objetos parent. Por ejemplo, el objeto Application es un contenedor de objetos Workbook (libros abiertos en Excel), que a su vez contiene objetos Worksheet (hojas de cálculo de un libro). El contenedor principal es el objeto Application.

Un conjunto de objetos del mismo tipo constituye una colección (colección Workbooks: conjunto de libros abiertos en Excel; colección Worksheets: conjunto de hojas de cálculo de un libro).

Un objeto dispone de un conjunto de características llamadas propiedades (por ejemplo, para el objeto Application: la propiedad UserName representa el nombre del usuario, la propiedad Version devuelve el número de versión de Microsoft Excel) y de comportamientos o acciones llamados métodos (por ejemplo, para el objeto Application, el método FindFile muestra el cuadro de diálogo Abrir; el método Quit sale de Excel, etc.).

A un objeto le suceden eventos provocados por el usuario (por ejemplo:...

El modelo de objeto de Excel

1. Presentación

images/EXCEL.PNG

2. Principales objetos y colecciones

Objetos

Application

Objeto que hace referencia a la aplicación de Microsoft Excel activa.

AutoCorrect

Objeto que representa los atributos de autocorrección de Microsoft Excel.

AutoRecover

Objeto que representa las opciones de recuperación automática de un libro. Estas macros son accesibles desde Excel a partir de la pestaña Guardar del menú Herramientas - Opciones.

DefaultWebOptions

Objeto que devuelve los atributos usados por Excel para la apertura o grabación de una página web.

ErrorCheckingOptions

Objeto que representa las opciones de comprobación de errores de la aplicación de Excel.

LanguageSettings

Objeto que contiene información sobre la configuración de idioma de Excel.

Speech

Objeto que contiene los métodos y propiedades que se relacionan con las funciones de síntesis de voz.

SpellingOptions

Objeto que representa las opciones de ortografía de la aplicación.

VBE

Objeto que representa al Editor de Visual Basic.

WorkSheetFunction

Objeto que contiene todas las funciones disponibles en Excel. Este objeto permite obtener el resultado de una función aplicada a un rango de celdas. Ejemplo: Prom = Application.WorksheetFunction.Average(Selection)

Colecciones

AddIns

Colección que contiene todos los complementos (objetos AddIn).

COMAddIns

Representa los complementos...

Principios de uso de los objetos y las colecciones

1. Propiedades

Las propiedades sirven para describir un objeto. Ciertas propiedades son de solo lectura y no se pueden, por lo tanto, modificar con el código VBA.

Sintaxis

{<objeto> | <variable objeto>}.<propiedad> 

Ejemplo

'   Modificación del puntero del ratón 
Application.Cursor = xlWait 
 
'   Muestra la versión de la aplicación de Excel activa 
'   Esta propiedad es de solo lectura 
MsgBox Application.Version 
 
'   Puntero del ratón por defecto 
Application.Cursor = xlDefault 

2. Propiedades que representan objetos

Los objetos globales y los objetos definidos en el código a través de clases manejadas por VBA tienen ciertas propiedades cuyo valor se actualiza automáticamente por el sistema.

Estas propiedades específicas permiten acceder directamente a ciertos objetos: ventana activa, libro activo, celdas de la hoja activa, etc. La siguiente tabla muestra las propiedades específicas más usadas.

Propiedad

Objeto Parent

Objeto devuelto

ActiveCell

Application Window

Objeto Range que representa la primera celda activa de la ventana activa o especificada.

ActiveChart

Application Window Workbook

Objeto Chart que representa el gráfico activo.

ActiveControl

Frame Page UserForm

Objeto Control que representa el control (ActiveX) activo.

ActivePane

Window

Objeto Pane que representa el panel activo de la ventana activa.

ActiveSheet

Application Window Workbook

Objeto Worksheet que representa la hoja activa del libro activo o del libro especificado.

ActiveWindow

Application

Objeto Window que representa la ventana activa.

ActiveWorkBook

Application

Objeto Workbook que representa el libro de la ventana activa.

Parent

Objetos múltiples

Devuelve el objeto contenedor.

Selection

Application Windows

Objeto Range que representa la celda o las celdas seleccionadas.

ThisCell

Application

Devuelve la celda por la que la función definida por el usuario es llamada como objeto Range.

ThisWorkbook

Application

Objeto Workbook que representa el libro sobre el que se ejecuta el código de la macro actual.

Las propiedades específicas que devuelven un objeto Range (Cells, Offset, Columns, Rows, etc.) se explican en detalle en el capítulo Objetos de Excel....

Instrucciones usadas con los objetos

1. La instrucción With

La instrucción With permite acceder varias veces al mismo objeto, indicándolo una sola vez.

Ofrece varias ventajas:

  • Optimización del tiempo de ejecución del código.

  • Ganar tiempo en la escritura del código.

  • Mejor legibilidad del código.

Sintaxis

With <Objeto> 
    <código que usa los métodos y propiedades> 
    <que se relacionan con el objeto> 
End With 

Ejemplo

Agregar y modificar una hoja de cálculo.

With ActiveWorkbook 
   ' Crea una hoja después de la última hoja del libro activo 
   .Worksheets.Add , .Worksheets(.Worksheets.Count) 
   ' Modifica el nombre de la nueva hoja y el valor de la celda A1 
   With .ActiveSheet 
      .Name = "Síntesis" 
      .Range("A1") = "Revisión del Presupuesto" 
   End With 
End With 

2. La instrucción For Each...Next

La instrucción For Each... Next permite recorrer los objetos de una colección o de una tabla.

Sintaxis

For Each <elemento > In <grupo> 
    <secuencia de instrucciones> 
    [Exit For] 
    <secuencia...

El Examinador de objetos

1. Presentación

Dada la cantidad y diversidad de objetos de Excel, es útil poder encontrar la información que se relaciona con los distintos objetos.

El Examinador de objetos muestra la información relativa a los objetos, métodos, propiedades, eventos y constantes.

Puede acceder al Examinador de objetos de distintas maneras:

 Ver - Examinador de objetos o images/16out05.PNG (barra de herramientas Estándar) o [F2].

images/CAP03IMG02N.PNG

1. Lista de bibliotecas actualmente cargada.

2. Texto buscado: objeto, propiedad, colección, evento, método, etc.

3. Resultados de la búsqueda: lista de las clases de objetos (objetos y colecciones) y de sus miembros (objeto, colección, propiedad, evento o método). La palabra buscada puede estar en la lista de clases o en la de sus miembros.

4. Clases de objetos de la biblioteca: la clase de objeto seleccionada en la lista Resultados de la búsqueda aparece remarcada.

5. Propiedades (icono images/03ic53.PNG), métodos (icono images/03ic52.PNG), eventos (icono images/03ic51.PNG) y constantes (icono images/03ic54.PNG) se relacionan con la clase de objeto seleccionada o remarcada en la lista de la izquierda.

6. Detalle del elemento seleccionado.

2. Búsqueda en el Examinador de objetos

Para hacer una búsqueda en el Examinador de objetos, proceda de la siguiente manera:

 Indique la palabra buscada en la segunda lista desplegable.

 Haga clic en el icono images/03ico04.PNG. Si la lista Resultados de la búsqueda muestra muchos...