Manual VBA Excel 2022 RESUMIDO
Manual VBA Excel 2022 RESUMIDO
Programación
y
Métodos Numéricos
1
Contenido
1 INTRODUCCIÓN. ........................................................................................................5
3 MÓDULOS. .................................................................................................................15
4 PROCEDIMIENTOS. ..................................................................................................17
2
4.8 Ejemplos de procedimientos y funciones ............................................................. 20
7 OPERADORES. ...........................................................................................................36
3
8 FUNCIONES MATEMÁTICAS. ................................................................................39
4
1 INTRODUCCIÓN.
El presente material está ordenado para cubrir la parte básica de la programación en la
materia de Programación y Métodos Numéricos, por lo que no se profundizará en las múltiples
herramientas que contiene el lenguaje Visual Basic.
5
2 ¿QUÉ ES VBA?
Visual Basic for Applications (VBA), es un lenguaje de programación macro basado en
Microsoft Visual Basic. Es útil en el desarrollo de aplicaciones insertadas en programas de Microsoft
Office (Word, Access, Excel, Outlook y PowerPoint), y que es usado comúnmente en Microsoft Excel
(Excel Visual Basic).
1. Automatizar acciones repetitivas. Con VBA puede realizar en una única operación todo
un grupo de comandos de Excel.
2. 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.
3. 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.
4. 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).
5. 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.
6. 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.
7. 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.
Usar VBA requiere del conocimiento y noción de las posibles estructuras que se generan
una vez que se accede a él, entre otras, se exponen las más importantes y útiles para los fines del
curso.
6
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. Estos módulos serán los espacios donde se insertarán los
códigos de los programas del presente curso.
Procedimiento. Los procedimientos son subprogramas escritos en VBA y los hay de dos
formas: Sub y Function. Cada macro grabada genera un procedimiento 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.
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.).
7
2.4.1 Descripción de la pestaña Desarrollador.
a) Grupo Código.
8
b) Grupo Complementos.
Permite seleccionar
complementos COM (librerías
de funciones complementarias).
c) Grupo Controles.
9
2.4.2 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.
1. Deshabilitar todas las macros sin notificación. Todas las macros y todas las advertencias
de seguridad serán deshabilitadas.
2. 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.
3. Deshabilitar todas las macros excepto las firmadas digitalmente. 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.
4. 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.
5. 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.
10
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.
Las macros se pueden habilitar solo para una sesión (es decir, hasta que se cierre el libro que
las contiene).
VBE (Visual Basic Editor) es el entorno en el que puede escribir, modificar y probar el
código VBA realizado. Este entorno se llama también IDE (Integrated Development Environment) o
editor de VBA.
1. Acceso al entorno VBE. Para acceder al entorno VBE desde Excel: hacer clic en el botón de
la pestaña Desarrollador o Programador, también se puede acceder con la combinación de
teclado [Alt]+[F11].
2. Cerrar el entorno VBE. Para cerrar el entorno VBE y volver a Excel: Hacer clic en el aspa
roja ubicada arriba a la derecha de la ventana principal del entorno VBE; o bien, hacer 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; o bien,
teclear la combinación de teclado [Alt]+[F11].
11
2.6 Descripción del entorno VBE.
Nota. Todas las ventanas del entorno VBE se pueden visualizar desde el menú Ver.
De izquierda a derecha:
12
b) 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:
c) La ventana Propiedades.
d) La ventana Código.
En esta zona es donde se escribirá todo el código correspondiente a los procedimientos Sub
y Function; en otras palabras, es el lugar en donde se va a programar.
13
e) Ventana Inmediato.
Contiene todos los valores de las variables que hayan sido definidas previamente como
expresiones de inspección.
f) Ventana Locales.
Permite mostrar los valores de las variables, modificarlas, y ejecutar las instrucciones.
g) Ventana Inspecciones.
Contiene todos los valores de las variables del procedimiento en curso y lo puede mostrar
paso a paso.
i) El examinador de objetos.
14
3 MÓDULOS.
3.1 Presentación.
El código VBA asociado a un libro está agrupado en un proyecto que contiene varias
carpetas:
1. La carpeta Microsoft Excel Objetos. Contiene un módulo de clase asociado al libro del
proyecto (llamado por 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.
2. La carpeta Formularios. Contiene los formularios (UserForm) del proyecto y el código
VBA asociado.
3. 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.
4. 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.
15
3.2 Acceso a los módulos.
Para insertar un nuevo módulo en el entorno VBE, usar la opción Insertar y luego activar
Módulo, o hacer clic en el icono de la barra de herramientas y seleccionar la opción Módulo.
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, hacer doble clic en el nombre del
módulo que se desea activar.
Para eliminar un módulo, en la ventana Proyecto, hacer clic derecho en el nombre del
módulo que se desea eliminar, elegir la opción Quitar Módulo e indicar si se desea exportar el
módulo o no (ver 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, hacer clic en el nombre del archivo en el explorador de proyectos,
luego seleccionar la opción Exportar archivo del menú Archivo (o del menú contextual) o pulsar la
combinación de teclas [Ctrl]+E.
Para importar un archivo, hacer clic en el nombre del archivo en el explorador de proyectos,
luego seleccionar la opción Importar archivo del menú Archivo (o del menú contextual) o pulsar la
combinación de teclas [Ctrl]+M.
1. 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.
2. Los formularios tienen la extensión .frm.
3. Los módulos estándar tienen la extensión .bas.
16
4 PROCEDIMIENTOS.
4.1 Definiciones.
En este material, únicamente interesarán los dos primeros, que son los más utilizados.
17
4.3 Procedimientos Sub.
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.
18
Para crear un procedimiento Sub o Function, se deben respetar los siguientes pasos:
• 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, Private o Friend, los procedimientos son públicos por
defecto.
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:
19
• 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 defecto) indica que el argumento se pasa por referencia.
En este caso, el procedimiento 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.).
4.9 Variables.
Las variables permiten almacenar valores intermedios durante la ejecución del código VBA
para usarlos luego en cálculos, comparaciones, pruebas, etc.
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.
20
4.9.1 Tipos de variables.
a) Numéricas.
b) Cadenas de caracteres.
1. Las cadenas de longitud variable pueden contener aproximadamente dos mil millones de
caracteres.
2. Las cadenas de longitud fija pueden contener de 1 a aproximadamente 64 KB de
caracteres.
21
c) 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.
d) 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.
e) 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.
f) Objeto.
El tipo es Object. Para crear una variable que contenga un objeto, comience por declarar la
variable como tipo Objeto y luego asígnele un objeto.
Para crear una variable, se debe declarar, es decir, darle un nombre. Luego puede usar ese
nombre para modificar el valor de la variable, usar ese valor, etc.
a) Declaraciones implícitas.
22
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.
Nota. Para optimizar la velocidad de ejecución del código VBA, se recomienda declarar las
variables en forma explícita.
1. 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.
2. Private. Solamente a nivel de módulo. Las variables Private solamente están
disponibles para el módulo en el que son declaradas.
3. 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.
4. 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.
23
4.9.3 Declaración de los tipos de variables.
Nota. 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.
Empleo de un sufijo.
Ejemplo.
Dim Nombre$
Dim Deuda@
24
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:
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.
25
5 ESTRUCTURAS DE DECISIÓN.
• If …Then…Else
• Select…Case
a) If...Then
Si hay varias instrucciones, se separan por el signo de puntuación : (dos puntos). Esta sintaxis
se usa especialmente para pruebas cortas y simples.
Ejemplo.
26
b) If...Then...End If
If <condición> Then
<instrucción1>
<instrucción2>
...
End If
Ejemplo.
c) If...Then...Else...End If
If <condición> Then
<instrucciones>
Else
<instrucciones>
End If
Ejemplo.
27
d) If... Then...ElseIf...Else...End If
If <condición> Then
<instrucciones>
<instrucciones>
<instrucciones>
...
Else
<instrucciones>
End If
Ejemplo.
28
5.2 Instrucción Select Case.
a) Select Case.
Ejecuta una secuencia de instrucciones específicas en función del valor de una expresión.
Case <ListaExpresiones>
<instrucciones>
Case <ListaExpresiones>
<instrucciones>
...
Case Else
<instrucciones>
End Select
Ejemplo.
29
6 ESTRUCTURAS EN CICLO.
6.1.1 Sintaxis 1.
Do While <Condición>
<Instrucciones>
Loop
Ejemplo.
30
6.1.2 Sintaxis 2.
Las instrucciones se ejecutan una primera vez sin condición y, luego, mientras la condición
devuelva True.
Do
<Instrucciones>
Ejemplo.
6.1.3 Sintaxis 3.
Las instrucciones se ejecutan hasta que la condición toma el valor True (mientras que la
condición devuelva el valor False).
Do Until <Condición>
<Instrucciones>
Loop
Ejemplo.
31
6.1.4 Sintaxis 4.
Las instrucciones se ejecutan una primera vez sin condición y luego hasta que la condición
devuelva el valor True.
Do
<Instrucciones>
Ejemplo.
While <condición>
<instrucciones>
Wend
Ejemplo.
32
6.3 Instrucción For...Next
<instrucciones>
Next
Ejemplo.
Ejecuta un bloque de instrucciones para cada elemento de una colección de objetos o de una
matriz.
<Instrucciones>
Next <elemento>
Ejemplo.
33
6.5 Salir de las estructuras de control.
La instrucción Exit For permite salir directamente de un ciclo For o For Each, mientras
que Exit Do sale directamente de un ciclo Do.
1. Comentarios. Los comentarios permiten documentar el código VBA para hacerlo más
legible.
REM comentario
’ comentario
3. Sangrías. Las sangrías (o tabulaciones) permiten una mayor legibilidad del código. Es
especialmente importante usarlas en las estructuras de control (sobre todo si hay varias
instrucciones If anidadas) y las estructuras de decisión.
• Para generar las sangrías, use la tecla [Tab].
• Para retroceder a la tabulación precedente, use las teclas [Mayús][Tab].
• Para modificar el tamaño de la tabulación (cuatro espacios por defecto), seleccione
Opciones en el menú Herramientas, haga clic en la pestaña Editor y modifique el
valor Ancho de tabulación.
34
Ejemplo.
35
7 OPERADORES.
Los operadores permiten realizar operaciones aritméticas con variables o constantes,
comparar variables entre ellas, evaluar varias condiciones, etc.
• Operadores aritméticos.
• Operadores de comparación.
• Operadores lógicos.
• Operador de concatenación.
36
La instrucción Option Compare utilizada a nivel de módulo permite declarar el método de
comparación por defecto que conviene usar en la comparación de cadenas.
Ejemplo.
37
7.4 Operador de concatenación.
Ejemplo.
Cuando hay varios operadores en una misma expresión, cada uno de ellos se evalúa en un
orden predeterminado, llamado prioridad de los operadores.
Los operadores de comparación tienen la misma prioridad; es decir, son evaluados por orden
de aparición, de izquierda a derecha.
Aritmético Lógico
ˆ Not
*, /, \ And
Mod Or
+, - Xor
Eqv
El uso de paréntesis permite modificar la prioridad para que un elemento de una expresión
sea evaluado antes que los otros. Las operaciones encerradas entre paréntesis siempre se evalúan antes
que las otras.
38
8 FUNCIONES MATEMÁTICAS.
VBA cuenta con algunas de las funciones más utilizadas en la ciencia y no requieren de una
llamada especial. Las funciones matemáticas se llaman funciones intrínsecas y para activarlas,
requieren escribir simplemente una abreviación como se indica a continuación.
Algunos ejemplos:
Secante = 1 / Cos(x).
Cosecante = 1 / Sin(x).
Cotangente = 1 / Tan(x).
39