1
INTRODUCCION
VBA (Visual Basic for Applications) es un lenguaje de
programación que permite crear macros, es decir, un
conjunto de instrucciones de código que permiten realizar
una tarea determinada. Excel 2007 trae incorporado un editor de
VBA, por lo que las macros se programan dentro del mismo programa
Excel.
Las macros sirven para:
– Automatizar procesos.
– Crear funciones.
– Crear comandos, complementos y
menús.
– Crear aplicaciones.
Cuando se habla de macros se habla de Objetos,
Propiedades y Métodos (OPM). Estos son los 3 conceptos
generales más importantes que se deben conocer a la hora
de programar macros.
Objetos: Corresponden a los elementos mismos, tales como
una hoja, un libro, el Excel mismo, una tabla, un rango, un
gráfico, una columna, una fila, etc.
Propiedades: Corresponden a las características
de cada objeto, tales como el ancho, alto, color, etc.
Métodos: Corresponden a las acciones que se
pueden ejercer sobre los objetos, tales como abrir, cerrar,
ejecutar, activar, mover, copiar, borrar, etc.
1.1
ELEMENTOS
1.1.1 Ventana Proyecto
La ventana proyecto contiene las carpetas
donde se guardan las macros. La ventana proyecto es la
siguiente.
1.1.2 Ventana Propiedades
La ventana propiedades contiene las
propiedades del objeto seleccionado. La ventana propiedades es la
siguiente.
1.1.3 Ventana Código
La ventana código contiene el código de la
macro. La ventana código es la siguiente.
1.1.4 Ventana Inmediato
La ventana inmediato permite escribir, ejecutar y probar
un código rápidamente, sin tener que armar toda la
macro con la estructura, sino colocando un signo de
interrogación previo a la línea de codigo. La
ventana inmediato es la siguiente.
1.1.5 Ventana Locales
La ventana locales contiene todas las
variables del objeto actual y los valores de estas cuando el
código se esta ejecutando. La ventana locales es la
siguiente.
1.1.6 Ventana
Inspección
La ventana inspección contiene las
expresiones a evaluar previamente definidas. La ventana
inspección es la siguiente.
2
ESTRUCTURA
2.1 VARIABLES
2.1.1 Tipos de Variables
2.1.2 Variables Locales
Corresponden a variables declaradas dentro de una macro,
y que solo pueden ser usadas dentro de esta. Cuando la macro
termina de ejecutarse, la variable desaparece y se libera la
memoria. La declaración de una variable local es la
siguiente.
Dim NombreVariable as
TipoVariable
2.1.3 Variables Públicas
Corresponden a variables declaradas fuera de todas las
macros, y que están disponibles para todas. La
declaración de una variable pública es la
siguiente.
Public NombreVariable as
TipoVariable
2.1.4 Variables Estáticas
Corresponden a variables declaradas dentro de una macro,
y que conservan su valor mientras el módulo, módulo
de clase o userform estén en uso o abiertos. La
declaración de una variable estática es la
siguiente.
Static NombreVariable as
TipoVariable
2.1.5 Convertir Variables
Función | Tipo Devuelto |
Cbyte | Byte |
CInt | Integer |
CLong | Long |
CCur | Currency |
CSng | Single |
CDbl | Double |
CDec | Decimal |
CDate | Date |
CStr | String |
CVar | Variant |
CBool | Boolean |
2.2
SENTENCIAS
2.2.1 Do Loop
Do Loop se utiliza para repetir las mismas
instrucciones varias veces hasta que una condición tenga
lugar.
Do [Instrucciones] Loop
2.2.2 For Next
For Next se utiliza para repetir un grupo
de instrucciones un número especificado de
veces.
For [Contador] = [Principio] To [Fin] Step
[Incremento] [Instrucciones]
If [Condicion] then
[Exit For] End If
Next [Contador]
2.2.3 For Each Next
For Each Next se utiliza para repetir un
grupo de instrucciones para cada elemento de una matriz o
colección.
For Each [Elemento] In [Grupo]
[Instrucciones]
If [Condicion] then
[Exit For] End If
Next [Elemento]
2.2.4 While Wend
While Wend se utiliza para repetir una
serie de instrucciones mientras se cumpla una determinada
condición, es decir, tenga el valor True.
While [Condicion] [Intrucciones]
Wend
2.2.5 GoTo
GoTo se utiliza para variar el sentido que
debería tomar una macro, ya que cuando una macro llega a
una línea que contiene dicha instrucción "salta" al
lugar especificado en GoTo.
GoTo [Linea] Linea:
2.2.6 With End With
With End With se utiliza para ejecutar una serie de
instrucciones sobre un único objeto o sobre un tipo
definido por el usuario. Permite realizar múltiples
operaciones sobre el mismo objeto.
With [Objeto] [Instrucciones] End
With
2.2.7 If Then
If Then se utiliza para escoger entre 2 o
más posibilidades, para decidir sobre que es lo que se
quiere, entre una serie de alternativas.
If [Condicion] Then
[Instrucciones]
ElseIf [CcondicionElseIf] Then
[InstruccionesElseIf] Else
[InstruccionesElse] End If
2.2.8 Select Case
Select Case se utiliza cuando las alternativas en una
estructura de If Then son muchas. En tal caso conviene evitar el
If Then y hacer uso de Select Case, que permite ejecutar uno de
varios grupos de instrucciones, dependiendo del valor de una
expresión.
Select Case [Expresion-m] Case
[Expresion-1]
[Instrucciones-1]
Case [Expresion-2]
[Instrucciones-2]
…..
Case [Expresion-n]
[Instrucciones-n]
Case Else
[InstruccionesElse] End Select
2.2.9 DoEvents
DoEvents se utiliza para ceder el control de la
ejecución al sistema operativo, para que éste pueda
procesar otros eventos. El control no se devuelve hasta que el
sistema operativo haya terminado de procesar los eventos en cola
y se hayan enviado todas las teclas de la cola
SendKeys.
DoEvents()
2.2.10 On Error GoTo
On Error GoTo se utiliza para controlar un error de
macro en caso de existir. Permite indicar que en caso de existir
un error haga un salto a otra línea donde se le indique
cómo proceder.
On Error GoTo CasoError
CasoError:
2.2.11 On Error Resume Next
On Error Resume Next se utiliza para
controlar un error de macro en caso de existir. Permite indicar
que en caso de existir un error lo omita.
3
ARRAYS
Un Array corresponde a una cadena de
elementos. Cada elemento de un array tiene un número de
índice que lo identifica como único.
3.1 ARRAYS FIJOS
Un array fijo corresponde a aquel que posee un
número fijo de elementos. La declaración
de un Array fijo de "n" elementos se hace de las
siguientes formas.
Dim NombreArray(0 to n) as
TipoVariable
Dim NombreArray(n) as
TipoVariable
3.2 ARRAYS VARIABLES
Un array variable corresponde a aquel que
puede modificarse el número de elementos. La
declaración de un Array variable se hace de la siguiente
forma.
Dim NombreArray() as
TipoVariable
3.3 ARRAYS BIDIMENSIONALES
Un array bidimensional corresponde a aquel que posee 2
dimensiones, es decir, en vez de cadena corresponde a una matriz
de elementos. La declaración de un Array bidimensional
fijo de "n" y "m" elementos se hace de las siguientes
formas.
Dim NombreArray(1 to n, 1 to m) as
TipoVariable
Dim NombreArray(n, m) as
TipoVariable
3.4 FUNCIONES DE ARRAY
3.4.1 Redim
Redimensiona el Array borrando la
información que tenia guardada. La función Redim se
usa de la siguiente forma.
Redim NombreArray(n)
3.4.2 Redim Preserve
Redimensiona el Array conservando la
información que tenia guardada. La función
Redim
Preserve se usa de la siguiente
forma.
Redim Preserve
NombreArray(n)
3.4.3 LBound
Devuelve el índice inferior del
array. La función LBound se usa de la siguiente
forma.
LBound(NombreArray)
3.4.4 UBound
Devuelve el índice superior del
array. La función UBound se usa de la siguiente
forma.
UBound(NombreArray)
3.4.5 Join
Devuelve un String que contiene todos los
elementos del Array separados por un elemento separador. La
función Join se usa de la siguiente forma.
Join(NombreArray,
"Separador")
3.4.6 Split
Devuelve un Array cuyos elementos
corresponden a los que conforman un String separados por un
elemento separador. La función Split se usa de la
siguiente forma.
Split(NombreArray,
"Separador")
3.4.7 Filter
Devuelve un array filtrado según
algún criterio de búsqueda, permitiendo incluir o
excluir el texto de busqueda (True/False). La función
Filter se usa de la siguiente forma.
Filter(NombreArray, "TextoBusqueda",
True/False)
4
USERFORM
4.1 CUADRO DE
HERRAMIENTAS
Las opciones y sus funcionalidades son las
siguientes.
Seleccionar Objetos: Permite seleccionar
controles insertos en el Userform.
Label: Permite insertar una
etiqueta.
Textbox: Permite insertar un cuadro de
texto, en el cual se introducen datos.
ComboBox: Sirve para que un usuario elija una
opción de una lista.
ListBox: Sirve para que un usuario
rellene o elija varias opciones de una lista.
CheckBox: Permite insertar una caja de
checkeo.
OptionButton: Permite insertar botones de
opciones.
ToggleButton: Sirve para activar o
desactivar alguna funcionalidad. Este botón adopta el modo
"Encendido" / "Apagado".
Frame: Sirve para agrupar elementos de un
Userform (los elementos se deben ubicar dentro del
Frame).
CommandButton: Es un simple botón
que nos permite ejecutar acciones.
TabStrip: en un mismo Userform se pueden crear
distintas secciones.
MultiPage: en un mismo Userform se pueden crear
distintas páginas.
ScrollBar: si tenemos una lista con
muchos elementos el scrollbar nos permite
navegarlos.
SpinButton: permite aumentar o disminuir
valores.
Image: permite introducir imágenes en el
Userform.
RefEdit: permite hacer referencia a una celda
de Excel.
4.2 FUNCIONES DE USERFORM
4.2.1 Load
Carga el Userform para ser mostrado en
pantalla. La función Load se usa de la siguiente
forma.
Load NombreUserForm
5
DECLARACIONES
5.1 OPTION
5.1.1 Option Explicit
Obliga a declarar explícitamente todas las
variables mediante las instrucciones Dim, Private, Public, ReDim
o Static. Cuando no se usa, todas las variables no declaradas son
Variant.
5.1.2 Option Private Module
Impide que las variables declaradas en el modulo sean
utilizadas en otros archivos. La variables declaradas como
publicas dentro del modulo si están disponibles en otros
modulos del mismo archivo, pero no en modulos de otros
archivos.
5.1.3 Option Base 0
Establece el 0 como el índice inferior de los
Array declarados en el modulo. Esta opción viene por
default, por lo que no es necesario declararla.
5.1.4 Option Base 1
Establece el 1 como el índice inferior de los
Array declarados en el modulo.
5.1.5 Option Compare Binary
Especifica el método de comparación de
Strings para un módulo. Esta opción viene por
default, por lo que no es necesaria declararla. El ordenamiento
de menor a mayor Binary es el siguiente.
A < B < E < Z < a < b
< e < z
5.1.6 Option Compare Text
Especifica el método de
comparación de Strings para un módulo. El
ordenamiento de menor a mayor Text es el siguiente.
(A = a) <(=) <(B = b) <(E =
e) <(=) <(Z = z) <(=)
5.2 EVENTOS DE LIBROS
Los eventos de libros corresponden a determinados
sucesos propios de un libro, tales como abrirlo, guardarlo,
cerrarlo, imprimirlo, etc. Las macros de eventos de libros se
deben escribir en la carpeta ThisWorkbook de la ventana
proyecto.
En la primera lista desplegable de la ventana
código se debe seleccionar la opción
Workbook.
En la segunda lista desplegable de la
ventana código se debe seleccionar el evento de libro
deseado.
5.2.1 Activate
Se ejecuta al activar el libro.
5.2.2 AddinInstall
Se ejecuta cuando el libro se instala como un
complemento.
5.2.3 AddinUninstall
Se ejecuta cuando el libro se desinstala como un
complemento.
5.2.4 AfterXmlExport
Se ejecuta después de guardar o exportar datos
del libro a un archivo XML.
5.2.5 AfterXmlImport
Se ejecuta después de actualizar una
conexión de datos XML o después de importar nuevos
datos XML en el libro.
5.2.6 BeforeClose
Se ejecuta antes de cerrar el
libro.
5.2.7 BeforePrint
Se ejecuta antes de imprimir el
libro.
5.2.8 BeforeSave
Se ejecuta antes de guardar el
libro.
5.2.9 BeforeXmlExport
Se ejecuta antes de guardar o exportar
datos del libro a un archivo XML.
5.2.10 BeforeXmlImport
Se ejecuta antes de actualizar una
conexión de datos XML o después de importar nuevos
datos XML en el libro.
5.2.11 Deactivate
Se ejecuta cuando se desactiva el
libro.
5.2.12 NewSheet
Se ejecuta cuando se crea una hoja en el
libro.
EL PRESENTE TEXTO ES SOLO UNA SELECCION DEL TRABAJO
ORIGINAL.
PARA CONSULTAR LA MONOGRAFIA COMPLETA SELECCIONAR LA OPCION
DESCARGAR DEL MENU SUPERIOR.