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.