Material de Apoyo Introduccion VBA
Material de Apoyo Introduccion VBA
Material de apoyo
Lenguaje Visual Basic de Aplicaciones (VBA)
Contenido
Lenguaje Visual Basic de Aplicaciones (VBA) ............................................................................. 2
El Editor del Visual Basic ......................................................................................................... 2
El Editor y la programacin orientada a objetos .................................................................. 3
Ventanas en el Editor de Visual Basic .................................................................................. 5
Variables Locales ..................................................................................................................... 7
Variables Pblicas .................................................................................................................... 7
Variables Estticas ................................................................................................................... 7
Option Explicit ........................................................................................................................... 8
Constantes ................................................................................................................................... 9
Mdulos ........................................................................................................................................ 9
Procedimientos ......................................................................................................................... 11
Procedimiento Privado ....................................................................................................... 11
Procedimiento Pblico........................................................................................................ 11
Procedimiento Esttico ...................................................................................................... 11
Asignacin de valores o expresiones ................................................................................ 13
Ingreso de datos. Emisin de resultados .......................................................................... 15
Sentencia DIM ........................................................................................................................... 18
Antes de empezar el estudio de las instrucciones del Visual Basic para Aplicaciones, daremos
una breve explicacin del Editor de Visual Basic y los elementos dentro de su entorno.
Puede usar tambin, <ALT> +<F8>, luego seleccionar la macro y hacer clic en <Modificar>.
Todo lo que se puede hacer en el editor, est relacionada con programas. La filosofa de
programacin usada en este editor, es el de la Programacin Orientada a Objetos (POO), la
que nos permitir hacer modificaciones sobre la programacin subyacente a una macro y crear
nuestros propios programas. Un programa es, en principio, una secuencia de pasos o
instrucciones que escribimos para resolver un problema en particular.
Propiedades
Las propiedades son las caractersticas, atributos, formas o aspectos del objeto, a las que se
hace referencia mediante el uso de variables. Una propiedad de objeto comn de Excel es
su Nombre, que nos permitir usarlos en las diferentes usos que hagamos del objeto. De
manera que una celda, un rango de celdas, una hoja, libro, grfico o tabla en Excel, tendr un
nombre con el cual lo identificaremos.
Para hacer referencia a las propiedades mediante los programas en VBA, se usa la sintaxis:
NombreDelObjeto.Propiedad
Ejemplo:
Range("A5").Name Aqu se hace referencia al nombre del objeto Range de la celda A5.
Mtodos
Un mtodo es una accin, un procedimiento (un hilo), que tiene efectos sobre un objeto.
Ejemplo:
Range("A5").Select Aqu se ejecuta el mtodo Select, que permite activar la celda A5 y
ponerla en disponible para cualquier otra operacin.
Eventos
Un evento es el resultado de una accin, es la forma cmo queda el objeto despus de alguna
accin sobre l. Por lo general estas acciones son producidas por los mtodos que actan sobre
el objeto.
Excel incluye varios controladores de eventos, o rutinas de cdigo, que controlan acciones
determinadas. Cuando ocurre una de dichas acciones, y ha comunicado a Excel qu desea que
haga cuando ocurra el evento, Excel ejecuta el cdigo del controlador de eventos. Por ejemplo,
si despus de crear un nuevo libro desea que Excel muestre todos los libros abiertos como un
conjunto de ventanas en cascada, puede crear el siguiente controlador de eventos:
Application.Windows.Arrange xlArrangeStyleCascade
End Sub
Nota: No se preocupe si no est seguro de qu hace cada uno de los elementos de la rutina
del controlador de eventos. Por ahora, concntrese en la lnea del medio del cdigo, que
comunica a Excel que organice las ventanas utilizando el estilo de cascada. Puede
obtener el mismo resultado utilizando los comandos de men de Excel (men Ventana,
comando Organizar, sub comando Cascada). Sin embargo, si se trata de una accin
que desea que se ejecute cada vez que ocurra un evento determinado, puede utilizar el
lenguaje VBA para que se ejecute automticamente y as ahorrarse el trabajo.
Colecciones
Puesto que un libro contiene una o ms hojas de clculo, podemos decir que un libro es una
coleccin de hojas de clculo. As las cosas, podemos ejecutar algn mtodo sobre esta
coleccin a fin de realizar la misma accin sobre todas ellas. Por ejemplo, seleccionar tres hojas
y darle un determinado formato.
For i = 1 to 3
Worksheets(i).PageSetup.RightFooter = Path
Next i
El Editor de Visual Basic muestra distinta informacin en distintas ventanas. Estas ventanas
pueden contener a uno o ms mdulos (macros) o pueden hacer referencia a las propiedades
de los objetos contenidos en la hoja o libro.
Un mdulo puede contener las instrucciones de una o varias macros. El contenido de los
libros y complementos del Excel, no se pueden visualizar, excepto si se supiera su contrasea.
Ventana Propiedades
Para modificar las propiedades de un libro u hoja, debemos seleccionarlo primero y luego
hacer clic en la propiedad deseada y luego elegir entre las opciones disponibles. Por ejemplo
si se desea ocultar la hoja cuyo nombre es Hoja1, seleccinela primero, luego en la ventana
propiedades, haga clic en la propiedad <Visible> y seleccione la opcin <xlSheetHidden>
Ventana de Cdigo
Variables Locales
Por ejemplo:
Sub procedimiento()
Sentencias ....
End Sub
Variables Pblicas
Si se quiere que una variable est disponible para todos los procedimiento s de todos los
mdulos VBA de un proyecto, se la debe definir a travs de la sentencia PUBLIC (y no
DIM).
Por ejemplo:
Las variables pblicas se deben definir antes del primer procedimiento de un mdulo de
VBA; no deben definirse en los mdulos correspondientes a las hojas del Libro de Trabajo ni
en los mdulos correspondientes a UserForms.
Variables Estticas
Por ejemplo:
Sub Procedimiento()
[ Sentencias ...]
End Sub
Option Explicit
La sentencia Option Explicit permite que el programa se detenga cada vez que VBA
encuentre una variable que no ha sido definida. Esto es de gran utilidad cuando se usan muchas
variables ya que nos permite identificar rpidamente errores o uso no deseado en el nombre de
la variable. Esta sentencia se debe escribir al comienzo del mdulo.
Constantes
A diferencia de la variables, cuyo valor cambia al ejecutarse un procedimiento, hay valores
que no cambian durante la ejecucin de un procedimiento, stos valores se
denominan Constantes. Las constantes se definen a travs de la sentencia Const. Por ejemplo;
Las constantes tambin pueden declararse como Pblicas para que estn disponibles en
todos los procedimientos de todos los mdulos, esto se hace a travs de la sentencia PUBLIC
Para definir constantes Locales, basta definirlas a travs de la sentencia Const dentro de un
procedimiento o funcin.
Mdulos
Un mdulo es un ambiente, es un entorno de trabajo compuesto por sentencias de
declaracin de variables y por uno o ms procedimientos.
Estando en el Editor del Visual Basic, para disponer de un Mdulo, se debe usar la siguiente
secuencia de comandos: <Insertar> - <Mdulos>, como se indica en la siguiente imagen.
Luego de esta accin, se podr observar, en la ventana de proyectos y dentro del libro en
uso, una carpeta con el nombre Mdulo. Dentro de ella se insertarn todos los procedimientos
que conforman dicho mdulo.
Procedimientos
Un procedimiento est formado por un conjunto de sentencias que permite resolver un
problema. Un mdulo est formado por uno o ms procedimientos. Un procedimiento se declara
a travs de la sentencia Sub y puede ser Privado, Pblico o Esttico.
Procedimiento Privado
Un procedimiento privado slo es accesible por otros procedimientos dentro del mismo
mdulo. Su sintaxis es:
[sentencias]
End Sub
Procedimiento Pblico
Un procedimiento pblico es accesible por todos los procedimientos de todos los mdulos
VBA de un proyecto, su sintaxis es:
[Sentencias]
End Sub
Procedimiento Esttico
Para que las variables de un procedimiento se conserven una vez terminada su ejecucin,
ste debe definirse como Esttico:
[Sentencias]
End Sub
La sentencia Sub y End Sub son obligatorias al definir cualquier procedimiento. Los
argumentos y las sentencias Private, Public y Static son opcionales. Es importante mencionar
que al definir un procedimiento sin ninguna de las sentencias anteriores, por defecto ste se
define como Pblico, es decir:
Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
End Sub
Es equivalente a :
[Sentencias]
End Sub
Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
Exit Sub
[Sentencias]
End Sub
[Sentencias]
Proced2
[Sentencias]
End Sub
La sentencia Call se utiliza cuando se requiere llamar a un procedimiento al cual hay que
pasarle un argumento, por ejemplo:
Sub Procedimiento1(argumento1,argumento2,.....)
[Sentencias]
indice= ........
Call Proced2(indice)
[Sentencias]
End Sub
Argumentos
Los argumentos pueden ser pasados a un procedimiento por referencia (por defecto los
argumentos se pasan de esta forma) o por valor. Cuando un argumento es pasado por
referencia, se pasa la variable misma al procedimiento llamado, por lo que los cambios que se
producen en la variable son devueltos al procedimiento principal (al que llam al otro). En
cambio cuando un argumento es pasado por valor, se pasa una copia de la variable al
procedimiento llamado por lo que los cambios que se producen en la variable no son devueltos
al procedimiento principal. Para pasar un argumento por valor, se utiliza la sentencia ByVal, por
ejemplo :
[Sentencias]
End Sub
Pasar argumentos por valor es til cuando se requiere conservar el valor original de una
variable despus de llamar a otro procedimiento.
[Sentencias]
End Sub
Ejemplo 1
XTot = 120
Ejemplo 2
Ejemplo 3
Tasa = 0.19
Cantidad = 120
PrecioUnit = 25.80
Nota 1: En los dos ejemplos anteriores, algunas variables reciben un valor dentro del programa.
Toda vez que se ejecute el programa, dichas variables siempre usarn los mismos
valores y, como tal, aquellas que dependen de ellas tambin contendrn los mismos
resultados. Para que dichas variables tomen otros valores, es necesario ingresarlos
desde otros programas o procedimientos, o desde el teclado.
Nota 2: En todas las sintaxis de instrucciones que en adelante, se tenga, el uso de corchetes
"[]" nos indicar que su contenido es opcional.
En VBA los datos se ingresan usando el mtodo InputBox() el cual abre una ventana de
dilogo. La sintaxis de este mtodo es:
donde:
Nota: Todos los ejemplos de aqu en adelante, pueden ser probados copiando hacia la
ventana de cdigo, correspondiente a un mdulo. Si no hubiera ningn mdulo, haga
clic en el comando <Insertar>, luego en <Modulo>.
Ejemplo 4
En este ejemplo se pide ingresar un nmero y que si no se digita, la variable Num recibir el
valor que se asume, 120. La ventana de dilogo tendr por ttulo "Ingreso de datos", se
desplegar a partir de las coordenadas (4830, 2210) de la pantalla (en pixels). En la siguiente
instruccin no se coloca un ttulo, si no se digita una expresin, la variable texto contendr "Hola
Per" y cambiar de posicin.
Sub datos()
Num = InputBox("Ingresa un nmero", "Ingreso de datos", 120, 4830, 2210)
donde
Prompt Cadena de caracteres de hasta 1024 bytes. Si ocupa ms de una lnea se puede
separar usando el carcter de retorno de carro CHR(13), o un carcter de avance de
lnea CHR(10) o una combinacin de los dos: CHR(13)+CHR(10).
Botones Permite mostrar u determinado tipo d botn a travs de un icono. La siguiente tabla
muestra la lista de las variables internas usadas para mostrar el icono.
Ejemplo 5
Sub Ventas01
Dim PrUnit, Neto As Double
Dim Cantidad As Integer
Cantidad = InputBox ("Ingrese la cantidad")
PrUnit = InputBox("Ingrese el precio unitario")
IGV = InputBox("Valor del IGV", ,0.18)
Neto = Cantidad*PrUnit-Cantidad*PrUnit*IGV
MsgBox("El monto neto es: "+Chr(13)+Chr(10)+Chr(13)+Chr(10)&Neto)
End Sub
El siguiente ejemplo muestra el uso de los botones para mostrar sus respectivos iconos
Ejemplo 6
Sub Botones
Dim Msg, ComboBotones, Ttulo, Ayuda, Ctxt, Respuesta, MiCadena
Msg = "Desea continuar?"
ComboBotones = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones.
Ttulo = "Prueba de la funcin MsgBox con botones" ' Define el ttulo.
Ayuda = "DEMO.HLP" ' Define el archivo de ayuda.
Ctxt = 1000 ' Define el tema
' el contexto
Res = MsgBox(Msg, ComboBotones, Ttulo, Ayuda, Ctxt) ' Muestra el mensaje.
End Sub
Variables
Puesto que todo lo que se realiza en el computador, debe ser guardado en la memoria, cada
uno de los datos deben tener un lugar en ella a donde guardarlos. Para ello es necesario el uso
de las variables. Mediante el uso de las variables y tambin constantes, podemos almacenar
cada uno de los datos o constantes en una localidad de la memoria.
Esto implica que, para acceder a dichas localidades, es necesario el uso de las variables.
Estas tienen un nombre. El nombre puede estar formado por una letra, seguido de uno o ms
caracteres literales o numricos. Estos nombres son nicos; es decir, ninguna otra variable
puede tener el mismo nombre. Naturalmente, la variable se puede usar en diferentes mbitos
o secciones; en cada una de ellas, el mismo nombre de variable puede ser usado para
propsitos distintos; sin embargo, el nombre de una variable tambin puede ser definido para
ser vlido en todos los mbitos.
Sentencia DIM
Para declarar una variable se usa la sentencia DIM. Esta declaracin se coloca al principio
de las secciones o mdulos.
Sintaxis:
Tipos de variable
Ejemplos
DIM XTitulo, Nom01, Nom02 As String Usados para contener datos literales