Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EXCEL - Administración y Producción PDF
EXCEL - Administración y Producción PDF
1. FUNDAMENTOS DE PROGRAMACION
1.1 Programa
Un Programa es u conjunto ordenado de instrucciones con un propsito determinado que cumplen con las reglas
semnticas y sintcticas de un lenguaje de programacin. El Objetivo del Programa es procesar datos generando
informacin para el usuario.
1.2 Instruccin
Una instruccin es un conjunto de caracteres que especifican una operacin a realizarse.
Cada instruccin se escribe en una lnea, pudindose colocar ms de una instruccin en una lnea separndolas por
el carcter : (dos puntos).
1.3 Variables
Una variable es un nombre asociado a un d
ato o conjunto de datos que se almacenarn en la memoria del computador.
Las variables son elementos empleados en las instrucciones de un programa que pueden cambiar de valor durante la
ejecucin del programa.
Las variables pueden representar datos, tales como: El nombre de una persona, el sueldo de un empleado, la nota de
un alumno, etc.
Las Variables se declaran utilizando previamente la instruccin DIM, el nombre de la Variable y el tipo de dato, de
esta manera:
DIM variable AS Tipo_Dato
Visita: www.systematic.edu.pe 1
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Tipos de datos Numricos: son datos que consisten en nmeros que pueden ser procesados
matemticamente por operadores de suma, resta, multiplicacin, divisin y otros.
En Visual Basic, los datos numricos son:
Enteros: byte, Integer y long
Reales: Single y Double
1.5.1 Operadores Aritmticos: Permiten Realizar operaciones tal como se muestra en la tabla. El orden en el
que se presentan reflejan su orden de precedencia (Orden para Operarlos matemticamente).
Operacin Smbolo
Exponenciacin ^
Multiplicacin *
Divisin /
Divisin Entera(Cociente de la divisin entera) \
Mdulo Aritmtico(Residuo de la divisin Entera) MOD
Suma y Diferencia + -
Nota.- El smbolo &se usa para unir cadenas de caracteres (equivale a sumar o concatenar cadenas de
caracteres).
1.5.2 Operadores Condicionales: Las relaciones condicionales permiten comparar valores y decidir la accin
a tomar en la ejecucin de un programa. Estas condiciones darn como resultado un valor lgico de
VERDADERO o FALSO.
Relacin Smbolo Expresin
Igualdad = A=B
Desigualdad <> A<>B
Menor < A<B
Mayor > A>B
Mayor o igual >= A>=B
Menor o igual <= A<=B
Nota.- Estos operadores sirven para comparar todos los tipos de datos (numricos, textos, fechas, etc.).
1.5.3 Operadores Lgicos: Los operadores lgicos ayudan a precisar las operaciones condicionales con las
siguientes operaciones:
Operador Smbolo
Negacin NOT
Conjuncin AND
Disyuncin OR
Visita: www.systematic.edu.pe 2
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Estos operadores se encargan de examinar relaciones y operaciones lgicas (Booleanas), dando como
resultado uno de los siguientes valores: Verdadero o Falso (True/False).
El elemento ubicado a la izquierda recibe el valor ubicado al lado derecho del signo igual.
Funcin Descripcin
ATN(x) Arco Tangente de x. (Angulo x en radianes)
SIN(x) Seno de x. (Angulo x en radianes)
COS(x) Coseno de x. (Angulo x en radianes)
TAN(x) Tangente de x. (Angulo x en radianes)
ABS(x) Valor absoluto de x.
FIX(x) INT(x) Parte entera de x.
ROUND(x, n) Redondea x a n decimales
LOG(x) Logaritmo natural de x, con x>0.
SGN(x) Devuelve el signo de x.
SQR(x) Raz cuadrada de x, con x>0
EXP(x) Exponencial de x.
RND Nmero aleatorio entre [0, 1[
Chr(cdigoCarcter).
Devuelve el carcter asocia do con el cdigo de carcter especificado.
Nmero est en el intervalo de 0 a 255, inclusive, que identifica a un carcter.
Lcase(cadena).
Devuelve una cadena que se ha convertido a minscula.
Visita: www.systematic.edu.pe 3
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Len(cadena | nombrevariable).
Devuelve el nmero de caracteres en una cadena o el nmero de bytes requerido para almacenar una
variable.
LTrim (cadena), RTrim (cadena), Trim (cadena).
Devuelve una copia de una cadena sin espacios a la izquierda (LTrim), a la derecha (RTrim) o sin espacios
ni a la derecha ni a la izquierda (Trim).
Space (nmero).
Devuelve una cadena que consiste en un nmero especificado de espacios.
Str (nmero).
Devuelve una representacin de cadena de un nmero.
Ucase (cadena).
Devuelve una cadena que se ha convertido en mayscula. Slo se convierten en mayscula las letras
minsculas. Las letras maysculas o los caracteres que no son letras no sufren cambios.
Val (cadena).
Devuelve los nmeros contenidos en una cadena. Cadena es cualquier expresin de cadena vlida.
La funcin Val deja de leer la cadena en el primer carcter que no puede reconocer como parte de un
nmero.
Day(fecha).
Devuelve un nmero entero entre 1 y 31, inclusive, que representa el da del mes.
Hour(horadigital).
Devuelve un nmero entero entre 0 y 23, inclusive, que representa la hora del da.
El argumento con nombre horadigital se limita a una hora o nmeros y cadenas, (en cualquier
Combinacin), que puedan representar una hora. Si horadigital contiene datos no vlidos, se
devuelve Null.
Minute(hora).
Devuelve un nmero entero entre 0 y 59, inclusive, que representa el minuto de la hora.
Month(fecha).
Devuelve un nmero entero entre 1 y 12, inclusive, que representa el mes del ao.
Visita: www.systematic.edu.pe 4
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Now.
Devuelve la fecha y la hora de acuerdo a la configuracin de la fecha y la hora del sistema de su PC.
Second(hora).
Devuelve un nmero entero entre 0 y 59, inclusive, que representa el segundo del minuto.
Time.
Devuelve Date indicando la hora actual del sistema. Use Time para establecer la hora del sistema.
Year(fecha).
Devuelve un nmero entero que representa el ao.
El argumento fecha es cualquier expresin numrica o expresin de cadena (en cualquier
combinacin), que puedan representar una fecha. Si fecha contiene datos no vlidos devuelve Null.
2. ENTORNO DE PROGRAMACIN
2.3 Objeto.
Cuando en el mundo real nos referimos a objeto significa que hablamos de algo ms o menos abstracto que puede
ser cualquier cosa. Si decidimos concretar un poco ms podemos referirnos a objetos coche, objetos silla, objetos
casa, etc. En OOP, la generalizacin (o definicin) de un objeto se llama Clase, as la clase coche seria como la
representante de todos los coches del mundo, mientras que un objeto coche seria un coche en concreto. De
momento, no definiremos ni estudiaremos las clases sino que nos concentraremos en los objetos, tenga en cuenta
pero que cualquier objeto est definido por una clase.
Cuando decimos que la clase coche representa a todos los coches del mundo significa que define como es un coche,
cualquier coche. Dicho de otra forma y para aproximarnos a la definicin informtica, la clase coche define algo que
tiene cuatro ruedas, un motor, un chasis,... entonces, cualquier objeto real de cuatro ruedas, un motor, un chasis,...
es un objeto de la clase coche.
2.4 Propiedades.
Cualquier objeto tiene caractersticas o propiedades como por ejemplo el color, la forma, peso, medidas, etc. Estas
propiedades se definen en la clase y luego se particularizan en cada objeto. As, en la clase coche se podran definir
las propiedades Color, Ancho y Largo , luego al definir un objeto concreto como coche ya se particularizaran estas
propiedades a, por ejemplo, Color = Rojo, Ancho = 2 metros y Largo = 3,5 metros.
2.5 Mtodos.
La mayora de objetos tienen comportamientos o realizan acciones, por ejemplo, una accin evidente de un objeto
coche es el de moverse o lo que es lo mismo, trasladarse de un punto inicial a un punto final. Cualquier proceso que
implica una accin o pauta de comportamiento por parte de un objeto se define en su clase para que luego pueda
Visita: www.systematic.edu.pe 5
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
manifestarse en cualquiera de sus objetos. As, en la clase coche se definiran en el mtodo mover todos los procesos
necesarios para llevarlo a cabo (los procesos para desplazar de un punto inicial a un punto final), luego cada objeto
de la clase coche simplemente tendra que invocar este mtodo para trasladarse de un punto inicial a un punto final,
cualesquiera que fueran esos puntos.
Repasemos a continuacin todos estos conceptos pero ahora desde el punto de vista de algunos de los objetos que
nos encontraremos en Excel como WorkSheet (Objeto hoja de clculo) o Range (Objeto casilla o rango de casillas).
Un objeto Range est definido por una clase donde se definen sus propiedades, recordemos que una propiedad es
una caracterstica, modificable o no, de un objeto. Entre las propiedades de un objeto Range estn Value , que
contiene el valor de la casilla , Column y Row que contienen respectivamente la fila y la columna de la casilla, Font
que contiene la fuente de los caracteres que muestra la casilla, etc.
Range, como objeto, tambin tiene mtodos, recordemos que los mtodos sirven llevar a cabo una accin sobre un
objeto. Por ejemplo el mtodo Activate, hace activa una celda determinada, Clear, borra el contenido de una celda o
rango de celdas, Copy, copia el contenido de la celda o rango de celdas en el portapapeles,...
2.6 Conjuntos.
Una conjunto es una coleccin de objetos del mismo tipo, para los que conozcan algn lenguaje de programacin es
un array de objetos. Por ejemplo, dentro de un libro de trabajo puede existir ms de una hoja (WorkSheet), todas las
hojas de un libro de trabajo forman un conjunto, el conjunto WorkSheets. Cada elemento individual de un conjunto
se referencia por un ndice, de esta forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarn
por WorkSheets(1), WorkSheets(2) y WorkSheets(3).
En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range tiene la propiedad Font que es
tambin un objeto y Font tiene la propiedad Bold (negrita). Tenga esto muy presente ya que utilizaremos
frecuentemente Propiedades de un objeto que sern tambin Objetos. Dicho de otra forma, hay propiedades que
devuelven objetos, por ejemplo, la propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range.
Bueno, despus de esta extensa pero necesaria introduccin pasemos ya a hacer alguna cosa en Excel. No es
necesario que se aprenda lo anterior al pi de la letra y tampoco es necesario que lo comprenda al cien por cien, slo
tngalo presente para las definiciones que vienen a continuacin y ver como va asimilando los conceptos de
Objeto, propiedades, mtodos, etc.
Visita: www.systematic.edu.pe 6
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 7
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
1
2
1 Barra de Mens.- Est compuesta por Archivo, Edicin, Ver entre otros, la cual contiene los comandos
necesarios para poder trabajar en el Editor de Visual Basic.
2 Barra de Herramientas Estndar.- Es la que contiene conos a modo de acceso directo de los comandos de la
barra de Mens.
3 Explorador de Proyectos.- En este Sector Visualizaremos todos los nombres de los objetos principales
(Formularios, mdulos, hojas) con los que estamos trabajando en nuestro Proyecto.
4 Ventana de Propiedades.- En este sector observaremos y controlaremos las propiedades de los objetos con
los que estamos trabajando en nuestro Proyecto.
Visita: www.systematic.edu.pe 8
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
rea de Trabajo.- En este Sector Visualizaremos todos los objetos con los que estamos trabajando, tambin
visualizaremos las reas de codificacin de cada objeto y de los mdulos.
Si nuestro Editor de Visual Basic carga sin el Explorador de Proyectos, podemos activarlo de la siguiente manera:
Click en el Men Ver y luego dar click en Explorador de Proyectos de una manera ms rpida usando la
combinacin de Teclas: Ctrl. + R.
Si nuestro Editor de Visual Basic carga sin la ventana de Propiedades, podemos activarlo de la siguiente manera:
Click en el Men Ver y luego dar click en Ventana de Propiedades de una manera ms rpida presionando la tecla
de funcin F4.
Visita: www.systematic.edu.pe 9
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 10
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Sub Nombre_Procedimiento
Y termina con la instruccin
End Sub.
Ejemplo 1
Observe el cdigo:
Range("A1").Value="Hola"
En esta lnea estamos indicando que trabajamos con un objeto Range. Para indicarle que nos referimos a la casilla
A1, encerramos entre parntesis esta referencia (ms adelante ver otra forma de referirnos a las casillas). De este
objeto, indicamos que queremos establecer un nuevo valor para la propiedad Value, observe que para separar el
objeto de su propiedad utilizamos la notacin punto.
Recuerde que el conjunto Range es un objeto que pende del objeto WorkSheets, as por ejemplo el siguiente cdigo
hara lo mismo que el anterior.
WorkSheets(1).Range("A1").Value = "Hola"
Bueno, de hecho no hace lo mismo, en la primera opcin, el texto "Hola" se pone dentro de la casilla A1 de la hoja
activa, mientras que en el segundo es en la casilla A1 de primera hoja ( del conjunto de hojas). La segunda notacin
es ms larga, pero tambin ms recomendable ya que se especifican todos los objetos. En muchas ocasiones se
pueden omitir algunos objetos precedentes, no le aconsejamos hacerlo, sus programas perdern claridad y
concisin.
Si desea hacer referencia a la hoja activa puede utilizar ActiveSheet, as, el primer ejemplo lo dejaremos de la
manera siguiente.
Visita: www.systematic.edu.pe 11
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Para terminar con este primer ejemplo. WorkSheets estn dentro del Objeto WorkBooks (libros de trabajo) y
WorkBooks estn dentro de Application. Application es el objeto superior, es el que representa la aplicacin Excel.
As, el primer ejemplo, siguiendo toda la jerarqua de objetos quedara de la forma siguiente.
Insistiendo con la nomenclatura, Application casi nunca es necesario especificarlo, piense que todos los objetos
penden de este, WorkBooks ser necesario implementarlo si en las macros se trabaja con diferentes libros de
trabajo (diferentes archivos), a partir de WorkSheets, es aconsejable incluirlo en el cdigo, sobre todo si se quiere
trabajar con diferentes hojas, ver, sin embargo, que en muchas ocasiones no se aplica.
Visita: www.systematic.edu.pe 12
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 2
En este segundo ejemplo simplemente ampliaremos la funcionalidad de la macro del ejemplo 1. Adems de escribir
"Hola" en la casilla A1 de la celda A1, la pondremos en negrita y le daremos color al texto.
Para ello utilizaremos las propiedades Bold y Color del objeto Font.
Visita: www.systematic.edu.pe 13
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
True.
True, que traducido es verdadero, simplemente indica que la propiedad Bold est activada. Si se deseara desactivar,
bastara con igualarla al valor False.
Como ves el texto sale en negrita y de color rojo ya que tiene intensidad solo en el color rojo de la funcin RGB.
Como ves se agrega el texto Hola en negrita y de color rojo en el rango A1:A8.
Visita: www.systematic.edu.pe 14
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
2.9.8 Variables.
A continuacin vamos a repetir el programa Ejemplo1, pero en lugar de poner "Hola" en la casilla A1 de la hoja
activa, dejaremos que el usuario entre un texto desde teclado y a continuacin guardaremos ese valor en esa casilla.
Observe que el valor que entre del usuario debe guardarse en algn lugar para poder ponerlo despus en la casilla
A1; pues bien, ese valor se guardar en una variable. Una variable es simplemente un trozo de memoria que la
funcin o procedimiento se reserva para guardar datos, la forma general de declarar una variable es:
Siendo variable el nombre que se asigna a la misma y Tipo el tipo de datos que se guardarn (nmeros, texto, fecha,
boleanos,...). En nuestro ejemplo, declararemos la variable de tipo String (tipo texto), y lo haremos de la forma
siguiente:
Con esto estamos indicando que se reserve un trozo de memoria (el que sea) , que se llama Texto y que el tipo de
datos que se guardarn ah sern caracteres.
Si en la ventana que muestra InputBox pulsa sobre el botn Aceptar, los datos tecleados se guardarn en la variable
Texto.
Sintaxis de InputBox.
InputBox(Mensaje, Ttulo, Valor por defecto, Posicin horizontal, Posicin Vertical, Archivo ayuda, Nmero de
contexto para la ayuda).
Mensaje: Es el mensaje que se muestra en la ventana. Si desea poner ms de una lnea ponga
Chr(13) para cada nueva lnea, vea el ejemplo siguiente.
Valor por defecto: Es el valor que mostrar por defecto el cuadro donde el usuario entra el valor.
Parmetro opcional.
Archivo Ayuda: Es el archivo que contiene la ayuda para el cuadro. Parmetro opcional.
Visita: www.systematic.edu.pe 15
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Nmero de contexto para la ayuda: Nmero asignado que corresponde al identificador del archivo
de ayuda, sirve para localizar el texto que se debe mostrar. Si se especifica este parmetro, debe
especificarse obligatoriamente el parmetro Archivo Ayuda.
Ejemplo 3
Al ejecutar la macro se mostrar una ventanita que es la que se genera con la funcin InputBox, en ella ingresaremos
un Texto y luego pulsamos el botn aceptar:
El resultado ser:
Visita: www.systematic.edu.pe 16
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Este ejemplo tambin se puede hacer sin variables. Para eso Codificaremos de la siguiente manera:
Ejemplo 4
Repetiremos el ejemplo 3, pero en lugar de entrar los valores sobre la casilla A1, haremos que el usuario pueda
elegir en que casilla quiere entrar los datos, es decir, se le preguntar al usuario mediante un segundo Inputbox
sobre que casilla quiere entrar el valor del primer Inputbox. Sern necesarias dos variables, una para guardar la
casilla que escoja el usuario y otra para guardar el valor.
Al ejecutar la macro nos mostrar las siguientes Ventanas donde ingresaremos los datos solicitados y pulsaremos
enter:
Visita: www.systematic.edu.pe 17
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
A pesar de ello, le recomendamos que siempre declare las variables que va a utilizar, de esta forma sabr cuales
utiliza el procedimiento y qu tipo de datos guarda cada una, piense que a medida que vaya aprendiendo, crear
procedimientos cada vez ms complicados y que requerirn el uso de ms variables, si no declara las variables al
principio del procedimiento ocurrirn dos cosas. Primero, las variables no declaradas son asumidas como tipo
Variant (este es un tipo de datos que puede almacenar cualquier valor, nmero, fechas, texto, etc. pero tenga en
cuenta que ocupa 20 Bytes y para guardar una referencia a una casilla, la edad de alguien, etc. no son necesarios
tantos bytes); segundo, reducir considerablemente la legibilidad de sus procedimient os ya que las variables las ir
colocando a medida que las necesite, esto, a la larga complicar la correccin o modificacin del procedimiento.
Bueno, pues toda la explicacin anterior es para que declare todas las variables que va a utilizar. La sentencia Option
Explicit al principio del mdulo fuerza a que se declaren todas las variables. Si al ejecutar el programa, se encuentra
alguna variable sin declarar se producir un error y no se podr ejecutar el programa hasta que se declare.
Ejemplo 5
Ejecute el procedimiento y ponga respectivamente los valores 25 y 25. Observe que todo ha ido correctamente y en
la casilla A1 de la hoja activa aparece un 50.
InputBox 1 InputBox2
Visita: www.systematic.edu.pe 18
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora, vuelva a ejecutar el programa y cuando se le pide el primer valor teclee "Hola". Observe que el programa se
detiene indicando un error en el tipo de datos. Efectivamente, observe que la funcin InputBox devuelve siempre
datos tipo String, en el primer ejemplo no ha habido ningn problema, al entrar caracteres numricos1, estos
pueden asignarse a variables tipo Integer porque Visual Basic hace automticamente la conversin, pero al entrar
texto e intentarlo asignar a una variable Integer Visual Basic muestra un error indicando que la variable no es
adecuada para los datos que se desean guardar.
Para solucionar estos problemas se deben utilizar funciones de conversin de tipo. Estas funciones, como su nombre
indica, convierten datos de un tipo a otro, de String a Integer, de Integer a String, de Date a String ,... As el
procedimiento anterior quedara.
La funcin Val(Dato String), convierte una cadena de caracteres a valor numrico. Si la cadena a convertir contiene
algn carcter no numrico devuelve 0. As, si al pedir un valor se teclea "Hola", la funcin Val, devolver un cero.
Visita: www.systematic.edu.pe 19
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
ActiveSheet.Cells(1,1).Value="Hola"
Pondr en la celda A6 el valor "Hola", observe que en este ejemplo Cells comienza a contar filas y columnas a partir
del rango especificado en el objeto Range.
Estudiaremos en primer lugar la instruccin if Condicin then..End if (Si Condicin Entonces...Fin Si)
La estructura condicional que se construye con la instruccin Si Condicin Entonces... Fin Si tiene la forma siguiente:
Si Condicin Entonces
Sentncia1
Sentncia2
.
.
SentnciaN
Fin Si
Cuando el programa llega a la instruccin Si Condicin Entonces , se evala la condicin, si esta se cumple (es cierta),
se ejecutan todas las sentencias que estn encerradas en el bloque, si no se cumple la condicin, se saltan estas
sentencias. Esta estructura en Visual Basic tiene la sintaxis siguiente:
If Condicin Then
Sentncia1
Sentncia2
.
.
SentnciaN
End If
Visita: www.systematic.edu.pe 20
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 6.
Entrar una cantidad que representa el precio de algo por el teclado con la instruccin InputBox y guardarlo en la
celda A1 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A1) es superior a 1000, pedir
descuento con otro InputBox y guardarlo en la casilla A2 de la hoja activa.
Calcular en A3, el precio de A1 menos el descuento de A2.
Visita: www.systematic.edu.pe 21
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Nota que no nos muestra el InputBox solicitando el descuento ya que el valor ingresado no es mayor a 1000 y
tenemos el siguiente resultado:
Ahora en la celda A2 se muestra 200 que fue el valor de descuento que asignamos.
Visita: www.systematic.edu.pe 22
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 7.
El mismo que el anterior pero utilizando variables.
Viendo los dos programas anteriores puede que le surja la duda de si emplear variables o directamente valores
almacenados en las celdas. La solucin es fcil, lo que le parezca ms conveniente en cada caso concreto que desee
solucionar. Las variables, aunque muchas veces "innecesarias", quizs dejan los programas ms legibles y claros. Y la
legibilidad de un programa es lo ms valioso del mundo para un programador (profesionalmente hablando), sobre
todo si se da el caso (inevitable el 99,999...% de las ocasiones) que se tenga que modificar un programa para dotarle
de ms funcionalidades, facilitar su manejo, etc. En la mayora de ejemplos que encontrar en este manual ver que
se utilizan variables preferentemente. Aunque muchas veces su funcin sea simplemente recoger datos de las celdas
para operarlas y dejarlas en otras celdas y, consecuentemente, aumente el nmero de operaciones, creemos que
con ello se gana en legibilidad y flexibilidad.
Ejemplo 8.
Macro que compara los valores de las casillas A1 y A2 de la hoja activa. Si son iguales pone el color de la fuente de
ambas en azul.
Visita: www.systematic.edu.pe 23
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Estructura If..Else
Esta estructura se utiliza cuando se requiere una respuesta alternativa a una condicin. Su estructura es la siguiente:
Si Condicin Entonces
Sentncia1
Sentncia2
.
.
SentnciaN
Sino
Sentncia1
Sentncia2
.
.
SentnciaN
Fin Si
Observe que, si se cumple la condicin, se ejecuta el bloque de sentencias delimitado por Si Condicin Entonces y Si
no se cumple la condicin se ejecuta el bloque delimitado por Sino y Fin Si. En Visual Basic la instruccin Si Condicin
Entonces ... Sino ... Fin Si se expresa con las instrucciones siguientes:
If Condicin Then
Sentncia1
Sentncia2
.
.
SentnciaN
Else
Sentncia1
Sentncia2
.
.
SentnciaN
End If
Visita: www.systematic.edu.pe 24
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 9.
Entrar una cantidad que representa el precio de algo por el teclado con la instruccin InputBox y guardarlo en la
celda A1 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A1) es superior a 1000, se aplica un
descuento del 10% sino se aplica un descuento del 5%, el descuento se guarda en la casilla A2 de la hoja activa.
Colocar en A3, el total descuento y en A4 el total menos el descuento.
Donde tenemos como descuento 0.5 (5%) ya que la cantidad no excede a 1000.
Ejemplo 10.
Restar los valores de las celdas A1 y A2. Guardar el resultado en A3. Si el resultado es positivo o 0, poner la fuente de
A3 en azul, sino ponerla en rojo.
Ahora ingresemos los siguientes datos en nuestra hoja de Excel y luego ejecutemos nuestra macro:
Visita: www.systematic.edu.pe 26
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 27
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Estructuras If anidadas.
No tiene que sorprenderle, dentro de una estructura if puede ir otra, y dentro de esta otra, y otra... Vea el ejemplo
siguiente.
Ejemplo 11.
Comparar los valores de las casillas A1 y A2 de la hoja activa. Si son iguales, escribir en A3 "Los valores de A1 y A2 son
iguales", si el valor de A1 es mayor que A2, escribir "A1 mayor que A2", sino, escribir "A2 mayor que A1.
Nos muestra que los valores son iguales. T prueba cambiando los valores y vers que tambin cambiar el
resultado.
Observe que la segunda estructura If..Else..End If queda dentro del Else de la primera estructura. Esta es una regla
general, cuando pone un End If, este cierra siempre el ltimo If ( o Else) abierto.
Visita: www.systematic.edu.pe 28
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 12.
Entrar el Nombre, la cantidad y el precio de un producto desde el teclado y guardarlos respectivamente en A1, A2 y
A3. Calcular el total y guardarlo en A4. Si el total es superior a 10000 y el nombre del producto es "Patatas", pedir un
descuento, calcularl el total descuento y guardarlo en A5, luego restar el descuento del total y guardarlo en A6.
Observe que para que se ejecute el bloque de instrucciones entre If.. End If deben cumplirse las dos condiciones que
se evalan, si falla cualquiera de las dos (o las dos a la vez), no se ejecuta dicho bloque.
Visita: www.systematic.edu.pe 29
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 13.
Entrar el Nombre, la cantidad y e l precio de un producto desde el teclado y guardarlos respectivamente en A1, A2 y
A3. Calcular el total y guardarlo en A4. Si el total es superior a 10.000 o el nombre del producto el "Patatas", pedir un
descuento, calcularlo el total descuento y guardarlo en A5, luego restar el descuento del total y guardarlo en A6.
Observe que para que se ejecute el bloque de instrucciones entre If.. End If slo es necesario que se cumpla alguna
de las dos condiciones que se evalan (o las dos a la vez). Slo cuando no se cumple ninguna de las dos no se
ejecutan las instrucciones del bloque.
Visita: www.systematic.edu.pe 30
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 14.
Entrar una cantidad que representa el precio de algo por el teclado con la instruccin InputBox y guardarlo en la
celda A1 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A1) es superior a 1000, pedir
descuento con otro InputBox y guardarlo en la casilla A2 de la hoja activa. Calcular en A3, el precio de A1 menos el
descuento de A2.
Tablas de la verdad.
Vea las tablas siguientes para ver los resultados de evaluar dos condiciones con el operador And y con el operador
Or.
AND OR
Condicin 1 Condicin 2 Resultado Condicin 1 Condicin 2 Resultado
Falsa Falsa Falso Falsa Falsa Falso
Falsa Cierta Falso Falsa Cierta Cierto
Cierta Falsa Falso Cierta Falsa Cierto
Cierta Cierta Cierta Cierta Cierta Cierto
Observe que con el operador AND deben de cumplirse todas las condiciones (dos o veinticinco) para que el resultado
sea cierto. Con el operador OR slo es necesario que se cumpla una (de las dos o de las veinticinco) para que el
resultado sea cierto.
Visita: www.systematic.edu.pe 31
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 15.
Macro que suma, resta, multiplica o divide los valores de las casillas A1 y A2 dependiendo de si B1 contiene el signo
+, -, x, :. El resultado lo deja en A3. Si en B1 no hay ninguno de los signos anteriores en A3 debe dejarse un 0.
Debemos tener como resultado 169 ya que como operador tenemos x que indica la multiplicacin.
Visita: www.systematic.edu.pe 32
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Observe que en el ejemplo anterior todas las instrucciones if evalan la misma variable. El programa funciona
correctamente pero para estos casos es mejor utilizar la instruccin Select Case, el motivo principal es por legibilidad
y elegancia. Select Case tiene la sintaxis siguiente:
Ejemplo 16.
Al ejecutar la macro teniendo los datos anteriores obtendremos los mismos resultados.
Vea el ejemplo siguiente donde cada sentencia Case evala un rango de valores.
Visita: www.systematic.edu.pe 33
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 17.
Programa que pide tres notas de un alumno mediante la funcin InputBox. Las notas van a parar respectivamente a
las casillas A1, A2 y A3 de la hoja activa. El programa calcula el promedio y lo deja en A4. Si el promedio est entre 0
y 8 deja en A5 el mensaje "Muy deficiente", si el promedio es 9 deja en A5 el mensaje "Deficiente", si el promedio es
10 deja "Insuficiente", si es 11 "Suficiente", si es 14 "Bien", si est entre 17 y 18 deja "Notable", si es mayor que 18
deja "Sobresaliente".
Visita: www.systematic.edu.pe 34
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Imagine que en alguna de las casillas que se deben operar no hubiera ningn valor o bien datos alfanumricos. Al
ejecutar la macro se producir un error. Aunque con Visual Basic se puede controlar el flujo del programa cuando se
produce un error imprevisto, para solucionar este problema utilizaremos una funcin de comprobacin que nos diga
si en las casillas A1 y A2 hay valores adecuados (numricos) para proseguir con la ejecucin de la macro, en caso
contrario se mostrar un error y no se ejecutar ninguna de las operaciones.
La funcin que utilizaremos es IsNumeric(expresin), esta funcin devuelve un valor True si la expresin que se
evala es un valor numrico, en caso contrario devuelve False. Vea como quedara el programa. Tambin se utiliza la
funcin IsEmpty para comprobar si en B1 hay algo, IsEmpty(Expresin) evala si expresin est vaca, devuelve True
si es as y False en caso contrario.
Visita: www.systematic.edu.pe 35
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 18.
En lugar de los tres If de comprobacin se hubiera podido utilizar el operador OR de la manera siguiente:
If not IsNumeric(ActiveSheet.Range("A1")) Or not IsNumeric(ActiveSheet.Range("A2")) _
Or IsEmpty(ActiveSheet.Range("B1")) Then
MsgBox Prompt:="Debe entrar nmeros en A1 y A2 y un signo (+,-,x, : ) en B1,
Title:="ERROR"
Else
' Instrucciones de las operaciones
.......
End if
Visita: www.systematic.edu.pe 36
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
IsNumric(Expresin). Comprueba si expresin tiene un valor que se puede interpretar como numrico.
IsDate(Expresin). Comprueba si expresin tiene un valor que se puede interpretar como tipo fecha.
IsEmpty(Expresin). Comprueba que expresin tenga algn valor, que se haya inicializado.
IsError(Expresin). Comprueba si expresin devuelve algn valor de error.
IsArray(Expresin). Comprueba si expresin (una variable) es un array o no.
IsObject(Expresin). Comprueba si expresin (una variable) representa una variable tipo objeto.
IsNull(Expresin). Comprueba si expresin contiene un valor nulo debido a datos no vlidos.
Sintxis de MsgBox.
Visita: www.systematic.edu.pe 37
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones mostrados en el cuadro de dilogo; el
segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botn
predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman
nmeros para obtener el valor final del argumento buttons, se utiliza solamente un nmero de cada grupo.
Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede
utilizarse en cualquier lugar del cdigo en vez de sus valores reales.
Los valores que puede devolver la funcin msgbox en funcin del botn que pulse el usuario se muestran en la tabla
siguiente.
Ejemplos de MsgBox.
Visita: www.systematic.edu.pe 38
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Algunas veces puede que le interese simplemente desplegar un cuadro MsgBox para mostrar un mensaje al usuario
sin que se requiera recoger ningn valor. En este caso puede optar por la forma siguiente:
MsgBox Prompt:="Hola usuaria, Ha acabado el proceso", Buttons:=VbOkOnLy _
Title:="Mensaje"
Lo que no puede hacer porque Visual Basic dara error es poner la primera forma sin igualarla a ninguna variable. Por
ejemplo, la expresin siguiente es incorrecta:
En este caso, aunque X reciba un valor, luego no se utiliza para nada, es decir simplemente se pone para que Visual
Basic no d error.
Otra forma tambin sera agregar el cuadro de mensaje con la siguiente expresin:
MsgBox "Hola Usuario, Ha acabado el Proceso", vbOKOnly, "Mensaje"
With Objeto
Instrucciones
End With
Repetiremos el ejemplo 13 utilizando esta sentencia. Observe como con With se hace referencia al objeto
ActiveSheet.
Visita: www.systematic.edu.pe 39
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 19.
Entrar el Nombre, la cantidad y el precio de un producto desde el teclado y guardarlos respectivamente en A1, A2 y
A3. Calcular el total y guardarlo en A4. Si el total es superior a 10000 o el nombre del producto es "Patatas", pedir un
descuento, calcular el total descuento y guardarlo en A5, luego restar el descuento del total y guardarlo en A6.
Visita: www.systematic.edu.pe 40
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 20.
Supongamos que tenemos que hacer un programa para entrar las notas de una clase de 5 alumnos que se guardarn
respectivamente en las celdas de A1 a A5 de la hoja activa. Despus obtener el promedio que se guardar en A6. Con
las estructuras vistas hasta ahora, podramos hacer:
Para evitar esta tipo de repeticiones de cdigo, los lenguajes de programacin incorporan instrucciones que
permiten la repeticin de bloques de cdigo.
Visita: www.systematic.edu.pe 41
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Var es una variable que la primera vez que se entra en el bucle se iguala a Valor_Inicial, las sentencias del bucle se
ejecutan hasta que Var llega al Valor_Final, cada vez que se ejecutan el bloque de instrucciones Var se incrementa
segn el valor de Incremento.
En Visual Basic para Excel la estructura Para se implementa con la instruccin For ... Next.
For Varible = Valor_Inicial To Valor_Final Step Incremento
Sentencia 1
Sentencia 2
.
.
Sentencia N
Next Variable
Ejemplo 21.
Entrar 10 valores utilizando la funcin InputBox, sumarlos y guardar el resultado en la casilla A1 de la hoja activa.
Visita: www.systematic.edu.pe 42
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Propiedad Cells.
Ya conoce esta propiedad, sirve para referenciar una celda o un rango de celdas segn coordenadas de fila y
columna.
Ejemplo 22
Llenar el rango de las casillas A1..A5 con valores pares consecutivos empezando por el 2.
Ejemplo 23.
Llenar un rango de filas, empezando por una celda, que se debe especificar desde teclado, con una serie de 10
valores correlativos (comenzando por el 1).
Visita: www.systematic.edu.pe 43
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 24.
El mismo con el que introducamos el tema (ejemplo 20), pero utilizando el for y propiedad Cells
Propiedad Offset.
Esta propiedad es tambin muy til a la hora de recorrer rango. Offset, que significa desplazamiento, es una
propiedad del objeto Range y se utiliza para referenciar una casilla situada a n Filas y n Columnas de una casilla dada.
Vea los ejemplos siguientes:
ActiveSheet.Range("A1").Offset(2, 2).Value = "Hola" ' Casilla C3 = Hola, 2 filas y 2 columnas desde A1.
ActiveCell.Offset(5,1).Value = "Hola" ' 5 Filas por debajo de la casilla Activa = Hola
ActiveCell.Offset(2,2).Activate 'Activar la casilla que est 2 filas y 2 columnas de la activa
Ejemplo 25.
El mismo con el que introducamos el tema (ejemplo 20), pero utilizando el For y propiedad Offset
Visita: www.systematic.edu.pe 44
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 26.
El mismo con el que introducamos el tema (ejemplo 20), pero utilizando el For y propiedad Offset.
Observe que ahora vamos cambiando de celda activa.
Observe la diferencia entre los ejemplos 25 y 26, ambos utilizan la propiedad Offset de diferente forma, en el
ejemplo 25 la casilla activa siempre es la misma A1, Offset se utiliza para referenciar una casilla a partir de esta. En el
ejemplo 26 se va cambiando de casilla activa cada vez de forma que, cuando termina la ejecucin del programa la
casilla activa es A6.
Cuando utilizar cada mtodo, como casi siempre depende de lo que se pretenda hacer. Aqu es bastante claro, si le
interesa que no cambie la casilla utilice Offset como en el ejemplo 25, en caso que interese que vaya cambiando,
haga como en el Ejemplo 6. Por supuesto hay muchas variantes sobre el estilo de recorrer Celdas, tanto con Cells
como con Offset, solo tiene que ir probando y, como casi siempre, el que ms le guste.
Visita: www.systematic.edu.pe 45
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
En Visual Basic
** Los ejemplos que veremos a continuacin sobre la instruccin Do While..Loop se harn sobre una base de datos.
Una base de datos en Excel es simplemente un rango de celdas en que cada fila representa un registro y cada
columna un campo de registro, la primera fila es la que da nombre a los campos. Para nuestra base de datos
utilizaremos los campos siguientes, Nombre, Ciudad, Edad, Fecha. Ponga estos ttulos en el rango A1:D1 de la Hoja1
(En A1 ponga Nombre, en B1 ponga Ciudad, en C1 ponga Edad y en D1 Fecha), observe que los datos se empezarn a
entrar a partir de A2.
Visita: www.systematic.edu.pe 46
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 27.
Programa para entrar registros en la base de datos. Cada campo se entra con InputBox. El programa va pidiendo
datos mientras se entre un valor en el InputBox correspondiente al nombre, es decir cuando al preguntar el nombre
no se entre ningn valor, terminar la ejecucin del bloque encerrado entre Do While...Loop. Observe la utilizacin
de la propiedad Offset para colocar los datos en las celdas correspondientes.
Ejemplo 28.
Preste especial atencin a este ejemplo ya que seguro que el cdigo que viene a continuacin lo utilizar en muchas
ocasiones. Antes que nada observe el ejemplo anterior, fjese en que siempre empezamos a llenar el rango de la hoja
a partir de la celda A2, esto tiene una nefasta consecuencia, la segunda vez que ejecute la macro machacar los
datos de A2:D2 y si continua ejecutando machacar los datos de los rangos siguientes. Una solucin sera observar
cual es la casilla vaca siguiente y cambiar en la instruccin ActiveSheet.Range("A2").Activate , la referencia A2 por
la que corresponde a la primera casilla vaca de la columna A. El cdigo que le mostramos a continuacin har esto
por nosotros, es decir recorrer una fila de celdas a partir de A1 hasta encontrar una vaca y dejar a esta como celda
activa para que la entrada de datos comience a partir de ella.
Visita: www.systematic.edu.pe 47
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Cuando se tienen que entrar desde el teclado conjuntos de valores, algunos programadores y usuarios prefieren la
frmula de que el programa pregunte si se desean entrar ms datos, la tpica pregunta Desea Introducir ms
datos?, si el usuario contesta S, el programa vuelve a ejecutar las instrucciones correspondientes a la entrada de
datos, si contesta que no se finaliza el proceso, observe como quedara nuestro bucle de entrada de datos con este
sistema.
Mas_datos = vbYes
Do While Mas_Datos = vbYes
Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")
Ciudad = InputBox("Entre la Ciudad : ", "Ciudad")
Edad = Val(InputBox("Entre la Edad : ", "Edad"))
Fecha=Cdate(InputBox("Entra la Fecha : ", "Fecha"))
With ActiveCell
.Value = Nombre
.Offset(0,1).Value = Ciudad
.Offset(0,2).Value = Edad
.Offset(0,3).value = fecha
End With
ActiveCell.Offset(1,0).Activate
Preguntar al usuario si desea entrar otro registro.
Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos")
Visita: www.systematic.edu.pe 48
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Loop
** Observe que es necesaria la lnea anterior al bucle Mas_datos = vbYes, para que cuando se evale la condicin
por vez primera esta se cumpla y se ejecuten las sentencias de dentro del bucle, Mas_datos es una variable de tipo
Integer. Vea la seccin siguiente donde se estudia una variante de la estructura Do While que es ms adecuada para
este tipo de situaciones.
Observe que en este caso no es necesario la lnea Mas_Datos = vbYes antes de Do para forzar la entrada en el bucle
ya que la condicin va al final.
Visita: www.systematic.edu.pe 49
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
La filosofa de utilizar procedimientos es la antigua frmula del "divide y vencers", es decir, con los procedimientos
podremos tratar cada problema o tarea de forma ms o menos aislada de forma que construiremos el programa
paso a paso evitando tener que resolver o controlar mltiples cosas a la vez.
Cada tarea la realizar un procedimiento, si esta tarea implica la ejecucin de otras tareas, cada una se
implementar y solucionar en su correspondiente procedimiento de manera que cada uno haga una cosa concreta.
As, los diferentes pasos que se deben ejecutar para que un programa haga algo, quedaran bien definidos cada uno
en su correspondiente procedimiento, si el programa falla, fallar a partir de un procedimiento y de esta forma
podremos localizar el error ms rpidamente.
Los procedimientos son tambin un eficaz mecanismo para evitar la repeticin de cdigo en un mismo programa e
incluso en diferentes programas. Suponemos que habr intuido que hay muchas tareas que se repiten en casi todos
los programas, veremos como los procedimientos que ejecutan estas tareas se pueden incluir en un mdulo de
forma que este sea exportable a otros programas y de esta manera ganar tiempo que, como dice el tpico, es
precioso.
Definir un procedimiento.
Llamar a un procedimiento.
Para llamar un procedimiento desde otro se utiliza la instruccin Call Nombre_Procedimiento.
Sub P_Uno
Sentencias.
.
Call P_Dos
.
Sentencias
.
End Sub
Las secuencias del procedimiento P_Uno se ejecutan hasta llegar a la lnea Call P_Dos, entonces se salta al
procedimiento P_Dos, se ejecutan todas las sentencias de este procedimiento y el programa continua ejecutndose
en el procedimiento P_Uno a partir de la sentencia que sigue a Call P_Dos.
Ejemplo 32.
Visita: www.systematic.edu.pe 50
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ejemplo 29
Es el mismo programa que el visto en el ejemplo 28 pero el cdigo que salta casilla hasta que se encuentra una vaca
se implementa en un procedimiento llamado, Saltar_Celdas_Llenas. Observe que para entrar valores se ha sustituido
Do While..Loop por Do.. Loop While.
Visita: www.systematic.edu.pe 51
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Este grupo de Controles cuenta con tres opciones muy importantes como:
3. Ver cdigo: permite agregar cdigo a cada control. Para iniciar cree las hojas: Men, Ventas y Compras.
Visita: www.systematic.edu.pe 52
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Seleccione la hoja Men para all crear dos botones. Para trabajar con estos controles es necesario Activar el
modo de diseo y dar clic en Insertar, seleccione el Botn de comando.
Esta vez haremos un botn que cuando se presione pase a otra hoja del Excel. Por ejemplo se puede hacer un
men con varios botones que al presionarlos pasen a las distintas opciones. Comencemos... En la hoja Men
cree dos botones de comando. Por Ejemplo:
Seleccione el primer botn y de un clic derecho en la opcin y muestre las propiedades. Cambie la Propiedad
Caption por: Ventas En Name: btnventas
Seleccione el segundo botn y muestre las propiedades Cambie la Propiedad Caption por: Compras
En Name: btncompras
Si realiz bien estos pasos Ud. Debera ver lo siguiente:
Visita: www.systematic.edu.pe 53
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Si desea colocar iconos en los botones seleccione la propiedad Picture e inserte una imagen de extensin .ico.
Para que visualice el texto cambie la posicin PicturePosition a: 5 Seleccione el primer botn y haga clic en ver
cdigo
En esta parte se abrir el Editor de Visual Basic y debe escribir lo siguiente: Hoja2.Activate Cierre el editor de Visual
Basic (nota: cada vez que cierre el editor de Visual Basic, hgalo del cuadro de cerrar X que est ms arriba, porque
puede confundirse y cerrar la ventana de editar cdigo, no se preocupe que no est cerrando Excel.)
Escriba: Hoja3.activate
Salga del modo de diseo y navegue con los botones que program. Ms adelante utilizaremos estos botones para
cargar formularios desde VBA en Excel.
Ahora aprenderemos a dominar lo mximo de Excel que es crear formularios y programarlos, bueno un formulario
es una ventana que se programa por medio de controles y estos controles responden a sucesos que nosotros
programamos. Todo esto se encuentra dentro de Visual Basic.
Visita: www.systematic.edu.pe 54
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Esto inserta el Formulario que programaremos con controles. En el Explorador de Proyecto se observara que se
inserto el UserForm.
Tambin cuando de clic en el Formulario USERFORM1 se debe de activar el Cuadro de Herramientas, si no se activa
de clic en el Men Ver y elija la opcin Cuadro de Herramientas.
4. Elija del Cuadro de Herramientas el Control Etiqueta el que tiene la A y Arrastre dibujando en el Formulario
USERFORM1 la etiqueta. Quedara el nombre Label1, despus de un clic en la etiqueta dibujada y podr modificar el
nombre de adentro y pondremos ah Nombre.
5. Elija del Cuadro de Herramientas el control Cuadro de Texto el que tiene ab y arrastre dibujando en el formulario
USERFORM1 el cuadro de texto a un lado de la etiqueta que dice Nombre. El cuadro de texto debe de estar vaco y
su nombre ser Textbox1, el nombre solo aparecer en el control.
6. Haga los dos pasos anteriores igualmente poniendo Direccin en la Label2 y Telfono en la Label3 y tambin
dibjeles su Textbox. Esto quedara as despus de haberlo hecho.
Visita: www.systematic.edu.pe 55
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
7. Elija del Cuadro de Herramientas el control Botn de Comando y Arrastre dibujando en el Formulario
USERFORM1 el Botn, despus de un clic en el nombre del Botn dibujado y podr modificar el nombre y
pondremos ah Insertar. Si por error da doble clic en la Botn y lo manda a la pantalla de programacin de la
etiqueta, solo de doble clic en UserForm1 que se encuentra en el Explorador de Proyecto.
8. Ahora de doble clic sobre el control Textbox1 para programarlo y despus inserte el siguiente cdigo:
Nota.-Lo que est en azul lo genera Excel automticamente, usted solo escribir lo que est en Negrita.
Para volver al Formulario y programar el siguiente Textbox de doble clic en UserForm1 que se encuentra en el
Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto.
9. Ahora de doble clic sobre el control Textbox2 para programarlo y despus inserte el siguiente cdigo:
10. Ahora de doble clic sobre el control Textbox3 para programarlo y despus inserte el siguiente cdigo:
Private Sub TextBox3_Change()
Range("C9").Select
ActiveCell.FormulaR1C1 = TextBox3
End Sub
Visita: www.systematic.edu.pe 56
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
11. Ahora de doble clic sobre el control Botn de Comando para programarlo y despus inserte el siguiente cdigo:
Private Sub CommandButton1_Click()
inserta un rengln
Selection.EntireRow.Insert
Empty Limpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
Textbox1.SetFocus Enva el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus
End Sub
12. Ahora presione el botn Ejecutar User/Form que se encuentra en la barra de herramientas o simplemente la
tecla de funcin F5.
Se activar el Userform1 y todo lo que escriba en los Textbox se escribir en Excel y cuando presione el botn
Insertar, se insertar un rengln y se vaciarn los Textbox y despus se mostrar el cursor en el Textbox1.
Visita: www.systematic.edu.pe 57
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Antes de Ingresar al Editor de Visual Basic para Aplicaciones crea en una hoja a la que le pondrs por nombre
Clientes y luego ingresa los siguientes datos:
1 11
10
2
13
3
12
4
1
15
5
14
8
9
6 7
Visita: www.systematic.edu.pe 58
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Aqu declaramos una variable pblica (general) llamada con de tipo entero, la cual almacenara a un contador que
usaremos durante la ejecucin del formulario.
Luego da doble click en un sector del formulario, ingresars al rea de cdificacin en el evento Activate donde
codificars lo siguiente:
Private Sub UserForm_Activate()
Sheets("Clientes").Select
Dim x As Integer
numreg
txtcodigoc.Text = Range("Clientes!B2").Formula
txtcliente.Text = Range("Clientes!C2").Formula
txtdireccionc.Text = Range("Clientes!D2").Formula
txtruc.Text = Range("Clientes!E2").Formula
txtemail.Text = Range("Clientes!F2").Formula
Range("B2").Select
End Sub
Nota.- Aqu creamos el procedimiento numreg por lo que debers codificarlo en un rea en blanco que no
pertenezca al rea de codificacin de cualquier otro objeto. Como puedes Apreciar este procedimiento es
llamadoen el evento Activate del UserForm por lo que antes de ejecutar el formulario debes haber codificado el
formulario y el procedimiento.
Visita: www.systematic.edu.pe 59
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora si ejecutas el formulario y damos click sobre los botones que codificamos stos empezarn a navegar entre los
registros que tenemos almacenados.
Visita: www.systematic.edu.pe 60
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Luego creamos el procedimiento activar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
txtcodigoc.Enabled = True
txtcliente.Enabled = True
txtdireccionc.Enabled = True
txtruc.Enabled = True
txtemail.Enabled = True
cmdprimero.Enabled = False
cmdsiguiente.Enabled = False
cmdanterior.Enabled = False
cmdultimo.Enabled = False
cmdnuevo.Enabled = False
cmdguardar.Enabled = True
cmdcancelar.Enabled = True
cmdmodificar.Enabled = False
cmdeliminar.Enabled = False
cmdcerrar.Enabled = False
txtcodigoc.SetFocus
End Sub
ActiveCell.Value = txtemail.Text
desactivar
Range(almacen).Select
ActiveWorkbook.Save
numreg
cmdanterior_Click
End Sub
Luego creamos el procedimiento desactivar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
cmdprimero.Enabled = True
cmdsiguiente.Enabled = True
cmdanterior.Enabled = True
cmdultimo.Enabled = True
cmdnuevo.Enabled = True
cmdguardar.Enabled = False
cmdcancelar.Enabled = False
cmdmodificar.Enabled = True
cmdeliminar.Enabled = True
cmdcerrar.Enabled = True
End Sub
Visita: www.systematic.edu.pe 62
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Luego creamos el procedimiento desactivar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
Visita: www.systematic.edu.pe 63
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora si ejecutamos nuestro formulario realizaremos los procesos de mantenimiento de nuestra hoja de
Clientes.
Visita: www.systematic.edu.pe 64
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Antes de Ingresar al Editor de Visual Basic para Aplicaciones crea en una hoja a la que le pondrs por nombre
Clientes y luego ingresa los siguientes datos:
1
10 11
2
3
12 13
4
1
5 14
15
6 7 8 9
Visita: www.systematic.edu.pe 65
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Aqu declaramos una variable pblica (general) llamada con de tipo entero, la cual almacenara a un contador que
usaremos durante la ejecucin del formulario.
Luego da doble click en un sector del formulario, ingresars al rea de cdificacin en el evento Activate donde
codificars lo siguiente:
Visita: www.systematic.edu.pe 66
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora si ejecutas el formulario y damos click sobre los botones que codificamos stos empezarn a navegar entre los
registros que tenemos almacenados.
Visita: www.systematic.edu.pe 67
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Luego creamos el procedimiento activar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
cmdprimero.Enabled = False
cmdsiguiente.Enabled = False
cmdanterior.Enabled = False
cmdultimo.Enabled = False
cmdnuevo.Enabled = False
cmdguardar.Enabled = True
cmdcancelar.Enabled = True
cmdmodificar.Enabled = False
cmdeliminar.Enabled = False
cmdcerrar.Enabled = False
txtcodigop.SetFocus
End Sub
ActiveWorkbook.Save
numreg
cmdanterior_Click
End Sub
Luego creamos el procedimiento desactivar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
cmdprimero.Enabled = True
cmdsiguiente.Enabled = True
cmdanterior.Enabled = True
cmdultimo.Enabled = True
cmdnuevo.Enabled = True
cmdguardar.Enabled = False
cmdcancelar.Enabled = False
cmdmodificar.Enabled = True
cmdeliminar.Enabled = True
cmdcerrar.Enabled = True
End Sub
Visita: www.systematic.edu.pe 69
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Luego creamos el procedimiento llenardatos. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
Visita: www.systematic.edu.pe 70
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora si ejecutamos nuestro formulario realizaremos los procesos de mantenimiento de nuestra hoja de
Proveedores.
Hoja Vendedores:
Hoja Productos:
Visita: www.systematic.edu.pe 71
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
1
4
2
5 7
3 6
15
8 9 12
10
11
13
14
Visita: www.systematic.edu.pe 72
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
15.- aqu se insertar un listview, objeto que no se encuentra en el cuadro de herramientas por defecto, as es que
lo tenemos que insertar de la siguiente manera:
Click derecho sobre un lugar en blanco del cuadro de herramientas y click sobre controles adicionales:
Te mostrar una ventana, busca el objeto como se muestra en la imagen de abajo y dale click para seleccionarlo
luego da click en aceptar.
Visita: www.systematic.edu.pe 73
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Nota.- para el buen funcionamiento debes personalizar el objeto insertado dando click en la propiedad
personalizado del objeto list view y hacerlo de la siguiente manera:
Luego en la ficha Column Headers debers insertar las columnas que se usarn en el diseo como son:
Visita: www.systematic.edu.pe 74
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
1 2
6
3 4 5
Nota.- ste formulario ser llamado al dar doble click en el objeto listview1 del formulario anterior.
Visita: www.systematic.edu.pe 75
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Luego da doble click al primer formulario creado y en el evento actvate codifica lo siguiente:
Visita: www.systematic.edu.pe 76
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 77
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 78
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Luego da doble click al listview y codifcalo de tal manera que al dar doble click se muestre el segundo formulario
creado.
Visita: www.systematic.edu.pe 79
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 80
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
De sta manera queda programado nuestro formulario que controla el proceso de Facturacin.
Visita: www.systematic.edu.pe 81
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora crearemos un formulario de acceso, el cual va a permitir el ingreso solo a los usuarios Registrados. Para
eso realiza lo siguiente:
1 2
5 6
Visita: www.systematic.edu.pe 82
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Nota: En la instruccin Userform9.show deber ir el nombre del formulario el cual contiene a los botones que llaman
a los dems formularios.
Visita: www.systematic.edu.pe 83
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Visita: www.systematic.edu.pe 84
Especialista en Excel Empresarial
Mdulo III: Excel con Visual Basic para Aplicaciones
Ahora tenemos que hacer que al cargar el libro se muestre automticamente el formulario de acceso, para
eso debemos realizar lo siguiente:
De esa manera nuestro sistema queda listo para realizar los procesos creados en cada formulario.
Visita: www.systematic.edu.pe 85