Vous êtes sur la page 1sur 85

Especialista en Excel Empresarial

Mdulo III: Excel con Visual Basic para Aplicaciones

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).
Las instrucciones pueden ser ejecutables o no ejecutables:
Ejecutables, indicarn al Programa que Hacer (Ej. Sumar, Restar, Finalizar, etc.)
No ejecutables, sirven para declarar variables o incluir comentarios, para ste ltimo caso se emplea la
palabra reservada Rem o el carcter (Apstrofe Simple). Los comentarios se muestran en color verde.
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
Los Nombres de las variables deben seguir las siguientes reglas:
El Primer carcter ser siempre una letra.
Los Nombres de las variables pueden estar formados por letras y por dgitos y algunos otros caracteres
especiales, como por ejemplo el _ (guin bajo).
No se permiten el uso de espacios en blanco.
Nota.- Es conveniente declarar todas las variables empleadas en un programa.
Para declarar variables tome en cuenta lo siguiente:
Se declara una variable por lnea
Para declarar muchas variables en una sola lnea, debe indicar para cada una de ellas el tipo de dato
correspondiente y separarlas por comas ,
1.4 Tipos de datos
El Visual Basic permite el manejo de diversos tipos de datos, siendo estos: numricos, textos, lgicos,etc.

Visita: www.systematic.edu.pe

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
Tipos de datos No Numricos: Estos pueden ser:
Cadena de caracteres o texto
: String
Lgicos
: Boolean
Fecha
: Date
1.5 Operadores en Visual Basic
Los operadores en Visual Basic son usados para ejecutar diferentes instrucciones, condiciones y operaciones
diversas.
Los operadores se pueden agrupar en: Aritmticos, condicionales y Operadores de Relacin.
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)
Suma y Diferencia

^
*
/
\
MOD
+ -

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
Igualdad
Desigualdad
Menor
Mayor
Mayor o igual
Menor o igual

Smbolo

Expresin

=
<>
<
>
>=
<=

A=B
A<>B
A<B
A>B
A>=B
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
Conjuncin
Disyuncin

Visita: www.systematic.edu.pe

NOT
AND
OR

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).
1.6 Instruccin para Asignar Valores
El smbolo utilizado para asignar valores o expresiones es el caracter = (igual).

El elemento ubicado a la izquierda recibe el valor ubicado al lado derecho del signo igual.
En este caso la variable A, recibe el valor 5.

1.7 Instruccin para Actualizar Valores


Se realiza colocando la variable a ambos lados del carcter = .

El nuevo valor de B es el que tena incrementado en 2.

1.8 Funciones Matemticas Estndar


A continuacin se presentan algunas de las funciones disponibles en el Visual Basic y que pueden ser
empleadas como parte de las instrucciones de un programa.
Funcin
ATN(x)
SIN(x)
COS(x)
TAN(x)
ABS(x)
FIX(x) INT(x)
ROUND(x, n)
LOG(x)
SGN(x)
SQR(x)
EXP(x)
RND

Descripcin
Arco Tangente de x. (Angulo x en radianes)
Seno de x. (Angulo x en radianes)
Coseno de x. (Angulo x en radianes)
Tangente de x. (Angulo x en radianes)
Valor absoluto de x.
Parte entera de x.
Redondea x a n decimales
Logaritmo natural de x, con x>0.
Devuelve el signo de x.
Raz cuadrada de x, con x>0
Exponencial de x.
Nmero aleatorio entre [0, 1[

1.9 Funciones de Cadena


Asc(Cadena)
Devuelve el cdigo de carcter correspondiente a la primera letra de una cadena de caracteres.
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.
Left(cade na, longitud).
Devuelve un nmero especificado de caracteres del lado izquierdo de una cadena.

Visita: www.systematic.edu.pe

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).
Mid (cadena, inicio [, longitud]).
Devuelve un nmero especificado de caracteres de una cadena.
Rigth (cadena, longitud).
Devuelve un nmero especificado de caracteres del lado derecho de una cadena.
Space (nmero).
Devuelve una cadena que consiste en un nmero especificado de espacios.
Str (nmero).
Devuelve una representacin de cadena de un nmero.
String (nmero, carcter).
Devuelve una cadena de caracteres que se repite de la longitud especificada.
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.
1.10 Funciones de Fecha

Date.
Devuelve la fecha actual del sistema.
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

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.1 Qu es una macro?
Una macro son un conjunto de instrucciones que sirven para automatizar procesos. Refirindonos a excel,
supongamos que realizamos frecuentemente la accin de seleccionar un rango para aplicarle negrita, cambio de
fuente y centrado. En lugar de hacer estas acciones manualmente, se puede elaborar una macro e invocarla para
que ejecute los tres procesos automticamente.
2.2 Objetos, propiedades y mtodos.
A la hora de trabajar con macros en excel, deben tenerse claros ciertos conceptos de lo que se llama programacin
orientada a objetos (OOP). No nos extenderemos demasiado sobre la OOP, pero si definiremos a continuacin los
conceptos de Objeto, Propiedades y Mtodos.
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

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).
2.7 Objetos de Objetos.
Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el coche, una de las propiedades del
coche es el motor, y el motor es un objeto con propiedades como cubicaje, caballos, nmero de vlvulas, etc. y
mtodos, como aumentar_revoluciones, coger_combustible, mover_pistones, etc.
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.
2.8 Programacin Orientada a Objetos o Programacin Basada en Objetos.
Hay una sutil diferencia entre las definiciones del ttulo. Programacin orientada a Objetos, significa que el
programador trabaja con objetos fabricados por l mismo, es decir, el programador es quien implementa las clases
para luego crear objetos a partir de ellas. Lo que haremos nosotros, por el momento, ser utilizar objetos ya
definidos por la aplicacin Excel (WorkSheets, Range,...) sin implementar ninguno de nuevo, por lo que en nuestro
caso es ms correcto hablar de programacin basada en objetos. Observe que esta es una de las grandes ventajas de
la OOP, utilizar objetos definidos por alguien sin tener que conocer nada sobre su implementacin, slo debemos
conocer sus propiedades y mtodos y utilizarlos de forma correcta.
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

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

2.9 Editor de Visual Basic


El editor de visual basic es la aplicacin que utilizaremos para construir las macros que interactuaran junto con los
libros de trabajo. A continuacin prepararemos un archivo en el que escribiremos las primeras instrucciones en
Visual basic.
2.9.1 Preparar un archivo nuevo:
Para entrar en el editor de Visual Basic, ejecute los pasos siguientes:
1. Click en la Ficha Programador

2. Click en la Opcin Visual Basic del grupo de Opciones Cdigo.

Al realizar este procedimiento nos mostrar la siguiente Ventana:

Visita: www.systematic.edu.pe

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Maximice la ventana para trabajar ms cmodamente.


2.9.2 Descripcin de la Ventana del Editor de Visual Basic

1
2

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.

Barra de Herramientas Estndar.- Es la que contiene conos a modo de acceso directo de los comandos de la
barra de Mens.

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.

Ventana de Propiedades.- En este sector observaremos y controlaremos las propiedades de los objetos con
los que estamos trabajando en nuestro Proyecto.

5
Visita: www.systematic.edu.pe

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

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

2.9.3 Insertar un nuevo mdulo.


Un mdulo sirve para agrupar procedimientos y funciones. El procedimiento y la funcin son entidades de
programacin que sirven para agrupar instrucciones de cdigo que realizan una accin concreta.
Para insertar un mdulo active opcin del men Insertar/ Mdulo. Se activar una nueva ventana, si aparece
demasiado pequea, maximcela.

Luego de realizar estos pasos se mostrar la siguiente ventana:

Visita: www.systematic.edu.pe

10

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

2.9.4 Insertar un procedimiento.


Ya hemos dicho que un procedimiento es un bloque de instrucciones de cdigo que sirven para llevar a cabo alguna
tarea especfica. Un procedimiento empieza siempre con la instruccin:
Sub Nombre_Procedimiento
Y termina con la instruccin
End Sub.
A continuacin crearemos un procedimiento para poner el texto "Hola" en la casilla A1.
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.
2.9.5 Ejecutar un procedimiento o funcin.
Pruebe ejecutar el primer procedimiento de ejemplo.
1. Site el cursor dentro del procedimiento.
2. Active opcin de la barra de mens Ejecutar/ Ejecutar Sub Userform.

Tambin puede hacer clic sobre el botn o pulsar la tecla F5

2.9.6 Para ejecutar el procedimiento desde la hoja de clculo.


Debe estar en una hoja, no en el editor de Visual Basic
1. Ingrese a la Ficha Programador, dentro de ella click en el Botn Macros

Visita: www.systematic.edu.pe

12

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Al dar click sobre el botn macros nos mostrar la siguiente ventana:

2. Seleccione la macro de la lista y pulse sobre el botn Ejecutar.

Como ves se ejecuto la macro, agregando el Texto Hola en la Celda A1.


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.
2.9.7 La funcin RGB.
Observe que para establecer el color de la propiedad se utiliza la funcin RGB(Red, Green, Blue), los tres argumentos
para esta funcin son valores del 0 a 255 que corresponden a la intensidad de los colores Rojo, Verde y Azul
respectivamente.
Al ejecutar la macro tendremos lo siguiente:

Como ves el texto sale en negrita y de color rojo ya que tiene intensidad solo en el color rojo de la funcin RGB.
Referenciar un rango de celdas.
Slo tiene que cambiar a la forma Casilla_Inicial:Casilla_Final. Por ejemplo aplicar el ltimo ejemplo al rango de
casillas que va de la A1 a la A8, ponga:

Al ejecutar la macro tendremos:

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:
DIM variable AS tipo.
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:
Dim Texto As String
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.
2.9.9 La Funcin InputBox.
Esta funcin muestra una ventana para que el usuario pueda teclear datos. Cuando se pulsa sobre Aceptar, los datos
entrados pasan a la variable a la que se ha igualado la funcin. Vea la lnea siguiente:
Texto = InputBox("Introduzca el texto", "Entrada de datos").
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.
Ttulo : Es el ttulo para la ventana InputBox. Es un parmetro opcional.
Valor por defecto: Es el valor que mostrar por defecto el cuadro donde el usuario entra el valor.
Parmetro opcional.
Posicin Horizontal: La posicin X de la pantalla donde se mostrar el cuadro, concretamente es la
posicin para la parte izquierda. Si se omite el cuadro se presenta horizontalmente centrado a la
pantalla.
Posicin Vertical: La posicin Y de la pantalla donde se mostrar el cuadro, concretamente es la
posicin para la parte superior. Si se omite el cuadro se presenta verticalmente centrado a la
pantalla.
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:

Al ejecutar la macro e Ingresar el Texto tendrs el Mismo resultado.


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:

InputBox 1 donde Ingresamos la celda

InputBox 2 donde ingresamos el Texto

El Resultado que obtendremos ser el siguiente:

Como ves se muestra el


texto(Systematic Aprende
Haciendo) en la celda que
ingresamos(B10).

Visita: www.systematic.edu.pe

17

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

2.9.10 La sentencia Option Explicit.


En visual basic no es necesario declarar las variables, por ejemplo, en el programa anterior se hubiera podido
prescindir de las lneas:
Dim Casilla As String
Dim Texto As String
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.
2.9.11 Conversin de Tipos de datos.
Copie el siguiente Ejemplo. Simplemente se piden dos nmeros, se suman y se guardan en la casilla A1 de la hoja
activa.
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
Visita: www.systematic.edu.pe

InputBox2
18

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Y como resultado Tenemos:

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.

InputBox1

Mensaje de Error Mostrado

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

2.9.12 Objeto Cells(fila, columna).


Sirve, como el objeto range, para referenciar una casilla o rango de casillas, pero en lugar de utilizar la referencia de
la forma A1, B1, X320,... utiliza la fila y la columna que ocupa la casilla dentro de la hoja (u objeto WorkSheet). Por
ejemplo, para poner hola en la casilla A1 de la hoja activa seria:
ActiveSheet.Cells(1,1).Value="Hola"
Utilizar Cells para referenciar un rango.
Esto sera el equivalente a Range("Casilla_Inicial:Casilla_Final"). La forma que se obtiene utilizando Cells es un poco
ms larga, pero se ver que a veces resulta mucho ms funcional que utilizando nicamente range. Para referirnos al
rango A1:B8, pondremos:
Range(Cells(1, 1), Cells(8, 2)).Value = "Hola"
Otra forma interesante de Cells es la siguiente:
Range("A5:B10").Cells(2, 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.
2.9.13 Estructuras condicionales.
Ahora que ya ha experimentado con unos cuantos objetos y propiedades, nos detendremos a estudiar las
estructuras condicionales. Las estructuras condicionales son instrucciones de programacin que permiten controlar
la ejecucin de un fragmento de cdigo en funcin de si se cumple o no una condicin.
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.

Al ejecutar la macro se realizar de la siguiente manera:

Nota que se asignaron los valores 0 a las celdas de A1 hasta A3

Ingresamos el valor de 1000


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:

En la celda A2 se muestra 0 ya que no hubo descuento.


Ahora ejecutemos nuevamente la macro y realizamos lo siguiente:

En el precio ingresamos 2000 y notars que muestra el InputBox

Ahora en el descuento solicitado ingresamos 200


Ahora como resultado obtenemos lo siguiente:

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.

Al ejecutar la Macro observars que obtenemos los mismos resultados.


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.

Al ejecutar la macro tenemos:

Ingresamos 2000 como precio.


Tenemos como resultado:

Donde se muestra como descuento 0.1 (10%) ya q la cantidad es mayor a 1000


Visita: www.systematic.edu.pe

25

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Ahora ejecutemos nuevamente la macro e ingresemos datos de la siguiente manera:

Ingresamos 1000 como precio.


Tenemos como resultado:

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

Y tenemos como resultado:

Donde tenemos 8 como resultado de la resta y de color azul ya que es positivo.


Ahora cambiemos nuestros datos de la siguiente manera y ejecutemos la macro:

Y tenemos como resultado:

Donde tenemos -8 como resultado de la resta y de color rojo ya que es negativo.

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.

Luego ingresamos los siguientes datos a nuestra hoja de Excel:

Luego ejecutamos la macro y tenemos como resultado:

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

2.9.14 Operadores lgicos.


Estos operadores se utilizan cuando se necesitan evaluar dos o ms condiciones para decidir si se ejecutan o no
determinadas acciones.
Operador Lgico And (Y).
Utilizaremos este operador cuando sea preciso que para ejecutar un bloque de instrucciones se cumpla ms de una
condicin. Observe que debern cumplirse todas las condiciones. Vea el ejemplo siguiente
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

Operador Lgico Or (O).


Utilizaremos este operador cuando sea preciso que para ejecutar un bloque de instrucciones se cumpla alguna de
una serie de condiciones. Observe que slo es necesario que se cumpla alguna de las condiciones que se evalan.
Vea el ejemplo siguiente.
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

Operador Lgico Not (no).


Este operador se utiliza para ver si NO se cumple una condicin. El siguiente ejemplo hace lo mismo que el ejemplo 7
pero utilizando el operador Not.
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
Cierta
Cierta

Falsa
Cierta
Falsa
Cierta

Falso
Falso
Falso
Cierta

Falsa
Falsa
Cierta
Cierta

Falsa
Cierta
Falsa
Cierta

Falso
Cierto
Cierto
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

2.9.15 Estructura Select Case.


En ocasiones se dar el caso que en funcin del valor o rango de valores que pueda tener una variable, una casilla,
una expresin, etc. debern llevarse a cabo diferentes acciones o grupos de acciones. Vea el ejemplo siguiente.
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.

Luego ingresa los siguientes datos y ejecuta la macro:

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:
Select Case Expresin
Case valores :
Instrucciones.
Case valores :
Instrucciones.
.
.
Case valores:
Instrucciones.
Case Else
Instrucciones en caso que no sean ninguno de los valores anteriores.
End Select
Vea el ejemplo anterior solucionado con esta estructura.
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

2.9.16 Funciones de comprobacin.


Antes de terminar con el tema de condicionales veremos unas funciones que nos sern tiles a la hora de comprobar
o validar el tipo de los datos entrados desde teclado o simplemente los datos contenidos en una casilla.
Volvamos al ejemplo que codificamos de la manera siguiente:

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

Lista de Funciones de Comprobacin.


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.
2.9.17 La funcin MsgBox.
Esta funcin muestra un mensaje en un cuadro de dilogo hasta que el usuario pulse un botn. La funcin devuelve
un dato tipo Integer en funcin del botn pulsado por el usuario. A la hora de invocar est funcin, se permiten
diferentes tipos de botones.
Sintxis de MsgBox.
MsgBox( Mensaje, Botones, Ttulo, Archivo de ayuda, contexto)
Mensaje: Obligatorio, es el mensaje que se muestra dentro del cuadro de dilogo.
Botones: Opcional. Es un nmero o una suma de nmeros o constantes (vea tabla Valores para
botones e Iconos), que sirve para mostrar determinados botones e iconos dentro del cuadro de
dilogo. Si se omite este argumento asume valor 0 que corresponde a un nico Botn OK.
Ttulo: Opcional. Es el texto que se mostrar en la barra del ttulo del cuadro de dilogo.
Archivo de Ayuda: Opcional. Si ha asignado un texto de ayuda al cuadro de dilogo, aqu debe
especificar el nombre del archivo de ayuda donde est el texto.
Contexto: Opcional. Es el nmero que sirve para identificar el texto al tema de ayuda
correspondiente que estar contenido en el archivo especificado en el parmetro Archivo de Ayuda.
Tabla para botones e iconos del cuadro 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.
Tabla de valores que puede devolver MsgBox.

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:
MsgBox ("Hola usuario, Ha acabado el proceso", VbOkOnly, "Mensaje")
Sera correcto poner:
X= MsgBox ("Hola usuario, Ha acabado el proceso", VbOkOnly, "Mensaje")
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"
2.9.18 La instruccin With.
Suponemos que llegado a este punto le parecer engorroso tener que referirse a los objetos siguiendo toda o casi
toda la jerarqua. Ya hemos indicado que es mejor hacerlo de esta manera porque el programa gana en claridad y
elegancia y, consecuentemente, el programador gana tiempo a la hora de hacer modificaciones o actualizaciones. La
sentencia With le ayudar a tener que escribir menos cdigo sin que por esto el programa pierda en claridad.
Concretamente esta funcin sirve para ejecutar una serie de acciones sobre un mismo Objeto. Su sintaxis es la
siguiente:
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

2.9.19 Estructuras Repetitivas.


Este tipo de estructuras permiten ejecutar ms de una vez un mismo bloque de sentencias.
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:

Observe que este programa repite el siguiente bloque de sentencias, 5 veces:


Nota = Val(InputBox("Entrar la 1 Nota : ", "Entrar Nota"))
ActiveSheet.Range("A1").Value = Nota
Promedio = Promedio + Nota
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

Estructura repetitiva Para (for).


Esta estructura sirve para repetir la ejecucin de una sentencia o bloque de sentencias, un nmero definido de
veces. La estructura es la siguiente:
Para var =Valor_Inicial Hasta Valor_Final Paso Incremento Hacer
Inicio
Sentencia 1
Sentencia 2
.
.
Sentencia N
Fin
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
* Si el incremento es 1, no hace falta poner Step 1.
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

2.9.20 Recorrer casillas de una hoja de clculo.


Una operacin bastante habitual cuando se trabaja con Excel es el recorrido de rangos de casillas para llenarlas con
valores, mirar su contenido, etc. Las estructuras repetitivas son imprescindibles para recorrer grupos de celdas o
rangos. Vea los siguientes ejemplos para ver ejemplos de utilizacin de estructuras repetitivas para recorrer rangos
de casillas, observe la utilizacin de las propiedades Cells y Offset.
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).

Propiedades ROW y COLUMN.


Como habr deducido del ejemplo anterior devuelven la fila y la columna de un objeto range. En el ejemplo anterior
se utilizaban concretamente para obtener la fila y la columna de la casilla activa.
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

Estructura repetitiva Do While..Loop (Hacer Mientras).


La estructura repetitiva for se adapta perfectamente a aquellas situaciones en que se sabe previamente el nmero
de veces que se ha de repetir un proceso, entrar veinte valores, recorrer cincuenta celdas, etc. Pero hay ocasiones o
casos en los que no se sabe previamente el nmero de veces que se debe repetir un proceso. Por ejemplo, suponga
que ha de recorrer un rango de filas en los que no se sabe cuantos valores habr (esto es, cuantas filas llenas habr),
en ocasiones puede que hayan veinte, en ocasiones treinta, en ocasiones ninguna, etc. Para estos casos la estructura
for no es adecuada y deberemos recurrir a la sentencia Do While..Loop en alguna de sus formas. Esta estructura
repetitiva est controlada por una o varias condiciones, la repeticin del bloque de sentencias depender de si se va
cumpliendo la condicin o condiciones.
Hacer Mientras (se cumpla la condicin)
Sentencia1
Sentencia2
.
.
Sentencia N
Fin Hacer Mientras
En Visual Basic
Do While (se cumpla la condicin)
Sentencia1
Sentencia2
.
.
Sentencia N
Loop
** 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.
Estructura Do..Loop While.
El funcionamiento de esta estructura repetitiva es similar a la anterior salvo que la condicin se evala al final, la
inmediata consecuencia de esto es que las instrucciones del cuerpo del bucle se ejecutaran al menos una vez.
Observe que para nuestra estructura de entrada de datos vista en el ltimo apartado de la seccin anterior esta
estructura es ms conveniente, al menos ms elegante, si vamos a entrar datos, al menos uno entraremos, por tanto
las instrucciones del cuerpo del bucle se deben ejecutar al menos una vez, luego ya decidiremos si se repiten o no.
Do
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
Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos")
Mientras Mas_Datos = vbYes
Loop While Mas_Datos = vbYes
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.
Estructura Do..Loop Until (Hacer.. Hasta que se cumpla la condicin).
Es otra estructura que evala la condicin al final observe que la interpretacin es distinta ya que el bucle se va
repitiendo HASTA que se cumple la condicin, no MIENTRAS se cumple la condicin. Cual de los dos utilizar, pues,
no se sorprenda, la que entienda mejor o le guste ms.
La entrada de datos con este bucle quedara:
Do
Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")
Ciudad = InputBox("Entre la Ciudad : ", "Ciudad")
Edad = Val(InputBox("Ent re 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
Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos")
Visita: www.systematic.edu.pe

49

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Hasta que Mas_Datos sea igual a vbNo


Loop Until Mas_Datos=vbNo
2.9.21 Procedimientos y funciones.
Se define como procedimiento i/o funcin a un bloque de cdigo que realiza alguna tarea. Hasta ahora, hemos
construido los programas utilizando un nico procedimiento, pero a medida que los programas (y los problemas)
crecen se va haciendo necesaria la inclusin de ms procedimientos. Podra fcilmente caer en la tentacin de
utilizar, como hasta ahora, un nico procedimiento por programa pero se dar cuenta rpidamente de que este
mtodo no es nada prctico ya que grandes bloques de cdigo implican mayor complicacin del mismo, repeticin
de sentencias y lo que es ms grave, mayores problemas de seguimiento a la hora de depurar errores, ampliar
funcionalidades o incluir modificaciones.
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.
Ya lo hemos hec ho unas cuantas veces, pero ah va de nuevo.
Sub Nombre_Procedimento
Sentencias.
End Sub.
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

2.9.22 CUADRO DE CONTROL CONTROLES ACTIVEX


Una de las opciones ms interesantes que tiene el Excel es la de utilizar los cuadros de control. Los cuadros de
control se usan para crear verdaderos programas en Excel y pueden ser de mucha utilidad.
Esta herramienta est ubicada en:

En Excel 2007 se encuentra el grupo Controles de la pestaa Programador

Este grupo de Controles cuenta con tres opciones muy importantes como:

1. Modo diseo: permitir trabajar en el diseo de los controles de ActiveX.


2. Propiedades: permiten activar la propiedad de cada control.
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.)
Seleccione el segundo botn y haga clic en ver cdigo
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.
2.9.23 CREANDO FORMULARIOS Y PROGRAMNDOLOS
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.
A continuacin se Muestra como crear un formulario y como programarlo:
1. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic.
2. Activa las siguientes opciones:
De clic en el Men Ver y elija la opcin Explorador de Proyectos
De clic en el Men ver y elija la opcin Ventana Propiedades
3. Del Men Insertar elija la Opcin UserForm.

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.
As quedara el Formulario formado por los controles:

8. Ahora de doble clic sobre el control Textbox1 para programarlo y despus inserte el siguiente cdigo:
Private Sub TextBox1_Change()
Range("A9").Select
ActiveCell.FormulaR1C1 = TextBox1
End Sub
Esto indica que se vaya a A9 y escriba lo que hay en el Textbox1
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:
Private Sub TextBox2_Change()
Range("B9").Select
ActiveCell.FormulaR1C1 = TextBox2
End Sub
Esto indica que se vaya a B9 y escriba lo que hay en el Textbox2.
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

Esto indica que se vaya a C9 y escriba lo que hay en el Textbox3


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

2.9.24 Programando un Sistema Modelo de Control de Datos


Creando Formulario Mantenimiento de clientes:
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:

Tal y como se muestra en la imagen.


Luego crea el siguiente formulario en el editor de VBA:

11
10

2
13

12

4
1

15

5
14

8
6

1.- Propiedad Name: txtcodigoc


Enabled: False
2.- Propiedad Name: txtcliente
Enabled: False
3.- Propiedad Name: txtdireccionc
Enabled: False
4.- Propiedad Name: txtruc
Enabled: False
5.- Propiedad Name: txtemail
Enabled: False
6.- Propiedad Name: cmdprimero
caption: Primero
7.- Propiedad Name: cmdanterior
caption: Anterior
8.- Propiedad Name: cmdsiguiente
caption: Siguiente

Visita: www.systematic.edu.pe

9.- Propiedad Name: cmdultimo


caption: Ultimo
10.- Propiedad Name: cmdnuevo
caption: Nuevo
11.- Propiedad Name: cmdguardar
caption: Guardar
Enabled: False
12.- Propiedad Name: cmdcancelar
caption: Cancelar
Enabled: False
13.- Propiedad Name: cmdmodificar
caption: Modificar
14.- Propiedad Name: cmdeliminar
caption: Eliminar
15.- Propiedad Name: cmdcerrar
caption: Cerrar

58

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Luego Inserta un Mdulo donde codificars lo siguiente:


Public con As Integer
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.- Las lneas en azul son creadas por el editor de VBA.
Luego ubcate en un sector en blanco del rea de codificacin y codifica lo siguiente:
Public Sub numreg()
con = 0
Range("B2").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
con = con + 1
Loop
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.
Hasta el momento solo mostramos los datos en el formulario.
Ahora da doble click al botn primero y en l codifica lo siguiente:
Private Sub cmdprimero_Click()
Range("B2").Select
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.- Las lneas en azul son creadas por el editor de VBA.
Visita: www.systematic.edu.pe

59

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Ahora da doble click al botn ltimo y en l codifica lo siguiente:


Private Sub cmdultimo_Click()
Range("B" & con + 1).Select
txtcodigoc.Text = ActiveCell.Value
almacen = ActiveCell.Address
llenardatos
Range(almacen).Select
End Sub
Nota.- Las lneas en azul son creadas por el editor de VBA.
Ahora da doble click al botn Anterior y en l codifica lo siguiente:
Private Sub cmdanterior_Click()
If ActiveCell.Address = "$B$2" Then
MsgBox "Ud. est en el Primer Registro", vbOKOnly + vbInformation, "Informe del Sistema"
Else
ActiveCell.Offset(-1, 0).Select
txtcodigoc.Text = ActiveCell.Value
almacen = ActiveCell.Address
llenardatos
Range(almacen).Select
End If
End Sub
Nota.- Las lneas en azul son creadas por el editor de VBA.
Ahora da doble click al botn Siguiente y en l codifica lo siguiente:
Private Sub cmdsiguiente_Click()
If ActiveCell.Address = ("$B$" & con + 1) Then
MsgBox "Ud. est en el Ultimo Registro.", vbOKOnly + vbInformation, "Informe del Sistema"
Else
ActiveCell.Offset(1, 0).Select
txtcodigoc.Text = ActiveCell.Value
almacen = ActiveCell.Address
llenardatos
Range(almacen).Select
End If
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
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

Ahora damos doble click sobre el botn nuevo y codificamos:


Private Sub cmdnuevo_Click()
Range("B" & con + 2).Select
activar
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.

Luego creamos el procedimiento activar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
Public Sub activar()
txtcodigoc.Text = Empty
txtcliente.Text = Empty
txtdireccionc.Text = Empty
txtruc.Text = Empty
txtemail.Text = Empty
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
Luego da doble click en el botn Guardar y codifica:
Private Sub cmdguardar_Click()
almacen = ActiveCell.Address
ActiveCell.Value = txtcodigoc.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtcliente.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtdireccionc.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtruc.Text
ActiveCell.Offset(0, 1).Select
Visita: www.systematic.edu.pe

61

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

ActiveCell.Value = txtemail.Text
desactivar
Range(almacen).Select
ActiveWorkbook.Save
numreg
cmdanterior_Click
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
Luego creamos el procedimiento desactivar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
Public Sub desactivar()
txtcodigoc.Enabled = False
txtcliente.Enabled = False
txtdireccionc.Enabled = False
txtruc.Enabled = False
txtemail.Enabled = False
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

Luego da doble click en el botn cancelar y codifica:


Private Sub cmdcancelar_Click()
cmdultimo_Click
desactivar
End Sub

Nota. - Las lneas en azul son creadas por el editor de VBA.


Luego da doble click en el botn Modificar y codifica:
Private Sub cmdmodificar_Click()
almacen = ActiveCell.Address
activar
txtcodigoc.Text = ActiveCell.Value
llenardatos
Range(almacen).Select
End Sub

Nota. - Las lneas en azul son creadas por el editor de VBA.

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:
Public Sub llenardatos()
ActiveCell.Offset(0, 1).Select
txtcliente.Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
txtdireccionc.Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
txtruc.Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
txtemail.Text = ActiveCell.Value
End Sub
Luego da doble click en el botn Eliminar y codifica:
Private Sub cmdeliminar_Click()
rpta = MsgBox("Est seguro que desea" & Chr(13) + " eliminar este registro?", 4 + 32, "seguridad")
If rpta = 6 Then
Selection.EntireRow.Delete
con = con - 1
Else
Cancel = True
End If
cmdprimero_Click
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
Luego da doble click en el botn Cerrar y codifica:
Private Sub cmdcerrar_Click()
Me.Hide
Unload Me
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.

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

Creando Formulario Mantenimiento de Proveedores:


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:

Tal y como se muestra en la imagen.


Luego crea el siguiente formulario en el editor de VBA:

1
10

11

12

13

2
3
4
1
5
6

1.- Propiedad Name: txtcodigop


Enabled: False
2.- Propiedad Name: txtproveedor
Enabled: False
3.- Propiedad Name: txtdireccionp
Enabled: False
4.- Propiedad Name: txtrucp
Enabled: False
5.- Propiedad Name: txtemailp
Enabled: False
6.- Propiedad Name: cmdprimero
caption: Primero
7.- Propiedad Name: cmdanterior
caption: Anterior
8.- Propiedad Name: cmdsiguiente
caption: Siguiente

Visita: www.systematic.edu.pe

14

15

9.- Propiedad Name: cmdultimo


caption: Ultimo
10.- Propiedad Name: cmdnuevo
caption: Nuevo
11.- Propiedad Name: cmdguardar
caption: Guardar
Enabled: False
12.- Propiedad Name: cmdcancelar
caption: Cancelar
Enabled: False
13.- Propiedad Name: cmdmodificar
caption: Modificar
14.- Propiedad Name: cmdeliminar
caption: Eliminar
15.- Propiedad Name: cmdcerrar
caption: Cerrar

65

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Luego Inserta un Mdulo donde codificars lo siguiente:


Public con As Integer
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("Proveedores").Select
Dim x As Integer
numreg
txtcodigop.Text = Range("Proveedores!B2").Formula
txtproveedor.Text = Range("Proveedores!C2").Formula
txtdireccionp.Text = Range("Proveedores!D2").Formula
txtrucp.Text = Range("Proveedores!E2").Formula
txtemailp.Text = Range("Proveedores!F2").Formula
Range("B2").Select
End Sub
Nota.- Las lneas en azul son creadas por el editor de VBA.
Luego ubicate en un sector en blanco del rea de codificacin y codifica lo siguiente:
Public Sub numreg()
con = 0
Range("B2").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
con = con + 1
Loop
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.
Hasta el momento solo mostramos los datos en el formulario.
Ahora da doble click al botn primero y en l codifica lo siguiente:
Private Sub cmdprimero_Click()
Range("B2").Select
txtcodigop.Text = Range("Proveedores!B2").Formula
txtproveedor.Text = Range("Proveedores!C2").Formula
txtdireccionp.Text = Range("Proveedores!D2").Formula
txtrucp.Text = Range("Proveedores!E2").Formula
txtemailp.Text = Range("Proveedores!F2").Formula
Range("B2").Select
End Sub
Nota.- Las lneas en azul son creadas por el editor de VBA.
Visita: www.systematic.edu.pe

66

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Ahora da doble click al botn ltimo y en l codifica lo siguiente:


Private Sub cmdultimo_Click()
Range("B" & con + 1).Select
txtcodigop.Text = ActiveCell.Value
almacen = ActiveCell.Address
llenardatos
Range(almacen).Select
End Sub
Nota.- Las lneas en azul son creadas por el editor de VBA.
Ahora da doble click al botn Anterior y en l codifica lo siguiente:
Private Sub cmdanterior_Click()
If ActiveCell.Address = "$B$2" Then
MsgBox "Inicio"
Else
ActiveCell.Offset(-1, 0).Select
txtcodigop.Text = ActiveCell.Value
almacen = ActiveCell.Address
llenardatos
Range(almacen).Select
End If
End Sub
Nota.- Las lneas en azul son creadas por el editor de VBA.
Ahora da doble click al botn Siguiente y en l codifica lo siguiente:
Private Sub cmdsiguiente_Click()
If ActiveCell.Address = ("$B$" & con + 1) Then
MsgBox "estas en el ultimo"
Else
ActiveCell.Offset(1, 0).Select
txtcodigop.Text = ActiveCell.Value
almacen = ActiveCell.Address
llenardatos
Range(almacen).Select
End If
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
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

Ahora damos doble click sobre el botn nuevo y codificamos:


Private Sub cmdnuevo_Click()
Range("B" & con + 2).Select
activar
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
Luego creamos el procedimiento activar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
Public Sub activar()
txtcodigop.Text = ""
txtproveedor.Text = ""
txtdireccionp.Text = ""
txtrucp.Text = ""
txtemailp.Text = ""
txtcodigop.Enabled = True
txtproveedor.Enabled = True
txtdireccionp.Enabled = True
txtrucp.Enabled = True
txtemailp.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
txtcodigop.SetFocus
End Sub
Luego da doble click en el botn Guardar y codifica:
Private Sub cmdguardar_Click()
almacen = ActiveCell.Address
ActiveCell.Value = txtcodigop.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtproveedor.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtdireccionp.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtrucp.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = txtemailp.Text
desactivar
Range(almacen).Select
Visita: www.systematic.edu.pe

68

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

ActiveWorkbook.Save
numreg
cmdanterior_Click
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
Luego creamos el procedimiento desactivar. Recuerda que el procedimiento debe ser creado en un sector en
blanco del rea de codificacin donde Codificamos:
Public Sub desactivar()
txtcodigop.Enabled = False
txtproveedor.Enabled = False
txtdireccionp.Enabled = False
txtrucp.Enabled = False
txtemailp.Enabled = False
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
Luego da doble click en el botn cancelar y codifica:
Private Sub cmdcancelar_Click()
cmdultimo_Click
desactivar
End Sub

Nota. - Las lneas en azul son creadas por el editor de VBA.


Luego da doble click en el botn Modificar y codifica:
Private Sub cmdmodificar_Click()
almacen = ActiveCell.Address
activar
txtcodigop.Text = ActiveCell.Value
llenardatos
Range(almacen).Select
End Sub

Nota. - Las lneas en azul son creadas por el editor de VBA.

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:
Public Sub llenardatos()

ActiveCell.Offset(0, 1).Select
txtproveedor.Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
txtdireccionp.Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
txtrucp.Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
txtemailp.Text = ActiveCell.Value
End Sub

Luego da doble click en el botn Eliminar y codifica:


Private Sub cmdeliminar_Click()
rpta = MsgBox("Est seguro que desea" & Chr(13) + " eliminar este registro?", 4 + 32, "seguridad")
If rpta = 6 Then
Selection.EntireRow.Delete
Else
Cancel = True
End If
cmdprimero_Click
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.
Luego da doble click en el botn Cerrar y codifica:
Private Sub cmdcerrar_Click()
Me.Hide
Unload Me
End Sub
Nota. - Las lneas en azul son creadas por el editor de VBA.

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.

Prctica: Realiza los formularios para las sgtes hojas:


Hoja Vendedores:

Hoja Productos:

Visita: www.systematic.edu.pe

71

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Creando el formulario de Factura:


Ahora crearemos un formulario el cual realizar el proceso de factura para eso debes agregar 2 hojas mas al
libro como se muestra a continuacin:

Una hoja

que tiene los siguientes datos:

Y otra hoja

que tiene los siguientes datos:

Luego ingresa al editor de VBA y crea la siguiente interfz:

1
4
2

7
6

15

12

10
11

13

14

Visita: www.systematic.edu.pe

72

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

1.- Propiedad: Name=txtnombres


Enabled=false
2.- Propiedad: Name=txtdireccion
Enabled=false
3.- Propiedad: Name=txtruc
Enabled=false
4.- Propiedad: Name=txtdni
Enabled=false
5.- Propiedad: Name=txtfecha
Enabled=false
6.- Propiedad: Name=txtfono
Enabled=false
7.- Propiedad: Name=lblnum
8.- Propiedad: Name=cmdnuevo
Enabled=true

9.- Propiedad: Name=cmdguardar


Enabled=false
10.- Propiedad: Name=cmdcancelar
Enabled=false
11.- Propiedad: Name=cmdsalir
Enabled=true
12.- Propiedad: Name=txtstotal
Enabled=false
13.- Propiedad: Name=txtigv
Enabled=false
14.- Propiedad: Name=txttotpag
Enabled=false

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

Notars que se agrega una nueva herramienta llamada ListView.

Ahora elige la herramienta e insrtala en el formulario.


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:
En la ficha general debe quedar de la siguiente manera:

Luego en la ficha Column Headers debers insertar las columnas que se usarn en el diseo como son:
CODIGO, PRODUCTO, CANTIDAD, IMPORTE.

Visita: www.systematic.edu.pe

74

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Deber quedar la pestaa ColumnHeaders de la siguiente manera:

Luego inserta un nuevo userform el cual tendr la siguiente interfz:

6
3

1.- Propiedad: Name= cboproductos


2.- Propiedad: Name= txtcodigo
3.- Propiedad: Name= txtpreciou
4.- Propiedad: Name=txtcant
5.- Propiedad: Name= txtimport
6.- Propiedad: Name= cmdingresar
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

Ahora inserta un modulo en el que codificars lo siguiente:

Luego da doble click al primer formulario creado y en el evento actvate codifica lo siguiente:

Ahora codifica en el botn nuevo:

Visita: www.systematic.edu.pe

76

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Luego codifica los procedimiento activar y desactivar:

Visita: www.systematic.edu.pe

77

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Luego codifica el botn guardar:

Visita: www.systematic.edu.pe

78

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Luego codifica el botn cancelar:

Luego da doble click al listview y codifcalo de tal manera que al dar doble click se muestre el segundo formulario
creado.
En el segundo formulario en el evento actvate del formulario codifica lo siguiente:

Luego crea el procedimiento numreg:

Visita: www.systematic.edu.pe

79

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Da doble click al cuadro combinado cboproductos y codifica en el evento change lo siguiente:

Luego codifica el txtcant en el evento change y luego en el evento Keypress:

Luego codifica el botn ingresar:

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

Creando el formulario de Acceso :


Ahora crearemos un formulario de acceso, el cual va a permitir el ingreso solo a los usuarios Registrados. Para
eso realiza lo siguiente:
Crea una hoja llamada

que tendr los siguientes datos:

Luego ingresa al editor de VBA y disea un formulario con la siguiente interfaz:

3
4

1.- Propiedad: name: Label4


2.- Propiedad: name: Label5
3.- Propiedad: name: ComboBox1
4.- Propiedad: name: txtclave; PasswordChar: *
6.- Propiedad: name: cmdaceptar
7.- Propiedad: name: cmdcancelar

Visita: www.systematic.edu.pe

82

Especialista en Excel Empresarial


Mdulo III: Excel con Visual Basic para Aplicaciones

Luego en el evento Activate del userform codifica lo siguiente:

Luego codifica el botn Aceptar:

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

Luego codifica el botn cancelar:

Y codifica el procedimiento guardar:

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:
En el explorador de proyectos elige el libro de trabajo y dale doble click.

Te aparecer el rea de codificacin del libro en blanco, as es que codifica lo siguiente:

Nota:

la instruccin UserForm6.show muestra el formulario de acceso, as es que, en esa instruccin


debes poner el nombre del formulario en el que haz creado el acceso.
De esa manera nuestro sistema queda listo para realizar los procesos creados en cada formulario.

Visita: www.systematic.edu.pe

85

Vous aimerez peut-être aussi