100% encontró este documento útil (1 voto)
1K vistas

Manual VBA Excel 2016

VBA en Excel

Cargado por

Enrique Sandoval
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
1K vistas

Manual VBA Excel 2016

VBA en Excel

Cargado por

Enrique Sandoval
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 48

1

VBA Excel 2016


Programación en Excel: Macros y lenguaje VBA
Completo y, a la vez, simple y práctico, este libro está dirigido a usuarios de Excel y a desarrolladores que deseen
crear aplicaciones amigables, fiables y potentes.

Además de los elementos básicos del lenguaje VBA (estructura del lenguaje y conceptos de programación orientada a
objetos) que permitirán automatizar el manejo de sus datos, aprenderá a crear tablas dinámicas y gráficos, a diseñar
formularios, a personalizar la interfaz de Excel, especialmente la cinta de opciones, a comunicarse con las otras
aplicaciones de Office, a importar o publicar páginas web y archivos XML y a aprovechar las funciones API de
Windows.

Cada capítulo incluye numerosos ejemplos. El libro concluye con un ejercicio integrador que lo guiará a través de la
creación completa de una aplicación Excel.

Los ejemplos incluidos en este libro pueden descargarse en esta página.

Los capítulos del libro:


Prólogo – Presentación – El lenguaje VBA – La programación de objetos en Excel – Objetos de Excel – Tablas dinámicas
y gráficos – Cuadros de diálogo – Formularios – Mejoras en la interfaz de usuario – Administración de eventos –
Depuración y administración de errores – Comunicación con las aplicaciones Office 2016 – Internet – Programación
Windows – Código de una miniaplicación – Anexos

Michèle AMELOT
Formadora y, a la vez, especialista en el desarrollo de aplicaciones ofimáticas, Michèle AMELOT ayuda desde hace más
de quince años a las empresas en sus proyectos informáticos. Es este profundo conocimiento de las necesidades de los
usuarios y de los desarrolladores, lo que le permite, a través de sus libros (VBA Excel y VBA Access, todas las
versiones), facilitar el aprendizaje y la práctica en la programación en lenguaje VBA.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
2 - 1-
Introducción

Este libro está dirigido a usuarios de Excel o a programadores que deseen automatizar el manejo de datos bajo Excel
o desarrollar aplicaciones de gestión, reporte o análisis aprovechando las capacidades de la hoja Excel.

El objetivo del libro es presentar, de una manera accesible, todo el abanico de posibilidades del lenguaje VBA. Los
diferentes ejemplos incluidos, que se pueden descargar desde la página Información, le permitirán llevar a la
práctica, fácilmente y de manera progresiva, los conocimientos adquiridos.

El único requisito necesario para aprovechar el contenido de este libro es un buen conocimiento de la interfaz de
Excel. Nociones de programación o el conocimiento de algún lenguaje le ayudarán a manejar el lenguaje aunque no
es imprescindible para aprovechar este libro.

En primer lugar, se familiarizará con el código VBA y aprenderá a usarlo para manejar los objetos de Excel (tales como
libros, hojas de cálculo, rangos de celdas, tablas dinámicas, gráficos...), especialmente en la automatización de ciertos
procedimientos.

En una segunda etapa, descubrirá progresivamente cómo crear aplicaciones profesionales en Excel a través de los
siguientes conceptos:

z Uso de los cuadros de diálogo predefinidos para interactuar con el usuario.

z Creación de formularios personalizados para la introducción y presentación de datos de Excel o cualquier otro tipo de
datos.

z Mejora de la interfaz de Excel, especialmente en la personalización de la cinta de opciones de Microsoft Office.

z Optimización de la confiabilidad del código VBA gracias a la integración de opciones para el tratamiento de errores.

z Manejo de otras aplicaciones de Microsoft Office 2016: Word, Access y Outlook.

z Acceso a las capacidades de Internet: importar y publicar páginas web y archivos XML.

z Control del sistema operativo a través de la llamada a funciones API de Windows (Application Programming Interface).

Finalmente, el último capítulo lo guiará a través de la creación completa de una aplicación de Excel. Esta aplicación
permite manejar presupuestos a través de las siguientes características: creación de presupuestos en formato Excel
a partir de datos tomados de una base de datos de Access, registro de los presupuestos en carpetas especificadas
según el cliente, búsqueda de presupuestos según diversos criterios y otras opciones.

Al terminar el libro, usted quedará convencido de que el lenguaje VBA no se limita a automatizar tareas en Excel, sino
que también le permite realizar aplicaciones profesionales dotadas de una interfaz amigable.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
3 - 1-
Presentación del lenguaje VBA

Visual Basic para Aplicaciones (VBA) es el lenguaje de programación común a todas las aplicaciones del paquete
Microsoft Office 2016 (Word, Access, Excel, Outlook y PowerPoint).

1. Objetivos del lenguaje VBA

Trabajando en Excel, el lenguaje VBA permite:

z Automatizar acciones repetitivas: con VBA puede realizar en una única operación todo un grupo de comandos de
Excel.

z Interactuar sobre los libros de Excel: el contenido y la presentación de todos los elementos incluidos en un libro
(hojas, celdas, gráficos, etc.) se pueden modificar a través de código VBA.

z Crear formularios personalizados: los formularios son los cuadros de diálogo compuestos por controles ActiveX
(cuadros de texto, listas desplegables, etc.), a los que se les puede asociar código VBA. Los formularios permiten
crear interfaces amigables para la entrada o la salida de información.

z Generar automáticamente tablas dinámicas y gráficos: así podrá automatizar la creación de estadísticas a
partir de sus datos de Excel (o de los datos de la empresa exportados a Excel).

z Personalizar la interfaz de Excel: la cinta de opciones de Office 2016 es totalmente personalizable y se pueden
asociar macros creadas en lenguaje VBA a los comandos de la cinta o a la barra de herramientas de acceso rápido.

z Modificar las opciones de Excel: a cada opción de Excel le corresponde una propiedad de un objeto VBA. Por
ejemplo, puede modificar el tipo de fuente por defecto a partir de las propiedades StandardFont (fuente) y
StandardFontsize (tamaño de fuente) del objeto Application.

Ejemplo:

Application.StandardFont = «Arial»

Application.StandardFontSize = «10»

z Comunicar Excel con otras aplicaciones de Microsoft Office: VBA permite intercambiar información entre las
aplicaciones de Office usando objetos específicos propios de cada uno. Por ejemplo, usted puede insertar una tabla o
un gráfico de Excel en un archivo de Word, crear mensajes de Outlook con un archivo de Excel adjunto, etc.

2. Algunas definiciones

Proyecto

Cada libro abierto en Excel tiene asociado un proyecto que contiene todos los módulos de código VBA
agrupados en categorías.

Módulo

Los módulos contienen las macros grabadas y sus propios procedimientos y funciones escritos en VBA.
Los módulos se pueden exportar como archivos independientes para luego ser importados en otros
libros.

Procedimiento

Los procedimientos son subprogramas escritos en VBA. Cada macro grabada genera un procedimiento

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
4 - 1-
con el mismo nombre de la macro. De la misma manera, puede crear procedimientos usando la
instrucción Sub.

Función

Las funciones son procedimientos que devuelven un valor. Para crear una función, se debe utilizar la
instrucción Function.

3. Escritura de código VBA

Hay dos maneras de crear un procedimiento VBA:

z Generar automáticamente el código a partir de la grabación de macros.

z Escribir directamente el código del procedimiento en el Editor de Visual Basic (o entorno VBE).

La primera solución es más sencilla, pero mucho más limitada que la segunda. Los procedimientos generados
automáticamente solo permiten automatizar acciones repetitivas realizadas con Excel (formato de celdas, ordenar
datos, etc.).

Si desea efectuar operaciones específicas, como algoritmos de cálculo, intercambio de mensajes y de información
con el usuario, controlar la coherencia de datos en un libro o cualquier otra operación que haga uso de estructuras
repetitivas o condicionales, debe crear sus propios procedimientos en el editor de VBA.

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
5
Las macros de Excel

1. Mostrar la pestaña Desarrollador en la cinta de opciones

Para escribir macros, ejecutar macros grabadas o crear aplicaciones de Excel, debe mostrar la pestaña
Desarrollador de la siguiente manera:

Haga clic en la pestaña Archivo y luego en Opciones.

Seleccione la categoría Personalizar cinta de opciones.

Dentro de Personalizar cinta de opciones, en la lista Pestañas principales, marque la opción


Desarrollador.

Haga clic en el botón Aceptar: la pestaña Desarrollador se añadirá a la cinta de opciones de Excel, a la
derecha de la pestaña Vista.

2. Descripción de la pestaña Desarrollador

a. Grupo Código

Nombre del botón Descripción

Abre el entorno de desarrollo. El método abreviado de teclado es [Alt]


[F11].

Muestra la lista de macros. El método abreviado de teclado es [Alt][F8].

Comienza la grabación de una macro.

Permite usar referencias relativas a la primera celda seleccionada.

Personaliza la configuración de seguridad de las macros.

b. Grupo Complementos

Nombre del botón Descripción

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
6 - 1-
Permite descargar complementos de Office.

Permite seleccionar macros grabadas como complementos.

Permite seleccionar complementos COM (librerías de funciones complementarias).

c. Grupo Controles

Nombre del botón Descripción

Permite insertar controles (formularios o ActiveX) en Excel.

Activa o desactiva el modo Diseño. En el modo Diseño se pueden seleccionar y


modificar los controles ActiveX, pero no se pueden ejecutar.

Muestra las propiedades del objeto de Excel seleccionado (hoja o control).

Permite acceder directamente al código asociado al control seleccionado.

Ejecuta un cuadro de diálogo personalizado.

3. Grabar una macro

a. Grabar la primera macro

Veamos cómo crear una macro que aplique un borde y un relleno en las celdas seleccionadas.

Seleccione una rango de celdas.

Haga clic en el botón en la pestaña Desarrollador o en la barra de estado.

En el cuadro de diálogo que aparece, escriba el nombre de la macro, su descripción e indique, si lo


desea, el método abreviado de teclas asociado.

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
7
Haga clic en el botón Aceptar para iniciar la grabación.

Realice en Excel las operaciones que desee grabar. Por ejemplo, aplique un relleno y un borde al rango
actualmente seleccionado.

Haga clic en el botón de la pestaña Desarrollador para terminar la

grabación (también puede usar el mismo botón en la barra de estado).

b. Ejecutar una macro

Para ejecutar una macro desde Excel:

Haga clic en el botón de la pestaña Desarrollador o pulse el método abreviado de teclas [Alt]

[F8] y luego haga doble clic en el nombre de la macro que desea ejecutar.

O pulse la combinación de teclas asociada a la macro.

Para visualizar la información relativa a una macro (método abreviado de teclado y descripción), seleccione la
macro en la lista y haga clic en el botón Opciones.

Para detener la ejecución de una macro, pulse [Escape] o [Ctrl][Pausa].

c. Grabar una macro con referencias relativas

Si graba una macro en modo de referencias absolutas (modo por defecto), los rangos de celdas referenciados en
las operaciones de selección, desplazamientos... serán fijos. Por ejemplo: Range("A2") designa la celda A2.

Si graba una macro en modo de referencias relativas, los rangos de celdas serán expresados en relación con la
posición de la primera celda activa. Por ejemplo: ActiveCell.range("A2") designa la celda ubicada bajo la celda
activa, ActiveCell.range("B1") designa la celda ubicada a la derecha de la celda activa.

ActiveCell.range("A1") siempre hace referencia a la primera celda activa. A1 se puede considerar la referencia
relativa a la primera celda activa.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
8 - 3-
Para grabar una macro con referencias relativas:

Haga clic en el botón de la pestaña Desarrollador: el botón quedará activo

(se verá destacado).

Si vuelve a hacer clic en el botón , este quedará desactivado y las macros

se grabarán con referencias absolutas.

Ejemplo

La misma secuencia de operaciones se ha registrado en dos macros: la primera (RefRelativa) se grabó con la opción
referencias relativas; la segunda (RefAbsoluta), con la opción referencias absolutas.

La secuencia de operaciones es la siguiente:

z Seleccionar un rango de celdas.

z Desplazar el rango dos filas hacia abajo y una columna a la derecha.

Sub RefRelativa()
’ Referencias relativas
ActiveCell.Range(”A1:B7").Select
Selection.Cut Destination:=ActiveCell.Offset(2, 1).Range(”A1:B7")
ActiveCell.Offset(2, 1).Range(”A1:B7").Select
End Sub
___________________________________________________________________
Sub RefAbsoluta()
’ Referencias absolutas
Range(”B2:C8").Select
Selection.Cut Destination:=Range(”C4:D10")
Range(”C4:D10").Select
End Sub

d. Definir el lugar de almacenamiento de una nueva macro

Para definir el lugar de almacenamiento de una nueva macro:

Haga clic en el botón de la pestaña Desarrollador o pulse el método abreviado [Alt][F8].

Abra la lista Macros en y seleccione el libro en el que desea crear la macro.

- 4- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
9
Si elige Libro de macros personal, la macro se grabará en el libro personal.xlsb; la macro será accesible desde
todos los libros Excel.

e. Eliminar una macro

Para eliminar una macro:

Haga clic en el botón de la pestaña Desarrollador o pulse el método abreviado [Alt][F8].

Seleccione la macro que desea eliminar y haga clic en el botón Eliminar. Haga clic en el botón Sí para
confirmar la eliminación.

f. Guardar un libro con macros

Si ha creado macros en un libro y lo guarda por primera vez, aparecerá el siguiente mensaje:

Haga clic en No para no guardar el libro sin las macros.

En el cuadro Guardar como, abra la lista Tipo y seleccione Libro de Excel habilitado para macros

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
10 - 5-
(*.xlsm).

Los libros que contienen macros tienen la extensión xlsm (en vez de xslx) y su icono se distingue por un signo de
exclamación.

También puede grabar un nuevo libro con macros mediante las siguientes operaciones:

Haga clic en la pestaña Archivo y luego en Guardar como.

En el cuadro Guardar como, abra la lista Tipo y seleccione la opción Libro de Excel habilitado para
macros (*.xlsm).

4. Las macros y la seguridad

La configuración de seguridad de las macros permite controlar lo que ocurre al abrir un libro que contiene macros.

Las modificaciones de la configuración de seguridad de macros rigen solamente en Excel y no afectan al resto de las
aplicaciones de Microsoft Office.

a. Modificar la configuración de seguridad

Haga clic en el botón de la pestaña Desarrollador.

Dentro de Configuración de macros, seleccione la opción deseada (vea en la siguiente sección:


Descripción de las diferentes opciones de seguridad).

Haga clic en Aceptar para confirmar su elección.

Si se cambia la configuración de seguridad, las nuevas opciones se aplicarán a todos los libros, excepto a los libros
actualmente abiertos. Para aplicarlas a estos libros, debe cerrarlos y abrirlos nuevamente.

b. Descripción de las diferentes opciones de seguridad

Deshabilitar todas las macros sin notificación

Todas las macros y todas las advertencias de seguridad serán deshabilitadas.

Deshabilitar todas las macros con notificación

Es la opción por defecto. Las macros serán deshabilitadas pero aparecerá una advertencia de
seguridad en la barra de mensajes (bajo la cinta de opciones) para los libros que contienen macros.

Deshabilitar todas las macros excepto las firmadas digitalmente

- 6- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
11
Si las macros de un libro tienen firma digital de un origen aprobado, las macros se podrán ejecutar. Si
el origen no está autorizado, aparecerá una notificación: en este caso es posible habilitar las macros
firmadas o aprobar el origen. Las macros sin firma digital no se podrán habilitar.

Habilitar todas las macros

Si selecciona esta opción, todas las macros serán habilitadas. Se recomienda no usar esta opción de
forma permanente.

Cualquiera que sea la opción elegida, si instala un programa antivirus compatible con Microsoft Office System 2016,
los libros que contengan macros serán analizados antes de abrirse.

Confiar en el acceso al modelo de objetos de proyectos de VBA

Este parámetro es para los desarrolladores y sirve para controlar o autorizar el acceso por programa
al modelo de objetos VBA (formularios, módulos y módulos de clase). La manipulación de los objetos
se hace a través de la propiedad VBComponents, que devuelve la colección de componentes de un
proyecto.

c. Habilitar las macros cuando aparece la advertencia de seguridad

Si ha seleccionado la opción Deshabilitar todas las macros con notificación, aparecerá la siguiente advertencia
bajo la cinta de opciones cuando abra un libro que contiene macros:

Para habilitar las macros del libro, haga clic en el botón Habilitar contenido. A partir de ahora, el libro pasará a ser
un documento confiable y la advertencia de seguridad no aparecerá la próxima vez que lo abra.

Un documento se considera confiable para una determinada ubicación: si cambia la ubicación de un documento
aprobado, volverá a aparecer la advertencia de seguridad la próxima vez que lo abra.

Las macros se pueden habilitar solo para una sesión (es decir, hasta que cierre el libro que las contiene):

Al aparecer la advertencia de seguridad, haga clic en la pestaña Archivo y seleccione la sección


Información.

Dentro de Advertencia de seguridad, haga clic en Habilitar contenido y luego en Opciones avanzadas.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
12 - 7-
En el cuadro Opciones de seguridad de Microsoft Office, seleccione la opción Habilitar contenido para
esta sesión.

Desaparecerá la advertencia de seguridad, aunque volverá a aparecer la próxima vez que abra el libro.

d. Activar las macros en una ubicación dada

Puede definir una lista de ubicaciones de confianza para que los libros que se encuentren en ella se consideren
confiables:

Haga clic en el botón de la pestaña Desarrollador.

En el menú de la izquierda, seleccione la categoría Ubicaciones de confianza.

Haga clic en el botón Agregar nueva ubicación.

Haga clic en el botón Examinar. Localice y seleccione la carpeta deseada y luego haga clic en Aceptar: la
ruta seleccionada se agregará a la lista de ubicaciones de confianza.

e. Firmas electrónicas de macros

Para firmar digitalmente un proyecto macro, debe:

z Obtener un certificado digital de parte de una autoridad de certificación comercial, como Verisign (www.verisign.es) o
Thawte (www.thawte.com), e instalarlo.

z Firmar digitalmente su proyecto. Para ello, pase al entorno VBE (accesible desde el comando de

la pestaña Desarrollador) y seleccione la opción Firma digital del menú Herramientas. Haga clic en el
botón Elegir para seleccionar su certificado.

Para probar sus proyectos macros en su ordenador, puede crear su propio certificado de autofirma con la ayuda de
Selfcert.exe (programa distribuido con Microsoft Office 2016 y con los ejemplos de este libro).

5. Modificar el código de una macro

Una macro es un procedimiento escrito en lenguaje VBA. Un procedimiento VBA es una secuencia de instrucciones
agrupadas en un bloque de código que comienza con Sub y termina con End Sub.

Para acceder al código de una macro:

Haga clic en el botón de la pestaña Desarrollador o pulse el método abreviado [Alt][F8].

Seleccione la macro que desea modificar y haga clic en el botón Modificar.

El código de la macro aparecerá en una ventana del entorno Microsoft Visual Basic (ver El entorno de desarrollo VBE,
en este capítulo).

- 8- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
13
Puede modificar o completar el código dentro de este procedimiento.

Ejemplo

Inserte el siguiente código al final del procedimiento:

...
MsgBox "El formato de celdas " & Selection.Address _
& vbCr & "se ha modificado correctamente"
End Sub

Para probar su procedimiento, haga clic en el icono o use la tecla [F5]. Aparecerá el siguiente mensaje:

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
14 - 9-
Asignar una macro

Una macro se puede asociar a los siguientes elementos:

z Comandos personalizados en la cinta de opciones.

z Botones de comando en la barra de herramientas de acceso rápido.

z Controles u objetos insertados en las hojas de Excel (botones de comando, imágenes, etc.).

1. Acceso a una macro desde la cinta de opciones de Office 2016

Microsoft Office 2016 ofrece la posibilidad de personalizar la cinta de opciones: puede agregar, eliminar o reasignar
las pestañas, grupos y comandos de la cinta para disponer de aplicaciones personalizadas.

Para personalizar la cinta de opciones:

Haga clic en el botón derecho del ratón sobre la cinta y seleccione la opción Personalizar la cinta de
opciones.

Haga clic en la pestaña Archivo, luego en Opciones y seleccione la categoría Personalizar cinta de
opciones.

Aparecerá el siguiente cuadro:

Para insertar macros en una nueva pestaña:

Haga clic en el botón Nueva pestaña. Se agregará una pestaña y un grupo a la lista de pestañas
principales.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
15 - 1-
Para cambiar el nombre de la pestaña y del grupo que acaba de crear, haga clic en el botón Cambiar
nombre. El menú contextual también le permite agregar pestañas o grupos.

Despliegue las opciones dentro de Comandos disponibles en: (a la izquierda y arriba) y seleccione
Macros. Aparecerá la lista de macros disponibles.

Seleccione la macro que desea agregar al grupo y haga clic en Agregar.

Para modificar el nombre y el icono de la macro haga clic en el botón Cambiar nombre.

También puede cambiar el orden de las pestaña, grupos y comandos con las flechas situadas a la
derecha de la lista.

Ejemplo de personalización:

Para confirmar esta personalización, haga clic en Aceptar. La nueva pestaña aparecerá en la cinta de
opciones de Excel 2016:

Usted puede restablecer la cinta de opciones en cualquier momento desde el cuadro de diálogo para personalizar la
cinta, haciendo clic en el botón Restablecer (puede restablecer toda la cinta o solamente una pestaña).
También puede importar una cinta personalizada haciendo clic en el botón Importar o exportar.

2. Asociar una macro a un icono de la barra de herramientas de acceso rápido

También puede insertar un comando para ejecutar una macro en la barra de herramientas de acceso rápido:

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
16
Haga clic en el botón derecho del ratón sobre la cinta de opciones y seleccione la opción Personalizar
barra de herramientas de acceso rápido.

En la lista desplegable Comandos disponibles en situada arriba y a la izquierda, seleccione Macros.


Aparecerá la lista de macros disponibles.

Seleccione la macro que desee y haga clic en el botón Agregar. La macro pasará a la lista de la derecha.

Haga clic en el botón Modificar... para seleccionar un nuevo icono para la macro.

Puede modificar el orden de los comandos con las flechas ubicadas a la derecha de la lista.

Puede seleccionar un libro en la lista desplegable Personalizar barra de herramientas de acceso rápido
situada arriba y a la derecha. En ese caso las modificaciones solamente afectarán al libro indicado.

Haga clic en Aceptar.

Aparecerá un nuevo comando en la barra de acceso rápido para ejecutar la macro Bordes.

3. Asociar una macro a un botón de comando

Haga clic en el botón de la pestaña Desarrollador.

Dibuje el botón con la herramienta (parte superior izquierda de la barra de Controles de

formulario).

Al soltar el botón del ratón, aparecerá el cuadro de diálogo Asignar macro.

Seleccione el Nombre de la macro en la lista y haga clic en Aceptar.

4. Asignar una macro a una imagen

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
17 - 3-
Inserte una imagen haciendo clic en el botón de la pestaña Insertar.

Haga clic en el botón derecho del ratón y seleccione la opción Asignar macro.

Seleccione el Nombre de la macro en la lista y haga clic en el botón Aceptar.

5. Asociar una macro a una zona de un objeto gráfico

Inserte un objeto gráfico (imagen, imagen prediseñada, forma o SmartArt, accesibles desde el grupo
Ilustraciones de la pestaña Insertar).

Para definir en el objeto una zona que permita ejecutar una macro, haga clic en (en la pestaña

Insertar), seleccione la forma deseada y dibuje la forma dentro del objeto que acaba de crear.

Haga clic en el botón derecho del ratón y seleccione la opción Asignar macro.

Seleccione el Nombre de la macro en la lista y confirme haciendo clic en el botón Aceptar.

Seleccione la forma insertada. Aparecerá la sección Herramientas de dibujo; haga clic en la pestaña
Formato.

En el grupo Estilos de forma de la pestaña Formato, haga clic en la lista y luego en

En el mismo grupo Estilo de forma de la pestaña Formato, haga clic en la lista ,

luego en .

Ahora, al hacer clic en la forma, se ejecutará la macro asociada.

6. Asociar una macro a una imagen Control ActiveX

Active el modo Diseño (si no está activo) haciendo clic en el botón de la pestaña Desarrollador.

Haga clic en el botón de la pestaña Desarrollador.

Dibuje una imagen con la herramienta (dentro de los controles ActiveX) y suelte el botón del ratón.

Ahora puede mostrar y modificar las propiedades de la imagen (en particular, asociar una imagen por

- 4- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
18
medio de la propiedad Picture), haciendo clic en el botón de la pestaña

Desarrollador.

Haga doble clic en la imagen.

Dentro del procedimiento VBA asociado a la imagen, escriba la instrucción Call seguida del nombre de la
macro que desea ejecutar.

Desactive el modo Diseño haciendo clic en el botón de la pestaña Desarrollador.

Haga clic en la imagen: se ejecutará la macro Bordes.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
19 - 5-
El entorno de desarrollo VBE

VBE (Visual Basic Editor) es el entorno en el que puede escribir, modificar y probar su código VBA. Este entorno se
llama también IDE (Integrated Development Environment) o editor de VBA.

El entorno VBE pone a su disposición numerosas herramientas para facilitar la programación y la puesta a punto de
su código VBA: herramientas de depuración, introducción asistida, explorador de objetos, etc.

1. Acceso al entorno VBE

Para acceder al entorno VBE desde Excel, haga clic en el botón de la pestaña Desarrollador o

pulse la combinación [Alt][F11].

2. Cerrar el entorno VBE

Para cerrar el entorno VBE y volver a Excel:

Haga clic en el aspa roja ubicada arriba a la derecha de la ventana principal del entorno VBE.

Haga clic en la opción Cerrar y volver a Microsoft Excel del menú Archivo.

3. Volver a Excel

Para volver a Excel sin cerrar el entorno VBE, use cualquiera de estas dos posibilidades:

Haga clic en el icono de la barra de herramientas Estándar.

Pulse el método abreviado [Alt][F11].

4. Descripción del entorno VBE

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
20 - 1-
Todas las ventanas del entorno VBE se pueden visualizar desde el menú Ver.

(1) La barra de herramientas Estándar

1 Ver a Microsoft Excel 10 Ejecutar Sub


2 Insertar UserForm 11 Interrumpir
3 Guardar libro 12 Restablecer
4 Cortar 13 Modo de diseño
5 Copiar 14 Explorador de proyectos
6 Pegar 15 Ventana de Propiedades
7 Buscar 16 Examinador de objetos
8 Deshacer 17 Cuadro de herramientas
9 Rehacer 18 Ayuda de Microsoft Visual Basic
19 Posición actual en la ventana de código

(2) El explorador de proyectos

Cada libro abierto en Excel tiene asociado un proyecto. El explorador de proyectos permite ver todos los proyectos y
todos los módulos de cada proyecto según una estructura en árbol. Los módulos se agrupan en cuatro categorías:

z Módulos asociados a objetos de Excel (libro y hojas).

z Módulos asociados a formularios.

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
21
z Módulos estándares.

z Módulos de clase.

Cada módulo puede contener muchos procedimientos.

(3) La ventana Propiedades

Muestra las propiedades relativas al libro, a las hojas de cálculo, a las hojas gráficas y a los formularios.

(4) La ventana Código

En esta ventana aparecen dos zonas con listas desplegables:

z La zona objeto (10) muestra la lista de los objetos del módulo.

z La zona procedimiento (11) muestra los procedimientos o los eventos del objeto seleccionado en la zona objeto. Los
eventos ya usados aparecen en negrita.

(5) Instrucciones que se completan automáticamente

Cuando se escribe el nombre de un objeto seguido de un punto, aparece automáticamente una lista desplegable
con los métodos, propiedades y constantes disponibles para ese objeto.

Si la lista no aparece, seleccione Opciones en el menú Herramientas y marque la casilla Lista de miembros
automática de la pestaña Editor.

(6) Ventana Inmediato

Contiene todos los valores de las variables que hayan sido definidas previamente como expresiones de inspección.

(7) Ventana Locales

Permite mostrar los valores de las variables, modificarlas, y ejecutar las instrucciones.

(8) Ventana Inspecciones

Contiene todos los valores de las variables del procedimiento en curso.

Las ventanas Inmediato, Locales e Inspecciones se usan principalmente para la depuración de aplicaciones (ver
capítulo Depuración y administración de errores).

(9) El Examinador de objetos

Permite visualizar, para cada objeto, sus propiedades, métodos y constantes.

5. Elegir las ventanas que hay que mostrar

Nombre de la ventana que Menú Barra de Teclado


hay que mostrar herramientas

Propiedades Ver - Ventana Propiedades [F4]

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
22 - 3-
Proyectos Ver - Explorador de proyectos [Ctrl] R

Inmediato Ver - Ventana Inmediato [Ctrl] G

Inspecciones Ver - Ventana Inspección

Ventana Locales Ver - Ventana Locales

Explorador de objetos Ver - Examinador de objetos [F2]

Módulo Ver - Código [F7]

- 4- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
23
Configuración del editor VBA

1. Configuración de la tipografía

Las palabras clave, las funciones y las instrucciones VBA aparecen en azul; los objetos, métodos y propiedades, en
negro, y los comentarios, en verde. Las instrucciones que contienen errores se destacan en rojo.

Para modificar el estilo (color, tipo de letra, tamaño) de los diferentes tipos de código, seleccione
Opciones en el menú Herramientas y haga clic en la pestaña Formato del editor.

2. Configuración de la introducción de código

Existen diferentes herramientas que facilitan la introducción y la actualización del código VBA: por ejemplo, la
comprobación automática de la sintaxis, la declaración obligatoria de las variables, las instrucciones que se
completan automáticamente, etc.

Para activar estas opciones, seleccione Opciones en el menú Herramientas y haga clic en la pestaña
Editor.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
24 - 1-
3. Manejo de errores

Las opciones de interceptación de errores permiten establecer si la ejecución del código se interrumpirá al ocurrir un
error de ejecución.

Para activar esta opción, seleccione Opciones en el menú Herramientas y haga clic en la pestaña
General.

Si su código VBA incluye una gestión de errores, seleccione la opción Interrumpir en errores no
controlados o no se tendrán en cuenta las instrucciones de gestión de errores.

Ciertos ejemplos de este libro incluyen una gestión de errores; es importante que active esta opción para que
funcionen correctamente.

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
25
La gestión de errores se explica en el capítulo Depuración y administración de errores.

4. Acoplar una ventana

Una ventana acoplada se coloca automáticamente cuando la mueve. Una ventana no está acoplada si puede
ubicarse en cualquier lugar de la pantalla y permanecer ahí.

Para definir las ventanas que desea acoplar, seleccione Opciones en el menú Herramientas y haga clic
en la pestaña Acoplar.

Active las ventanas que desea acoplar y desactive las otras. Luego haga clic en Aceptar.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
26 - 3-
Módulos

1. Presentación

El código VBA asociado a un libro está agrupado en un proyecto que contiene varias carpetas:

La carpeta Microsoft Excel Contiene un módulo de clase asociado al libro del proyecto (llamado por
Objetos defecto ThisWorkbook) y un módulo de clase por cada una de las hojas de
cálculo u hojas de gráfico del libro. En particular, en estos módulos de clase se
encuentran los procedimientos de eventos asociados al libro y a las hojas.

La carpeta Formularios Contiene los formularios (UserForm) del proyecto y el código VBA asociado.

La carpeta Módulos Agrupa los diferentes módulos estándares (compuestos por uno o más
procedimientos) que pueden ser llamados desde cualquier procedimiento del
proyecto.

La carpeta Módulos de clase Contiene los módulos de clase usados para la creación de nuevas clases de
objetos. Los módulos de clase se utilizan especialmente para la escritura
de los procedimientos de eventos asociados a los objetos Application y Chart
(ver capítulo Administración de eventos).

La lista de todos los módulos aparece en forma jerárquica en el Explorador de proyectos del entorno VBE.

Si el explorador de proyectos no está visible, elija la opción Explorador de proyectos del menú Ver o pulse el
método abreviado [Ctrl] R.

Para ver el código asociado a un módulo, haga doble clic en el nombre del módulo.

Los elementos del lenguaje VBA descritos en este capítulo se pueden usar en los diferentes módulos.

2. Acceso a los módulos

Para insertar un nuevo módulo en el entorno VBE, use la opción Módulo del menú Insertar, o haga clic en el icono

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
27 - 1-
de la barra de herramientas Estándar y seleccione la opción .

Si la ventana Módulo está maximizada, el nombre del módulo aparece sobre la barra de título de Microsoft Visual
Basic.

Para pasar de un módulo a otro, en la ventana Proyecto, haga doble clic en el nombre del módulo que
desea activar.

Para eliminar un módulo, en la ventana Proyecto, haga clic derecho en el nombre del módulo que desea
eliminar, elija la opción Quitar Módulo e indique si desea exportar el módulo o no (ver Importar y exportar
código VBA).

Para dar nombre a un módulo, active el módulo y cambie la propiedad Nombre en la ventana de
Propiedades.

3. Importar y exportar código VBA

Los módulos y formularios pueden exportarse a un archivo para luego importarlo a otro proyecto de Excel.

Para exportar un archivo, haga clic en el nombre del archivo en el explorador de proyectos, luego
seleccione la opción Exportar archivo del menú Archivo (o del menú contextual) o pulse la combinación
de teclas [Ctrl] E.

Para importar un archivo, haga clic en el nombre del archivo en el explorador de proyectos, luego
seleccione la opción Importar archivo del menú Archivo (o del menú contextual) o pulse la combinación
de teclas [Ctrl] M.

La extensión del archivo creado depende del tipo de archivo exportado:

z Los módulos de clase (módulos asociados al libro y a las hojas y módulos de clase independientes) tienen la
extensión .cls.

z Los formularios tienen la extensión .frm.

z Los módulos estándar tienen la extensión .bas.

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
28
Procedimientos

1. Definiciones

Los procedimientos son subprogramas que permiten descomponer una tarea de programación compleja en un
conjunto de tareas más breves y simples. Permiten organizar el código dentro de módulos para obtener un código
de mantenimiento más simple y fácilmente reutilizable.

En VBA Excel, se distinguen tres tipos de procedimientos:

z Los procedimientos Sub (por subrutina) se llaman subprogramas o procedimientos Sub.

z Los procedimientos Function se llaman funciones.

z Los procedimientos Property se llaman procedimientos de propiedad.

En este capítulo, solamente nos interesan los dos primeros, que son los más utilizados.

z Puntos comunes entre procedimientos Sub y funciones:

„ Ambos contienen instrucciones o métodos VBA.

„ Ambos aceptan argumentos.

„ Ambos se pueden llamar desde otras funciones o procedimientos Sub.

z Características específicas de las funciones:

„ Devuelven un valor.

„ Se pueden utilizar desde Excel como cualquier función.

2. Acceso a los procedimientos

Para acceder a un procedimiento desde la ventana de código de un módulo, abra la segunda lista de la
ventana del módulo, haga clic en el nombre del procedimiento al que desea acceder o recorra los
procedimientos con [Ctrl][Flecha arriba] y [Ctrl][Flecha abajo].

Para seleccionar una palabra, haga doble clic en la palabra.

Para seleccionar una línea, sitúe el puntero del ratón a la izquierda de la línea y haga clic cuando el
puntero se convierta en una flecha.

Para seleccionar un grupo de caracteres, use la técnica de arrastrar y soltar o haga [Mayús] clic.

Para seleccionar un procedimiento completo, sitúe el puntero del ratón a la izquierda de cualquier línea
del procedimiento. Cuando el puntero se transforme en una flecha, haga doble clic.

Para ejecutar un procedimiento, haga clic en el procedimiento que desea ejecutar y pulse [F5] o .

Para eliminar un procedimiento, seleccione todo el procedimiento y pulse [Supr].

3. Procedimientos Sub

Hay dos tipos de procedimientos Sub:

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
29 - 1-
z Los procedimientos Sub generales,

z Los procedimientos Sub asociados a eventos.

Un procedimiento general es un procedimiento declarado en un módulo (generalmente un módulo estándar). La


llamada a este tipo de procedimiento se define explícitamente en el código.

Un procedimiento asociado a un evento es un procedimiento que se ejecuta automáticamente ante ciertos eventos
de un objeto. Su nombre se forma con el nombre del objeto, seguido del guión bajo "_" y del nombre del evento
(ej.: Workbook_Open). La llamada a estos procedimientos es implícita, es decir, el procedimiento se ejecuta
automáticamente cuando se produce el evento asociado.

Ejemplo

El siguiente procedimiento general pide al usuario que confirme su deseo de abandonar la aplicación, y sale de Excel si el
usuario responde que Sí. Este código se puede ejecutar con un botón de comando o una opción de menú que permita
abandonar la aplicación.

Private Sub Terminar()


If MsgBox("¿Desea salir del programa?", _
vbQuestion + vbYesNo) = vbYes Then
Application.Quit
End If
End Sub

El siguiente procedimiento asociado a un evento abre automáticamente el libro Ventas.xlsx cuando se abre el libro
Resumen.xlsx. Este procedimiento está asociado al evento Open del objeto Workbook y se encuentra en el módulo
ThisWorkbook del libro Resumen.xlsx.

Private Sub Workbook_Open()


’ Abre el libro Ventas.xlsx
Workbooks.Open Filename:="C:\VENTAS\VENTAS.xlsx"
’ Activa el libro Resumen
Windows("RESUMEN.xlsx").Activate
End Sub

4. Procedimientos Function

Los procedimientos Function, llamados comúnmente funciones, devuelven un valor resultado de un cálculo. El valor
se devuelve a través del nombre de la función.

El lenguaje Visual Basic incluye numerosas funciones integradas, tales como las usadas en cálculos con fechas (day,
week, year, format, etc.).

Además de estas funciones integradas, puede crear sus propias funciones personalizadas.

Ejemplo

La siguiente función pide al usuario que confirme su deseo de abandonar la aplicación y devuelve True si el usuario responde
que Sí, y False en caso contrario.

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
30
Function Terminar() As Boolean
If MsgBox("¿Desea salir del programa?", _
vbQuestion + vbYesNo) = vbYes Then
Terminar = True
Else
Terminar = False
End If
End Function

5. Declaración de procedimientos

Sintaxis de un procedimiento Sub

[Private | Public | Friend] [Static] Sub NomProc


([lista de argumentos])
<secuencia de instrucciones>
End Sub

Sintaxis de un procedimiento Function

[Private | Public | Friend] [Static] Function


NomProc ([lista de argumentos]) [As <Type>]
<secuencia de instrucciones>
End Function

Para crear un procedimiento Sub o Function, se deben respetar los siguientes pasos:

z Determine el alcance del procedimiento.

z Declare el procedimiento según su tipo con la palabra clave Sub o Function, seguida del nombre del procedimiento.

z Defina los argumentos que se deban pasar como parámetros al procedimiento e indíquelos entre paréntesis después
del nombre del procedimiento.

z En el caso de una función, si es necesario, indique el tipo del valor devuelto después de la palabra clave As.

z Escriba el código que permita efectuar la operación deseada. Si es necesario, use Exit Sub o Exit Function para
salir del procedimiento. En el caso de una función, asigne el resultado al nombre de la función.

z Finalice el procedimiento con End Sub o End Function.

6. Alcance de los procedimientos

El alcance de un procedimiento determina la extensión de su uso.

Un procedimiento Public se puede llamar desde todos los módulos de todos los proyectos de Excel.

Un procedimiento Private solamente se puede llamar desde un procedimiento dentro del mismo módulo.

La palabra clave Static indica que las variables locales del procedimiento se mantienen entre una llamada y otra.

Si no se indica Public o Private o Friend, los procedimientos son públicos por defecto.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
31 - 3-
7. Argumentos de los procedimientos

Los argumentos se usan para transferir a los procedimientos parámetros en forma de datos. La cantidad de
argumentos puede variar de 0 a varios.

Para declarar un argumento, basta con especificar su nombre. Sin embargo, la sintaxis completa para declarar un
argumento es la siguiente:

[Optional] [ByVal | Byref] [ParamArray]


<variable> [As type]

La opción Optional indica que el argumento es opcional y puede omitirse. Los argumentos opcionales
se deben ubicar al final de la lista de argumentos y ser de tipo Variant.

La opción Byval indica que el argumento se pasa por valor. El procedimiento accede a una copia de
la variable; su valor inicial no se modifica por el procedimiento al que se pasa.

La opción Byref (opción por indica que el argumento se pasa por referencia. En este caso, el procedimiento
defecto) puede acceder a la variable propiamente dicha; de esta manera, su valor real se
puede modificar por el procedimiento al que se pasa.

La palabra clave ParamArray se usa únicamente como último argumento de la lista para indicar que se trata de
una matriz opcional de elementos de tipo Variant. No se puede usar con las
palabras clave ByVal, ByRef u Optional.

Variable especifica el nombre del argumento. Para las variables de matriz, no especificar su
dimensión.

Type especifica el tipo de datos del argumento que se pasa al procedimiento (Byte,
Boolean, Integer, Long, etc.).

8. Argumentos con nombre

La transferencia de argumentos a un procedimiento según su orden de aparición es a veces difícil de realizar,


especialmente cuando hay parámetros opcionales. De la misma manera, la legibilidad de las llamadas a
procedimientos con muchos parámetros no siempre es fácil.

Los argumentos con nombre facilitan la transferencia de argumentos gracias a las siguientes ventajas:

z El orden de los argumentos con nombre no es importante.

z Los argumentos opcionales pueden omitirse.

La sintaxis de los argumentos con nombres es:

NomArg := valor

Ejemplo

El siguiente código VBA:

If MsgBox("¿Desea salir de la aplicación?", _


vbYesNo + vbQuestion, "Gestión de ventas") = vbYes Then
Application.Quit
End If

- 4- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
32
puede transformarse en:

If MsgBox(Prompt:= "¿Desea salir de la aplicación?", _


Buttons:=vbYesNo + vbQuestion, _
Title:="Gestión de ventas") = vbYes Then
Application.Quit
End If

También se puede modificar el orden de los parámetros:

If MsgBox(Prompt:= "¿Desea salir de la aplicación?", _


Title:="Gestión de ventas", _
Buttons:=vbYesNo + vbQuestion) = vbYes Then
Application.Quit
End If

El nombre de los argumentos aparece automáticamente en el entorno VBE a medida que se escribe la instrucción.
Los argumentos opcionales aparecen entre corchetes.

9. Llamar a un procedimiento

Sintaxis

[Call] NomProc [lista de argumentos]

Si se indica la palabra clave Call, debe colocar la lista de argumentos entre paréntesis.

Para almacenar el resultado de una función en una variable, use la siguiente sintaxis:

<variable> = NomProc ( [lista de argumentos] )

Para llamar a un procedimiento de otro módulo, use la siguiente sintaxis:

NomMódulo.NomProcedimiento

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
33 - 5-
Ejemplo

ThisWorkbook.Salir_Apli

Para llamar a un procedimiento de otro libro, use la siguiente sintaxis:

Application.Run "NomLibro!NomMódulo.NomProcedimiento"

Ejemplo

Application.Run "Ventas.xlsm!ThisWorkbook.Salir_Apli"

Para ejecutar este comando, el libro Ventas.xlsm debe estar abierto.

10. Llamar a una función VBA en una fórmula de Excel

Las funciones VBA se pueden usar en las fórmulas de Excel. Todas las funciones declaradas en Public están
disponibles en el asistente para funciones de Excel (categoría Funciones Definidas por el usuario).

Ejemplo

Este ejemplo usa una función VBA que calcula la edad de una persona a partir de su fecha de nacimiento.

Function CalcEdad(fechaNac As Date)


Dim zFecha As Date
’ Calcula la edad en función de la fecha de nacimiento
CalcEdad = Abs(DateDiff("YYYY", fechaNac, Date))
zFecha = DateAdd("YYYY", CalcEdad, fechaNac)
If zFecha > Date Then CalcEdad = CalcEdad - 1
End Function

Para usar esta función en Excel:

Seleccione la opción Insertar función de la pestaña Fórmulas.

En el cuadro de diálogo Insertar función, en la lista O seleccionar una categoría, elija Definida por el
usuario; la función CalcEdad estará ahora accesible:

- 6- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
34
Seleccione la función y haga clic en Aceptar; el cuadro de diálogo le pedirá los argumentos de la función,
como se ve aquí:

Este ejemplo muestra la importancia del nombre de los argumentos de las funciones: cuanto más explícitos sean
estos, más fácil resultará usar la función en Excel.

Ahora puede modificar la fórmula para incluir el texto "años" y extender la fórmula a toda la lista.

El resultado en Excel es el siguiente:

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
35 - 7-
11. Ejemplos de procedimientos y funciones

Copiar el contenido de una tabla de valores en la hoja de Excel activa.

Sub Mostrar_Tabla()
Dim vTabVal As Variant
Dim oCelda As Range
Dim i As Integer
’ Muestra el contenido de la tabla en la hoja de cálculo activa
vTabVal = Array("Buenos Días", 1.244, "=A1+12", "=A2+12")
For i = 0 To 3
Set oCelda = Range("A" & i + 1)
If MCell(oCelda, vTabVal(i)) Then
MsgBox "La celda se actualizó con éxito"
Else
MsgBox "La celda no se pudo actualizar"
End If
Next i

End Sub

El código de estos ejemplos se debe escribir en un módulo estándar o en el módulo ThisWorkbook.

La función MCell informa sobre el valor asignado a una celda. Devuelve True si la celda se actualizó correctamente, y
False en caso contrario.

Private Function MCell(oCelda As Range, _


Valor As Variant) As Boolean
’ Actualización de una celda a partir de un valor
MCell = False
If Not IsEmpty(oCelda) Then Exit Function
oCelda.Value = Valor
If oCelda.Text <> "#VALOR!" Then
MCell = True
End If

- 8- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
36
End Function

Si prueba este ejemplo, obtendrá el siguiente resultado:

La tercera celda no se pudo actualizar.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
37 - 9-
Variables

Las variables permiten almacenar valores intermedios durante la ejecución del código VBA para usarlos luego en
cálculos, comparaciones, pruebas…

Las variables se identifican por un nombre que permite hacer referencia al valor que contienen y un tipo que
determina la naturaleza de los datos que pueden almacenar.

1. Tipos de variables

Numéricas

Tipo Rango Tamaño en


bytes

Byte 0 a 255 1

Integer (entero) -32 768 a 32 767 2

Long (entero largo) -2 147 483 648 a 2 147 483 647 4

Single (real simple de coma -3,402823E38 a 1,401298E-45 4


flotante) (valores negativos)
1,401298E-45 a 3,402823E38
(valores positivos)

Double (real doble de coma -1,79769313486231E308 a 4,94065645841247E-324 8


flotante) (valores negativos)
4,94065645841247E-324 a 1,79769313486231E308
(valores positivos)

Currency (monetario de -922 337 203 685 477,5808 a 922 337 203 685 477,5807 8
punto fijo)

Decimal +/-79 228 162 514 264 337 593 543950 335 sin separador 12
decimal;
+/-7,9228162514264337593543950335 con 28 cifras a la
derecha del separador decimal;
el menor número distinto de cero es +/-
0.0000000000000000000000000001

Cadenas de caracteres

El tipo es String. Existen dos tipos de cadenas:

z Las cadenas de longitud variable pueden contener aproximadamente dos mil millones de caracteres.

z Las cadenas de longitud fija pueden contener de 1 a aproximadamente 64 KB de caracteres.

Ejemplo

’ Cadena de longitud variable


Dim sDomicilio As String
’ Cadena de longitud fija (20 caracteres)
Dim sNombre As String * 20

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
38 - 1-
Boolean o lógica

El tipo es Boolean (o booleano). La variable puede tomar los valores True (Verdadero) o False (Falso), que es su
valor por defecto. Ocupa dos bytes.

Fecha

El tipo es Date. La variable puede tomar los valores de fecha y de hora del 1 de enero del año 100 al 31 de
diciembre de 9999. Ocupa ocho bytes.

Variant

Las variables de tipo Variant pueden contener datos de todo tipo, además de los valores especiales Empty, Error y
Null.

Usar el tipo de dato Variant ofrece más flexibilidad en el tratamiento de datos. Por ejemplo, si una variable de tipo
Variant contiene cifras, se puede usar su valor real o su representación en forma de cadena, según el contexto.

De todas formas, las variables de tipo Variant requieren 16 bytes de memoria para números y 22 bytes más la
longitud de la cadena para los caracteres; esto puede ser perjudicial en el caso de procedimientos largos o en
módulos complejos.

Ejemplo

Sub Variable_Variant()
’ Declaración de la variable "Valx" como Variant
Dim Valx As Variant
’ Asignación de una sucesión de valores a la variable
’ y mostrar el tipo del resultado
’ 10 retorna un valor de tipo Integer
Valx = 10
MsgBox Valx & " es de tipo " & TypeName(Valx)
’ Ejemplo que retorna un valor de tipo String
Valx = "Ejemplo"
MsgBox Valx & " es de tipo " & TypeName(Valx)
’ Esta multiplicación retorna un valor de tipo Double
Valx = 12500.32 * 1E+21
MsgBox Valx & " es de tipo " & TypeName(Valx)
’#1/1/99# retorna un valor de tipo Date
Valx = #1/1/99#
MsgBox Valx & " es de tipo " & TypeName(Valx)
’ True retorna un valor de tipo Boolean
Valx = True
MsgBox Valx & " es de tipo " & TypeName(Valx)

End Sub

Objeto

El tipo es Object. Para crear una variable que contenga un objeto, comience por declarar la variable como tipo

- 2- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
39
Objeto y luego asígnele un objeto.

Para declarar una variable Objeto:

Si el tipo de objeto no se conoce, use la sintaxis:

InstrucciónDeDeclaración NomVariable As Object

Si se conoce el tipo de objeto, use la sintaxis:

InstrucciónDeDeclaración NomVariable As TipoObjeto

Ejemplo

Sub Variables_Objeto()
’ oTest se declara como objeto
’ ShtNomCli se declara como hoja de cálculo
’ oGrafico se declara como gráfico
Dim oTest As Object
Dim ShtNomCli As Worksheet
Dim oGrafico As Chart
End Sub

Para asignarle un objeto a una variable Objeto, use la instrucción Set:

Set NomVariable = ObjetoaAsignar

Ejemplo

Declaración de una variable ZonaTest destinada a contener un objeto Range y asignación de las celdas A6 a B15 a esta
variable:

Dim oZonaTest As Range


Set oZonaTest = Range("A6:B15")

Para finalizar la asociación entre una variable y un objeto determinado, use la siguiente sintaxis:

Set NomVariable = Nothing

Definido por el usuario (o personalizado)

Los tipos de datos personalizados se crean con la instrucción Type usada a nivel de módulo.

Sintaxis

Type NomTipoPerso
NomElemento1 As TipoDatos
NomElemento2 As TipoDatos
...
End Type

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
40 - 3-
La definición del tipo solamente se puede hacer en la sección de declaración de un módulo.

Ejemplo

Declaración de un tipo personalizado constituido por una letra y un número entero en el módulo de código ProGene.

Uso del tipo personalizado para controlar los códigos de artículos introducidos de la celda B6 a la celda B11 de la hoja de cálculo
activa. En caso de error, se muestra un mensaje.

2. Declaración de variables

Para crear una variable, debe declararla, es decir, darle un nombre. Luego puede usar ese nombre para modificar el
valor de la variable, usar ese valor, etc.

La declaración de variables en VBA puede ser implícita o explícita.

a. Declaraciones implícitas

- 4- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
41
Se hacen directamente al asignar un valor a un nombre de variable. El tipo de datos será entonces el tipo por
defecto, o sea, Variant.

Ejemplo

i = 12
dImporte = 12000
sNombre = "Juan Carlos"

b. Declaraciones explícitas

Requieren el uso de una instrucción de declaración (Dim, Public, Private, etc.). Si el tipo de la variable no se
indica, la variable resultará del tipo por defecto, o sea, Variant.

Se puede imponer la declaración implícita de variables usando la instrucción Option Explicit en la sección de
declaración de cada módulo. Para insertar esta instrucción automáticamente en cada nuevo módulo, active la
opción Requerir declaración de variables del menú Herramientas - Opciones - pestaña Editor.

Ejemplo

Dim I
Private dImporte As Double
Public sNombre as String

Para optimizar la velocidad de ejecución del código VBA, se recomienda declarar las variables en forma explícita.

c. Sintaxis de las instrucciones de declaración

<InstruccióndeDeclaración> NomVariable [As <TipodeDatos>]

Donde InstruccióndeDeclaración corresponde a una de las siguientes cuatro instrucciones: Dim, Public, Private o
Static.

Dim Las variables declaradas con la instrucción Dim a nivel de módulo están disponibles para todos
los procedimientos del módulo. No son accesibles desde ningún otro módulo. Las variables
declaradas con la instrucción Dim a nivel de procedimiento solamente están disponibles
dentro del procedimiento.

Private Solamente a nivel de módulo. Las variables Private solamente están disponibles para el
módulo en el que son declaradas.

Public Solamente a nivel de módulo. Las variables declaradas con la instrucción Public son
accesibles desde el conjunto de módulos de todos los proyectos de Excel abiertos. Si la
instrucción Option Private Module se especifica en la sección de declaración del módulo, las
variables solamente son públicas dentro del proyecto que las recibe.

Static Solamente a nivel de procedimiento. Las variables declaradas con la instrucción Static
conservan su valor mientras dure la ejecución del código.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
42 - 5-
3. Declaración de los tipos de variables

a. Declaraciones explícitas del tipo

El tipo de la variable se especifica en la declaración, tras la palabra clave As.

Ejemplo

Sub TotalAcum()
Dim iTotal As Integer
Static iAcum As Integer
iTotal = iTotal + 10
iAcum = iAcum + 10
’ Devuelve 10 en cada ejecución del procedimiento
MsgBox iTotal
’ Devuelve 10 en la primera ejecución, luego 20 la segunda vez,
’ 30 la tercera, etc.
MsgBox iAcum
End Sub

Puede declarar más de una variable en una misma instrucción, pero atención, el tipo de datos solo se tendrá en
cuenta para la última variable, el tipo Variant se asignará a las otras.

b. Declaraciones implícitas del tipo

El tipo de variable se declara usando un sufijo en el momento de su utilización o por la instrucción DefType.

Empleo de un sufijo

Debe agregar uno de los siguientes caracteres al nombre de la variable:

Sufijo Tipo de datos

% Integer

& Long

! Single

# Double

@ Currency

$ String

Ejemplo

Declara la variable como tipo Cadena (String).

Dim Nombre$

Declara la variable como tipo Monetario (Currency).

- 6- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
43
Dim Deuda@

DefType

Estas instrucciones se emplean en la zona de declaración del módulo, para definir los tipos de datos por defecto
de las variables cuyos nombres comienzan por los caracteres especificados.

Lista de instrucciones DefType:

Instrucción Tipo de datos

DefBool Boolean

DefDbl Double

DefInt Integer

DefDate Date

DefLng Long

DefStr String

DefCur Currency

DefObj Object

DefSng Single

DefVar Variant

DefByte Byte

Ejemplo

Todas las variables cuyos nombres comienzan por una letra comprendida entre I y K y por la letra N son variables de tipo
entero (Integer).

DefInt I-K,N

Las variables que comienzan por una letra comprendida entre A y H serán de tipo cadena (String).

DefStr A-H

La instrucción siguiente declara la variable Identificador como tipo Variant y las variables Superficie y Latitud como tipo
Entero.

Dim Identificador, Superficie As Integer


Dim Latitud As Integer

c. Convención de nombres de variables

Se recomienda utilizar una convención de nombres para las variables. Permiten estandarizar el código y hacerlo
más legible y más fácil de mantener por diferentes desarrolladores.

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
44 - 7-
La convención consiste en utilizar dos prefijos en el nombre de las variables:

z El primero para indicar el ámbito de la variable: p o pb o pb_ para pública, m o mo para módulo, y ningún prefijo
para las locales.

z La segunda para indicar su tipo.

Tipo Prefijo Ejemplo

Boolean b o bln bVisible o blnVisible

Double d o dbl dTotal o dblTotal

Integer i o int iEdad o intEdad

Long l o lng lCanTot o lngtCanTot

Object o u obj oCelda u objCelda

String s o str sNombre o strNombre

Variant v o var vParam o varParam

4. Matrices

Puede crear una variable matriz cuando necesite trabajar con un grupo de valores relacionados.

Para crear una variable matriz, use la siguiente sintaxis:

<InstrucciónDeDeclaración> NomMatriz(índices) [As<TipodeDatos>]

Donde para (índices):

z Si se omite este argumento: la matriz tendrá dimensión libre.

z Si se indica un valor: la matriz tendrá un número determinado de elementos.

z Si se indica LimiteInf To LimiteSup: la matriz tendrá un número de elementos determinado y números de índice
específicos.

Por defecto, el valor menor del índice de una matriz es 0.

Para modificar el valor menor del índice, use la instrucción Option Base MenorValorÍndice en la sección de
declaración del módulo o use la sintaxis LimiteInf To LimiteSup en el argumento (índices).

Para definir el contenido de una matriz, use la función Array (la variable debe ser una tabla de dimensión
libre) o despliegue los datos en una hoja o asigne una por una cada variable de la matriz usando los
índices.

Ejemplo

El siguiente ejemplo muestra, en la hoja activa de Excel, la lista de los factores de conversión a euros para cinco países.

Const FacFRF = 6.55957


Const FacBEF = 40.3399
Const FacDEM = 1.95583
Const FacESP = 166.386

- 8- © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
45
Const FacITL = 1936.27
----------------------------------------------------------------
Sub Muestra_Factor()
Dim Pais As Variant
Dim Factor(5) As Double
Dim i As Integer
’ Lista de países
Pais = Array("Francia", "Bélgica", "Alemania", _
"España", "Italia")

’ Lista de los factores por país


Factor(0) = FacFRF
Factor(1) = FacBEF
Factor(2) = FacDEM
Factor(3) = FacESP
Factor(4) = FacITL

’ Muestra los países y sus factores en la hoja de cálculo Euro


For i = 0 To 4
With Sheets ("Euro")
.Cells(i + 1, 1) = Pais(i)
.Cells(i + 1, 2) = Factor(i)
End With
Next i

End Sub

En este ejemplo, también es posible usar una matriz de dos índices. El código VBA del procedimiento queda como sigue:

Sub Muestra_Factor2
’ Matriz de dos índices
Dim TabFactor(5, 1)
Dim i As Integer

’ Lista de países y sus factores


TabFactor(0, 0) = "Francia"
TabFactor(0, 1) = FacFRF
TabFactor(1, 0) = "Bélgica"
TabFactor(1, 1) = FacBEF
TabFactor(2, 0) = "Alemania"
TabFactor(2, 1) = FacDEM
TabFactor(3, 0) = "España"
TabFactor(3, 1) = FacESP
TabFactor(4, 0) = "Italia"
TabFactor(4, 1) = FacITL

’ Muestra los países y sus factores en la hoja de cálculo Euro


For i = 0 To 4
With Sheets ("Euro")
.Cells(i + 1, 1) = TabFactor(i, 0)
.Cells(i + 1, 2) = TabFactor(i, 1)
End With
Next i

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
46 - 9-
End Sub

5. Constantes

Una constante permite asignar un nombre explícito a un valor.

a. Constantes personalizadas

La declaración de una constante se hace con la instrucción Const en la sección de declaración de un módulo o en
un procedimiento.

Const NomConstante [As <TipoDato>] = <expresión>

As TipoDato El tipo de dato no puede ser un objeto (Object) ni un tipo personalizado


(Type).

expresión No puede ser una función definida por el usuario, ni una función intrínseca de
Visual Basic.

Ejemplo

Declaración de algunas constantes.

Sub Constantes()
’ Ejemplos de constantes autorizadas:
Const Val1 = "Mega+"
Const Val2 = 148
Const Val3 = 125.45
’ El tipo de datos es Double
Const Val4 As Single = 125.45
’ Permite ahorrar memoria
Const Val5 = Val2 * Val3
Const Val6 = Val1 & " cuesta " & Val2
’ Ejemplo de constante no autorizada:
’ Por el uso de una función VB
Const Val6 = Fix(Val4)
End Sub

Para crear una constante accesible a todos los libros abiertos, se debe declarar en la sección de declaración de un
módulo y situar la instrucción Public antes de la instrucción Const.

b. Constantes integradas

Las constantes usadas por los objetos de Microsoft Excel van precedidas por las letras "xl"; las constantes usadas
con otras instrucciones y funciones de Visual Basic van precedidas por las letras "vb", y las constantes de Microsoft
Office van precedidas por las letras "mso".

Para mostrar la lista de constantes integradas, abra el examinador de objetos haciendo clic en el icono

o pulsando la tecla de función [F2]. Escriba la palabra constants en la lista desplegable Texto de

- 10 - © Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
47
búsqueda (la segunda situada a la izquierda) y luego haga clic en el icono .

© Editions ENI – Tous droits réservés – Copie personnelle de RODOLFO MONTES VALDIVIA
48 - 11 -

También podría gustarte