Vous êtes sur la page 1sur 137

Excel para Expertos

Programacin con Macros en Microsoft Excel

MODULO II
PROGRAMA EXCEL PARA EXPERTOS
Macros y VBA para Excel

1. INTRODUCCION GENERAL DEL MODULO

En el presente modulo desarrollaremos las pautas y conceptos para que mediante la


elaboracin de Macros podamos automatizar procesos dentro de nuestras aplicaciones Excel,
de tal forma que se puedan desarrollar soluciones con un entorno amigable, interactivo y de
fcil manejo, encapsulando en macros aquellas tareas frecuentes o que requieran de un nivel
de personalizacin que mediante cdigo en VBA se lleguen alcanzar.

2. OBJETIVOS GENERALES DEL MODULO

El participante al finalizar el modulo podr:

Reconocer la importancias de las Macros en EXCEL

Elaborar Macros automticas mediante la grabadora de macros

Conocer el lenguaje VBA (Visual Basic for Application) que permitir la creacin de
macros complejas basadas en cdigo.

Emplear de manera eficiente formularios (Userform) que permiten una mayor


interaccin del usuario con respecto a la aplicacin desarrollada.

3. PRE REQUISITOS DEL MODULO

Haber llevado satisfactoriamente el modulo I , de Grficos y Tablas Dinmicas en Excel

126
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

4. CONTENIDO DETALLADO DEL MODULO

A. SESION 1
TEMARIO
Definicin de macros. reas de aplicacin de macros
Creando macros con la grabadora
Creando macros con programacin en VBA
Ejercicios

IMPORTANCIA

Esta sesin basa su importancia en ser la base de la creacin de macros que


permitan al desarrollador elaborar macros ms complejas tomando como
referencia los conceptos vertidos en esta sesin.

CONTENIDO DESARROLLADO

a. Definicin de Macro

Desde el punto de vista general, podemos decir que las macros nos ayudan a automatizar
tareas. Son partes de cdigo de programacin que es interpretado por
Excel y lleva a cabo distintas acciones o una sucesin de tareas. De esta forma, con
una macro podremos realizar tareas repetitivas muy fcilmente.
Sin embargo, ste no es el nico uso que podemos darle a una macro ya que, si utilizamos el
lenguaje de programacin en el que hablan las macros, Visual Basic para Aplicaciones (VBA),
podremos desarrollar desde tareas y funciones simples para
fines especficos hasta aplicaciones complejas que incluso conllevan a interaccin con bases de
datos, como lo veremos en el modulo III.

Las reas de aplicacin de las macros las podemos resumir en lo siguiente:

Automatizacin de procesos

Las macros nos permiten grabar o definir nuestros procesos y luego ejecutarlos
automticamente con 1 clic. Nos pueden ahorrar muchas horas de trabajo. Con las macros
podrs hacer tu trabajo mucho ms rpido. Se han visto casos extremos de trabajos en Excel
que llevaban 6 o 7 horas de armado manual y luego pudieron ser automatizados en una macro
que haca todo en pocos segundos.

Creacin de funciones a medida

Las funciones y frmulas Excel son la esencia de la hoja de clculos. Podemos programar
funciones a medida que hagan exactamente lo que nosotros queremos. Y esas funciones se
comportarn igual que las de Excel e incluso aparecern en el men de funciones en la
categora que nosotros indiquemos, tendrn sus respectivos argumentos, etc.

127
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Creacin de nuevos comandos, complementos y mens

Excel trae una gran cantidad de comandos y mens predefinidos que nos asisten para las
operaciones ms habituales. Las macros nos permiten crear nuestros propios comandos y
mens personalizados, e incorporarlos al Excel. La utilidad de los mismos depende tan solo de
nuestras necesidades. Los complementos Excel tambin estn creados con macros.

Creacin de aplicaciones a medida

Excel es utilizado en diversos campos y por una gran cantidad de usuarios. Las macros te
permitirn construir complejas y elegantes aplicaciones para cualquier uso que quieras darles.
El lmite solo es tu imaginacin. Una aplicacin Excel consiste en algo ms que una simple
plantilla con datos y frmulas. Una aplicacin Excel es un verdadero programa de software con
una serie de caractersticas que lo hacen utilizable por cualquier usuario sin que el mismo
tenga que entender la lgica "exceliana" que hay por detrs.

Formularios

Finalmente, con las macros podremos armar todo tipo de formulario para entrada y gestin de
datos. Dichos formularios pueden tener botones, listas desplegables, y todas las herramientas
que encuentras en formularios profesionales. Adems, puedes hacer que los datos del
formulario se vayan guardando en una tabla Excel para posteriores anlisis y reportes.

Existen 2 tipos de macros:

Automticas

Basadas en la grabacin de las acciones realizadas y la asignacin a objetos.

Programacin

Emplear el uso de comandos en Visual Basic para Aplicaciones (VBA) asignado su ejecucin a
objetos, como un botn de comando por ejemplo.

b. La ficha Programador

Desde la ficha Programador de la cinta de opciones de Excel es donde encontramos todo lo


necesario para el trabajo con macros. Por defecto esta ficha no esta visible en la cinta. Aqu le
damos los pasos para hacerla visible:

Paso 1:

Haga clic en el botn Office (parte superior izquierda de su pantalla , versin


2007)

Haga clic en la ficha Archivos (Versin 2010)

128
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2:

Haga clic en el botn opciones de Excel (Excel 2007) o seleccione el men


opciones (Excel2010)

Paso 3:

En Excel 2007 aparecer un cuadro de dialogo, desde el cual , ubicado en la


opcin Ms Frecuentes , marque la casilla en donde se indica Mostrar ficha
Programador

En Excel 2010 haga clic en Opciones y de ah a la ficha que dice Personalizar


Cinta de Opciones, y haga clic sobre la casilla Programador

En ambos casos haga clic en Aceptar y ya ver la ficha Programador en la cinta


de opciones

c. Creacin de una macro automtica con la grabadora de macros

Antes de explicar la forma de grabar una macro debemos entender que todas las macros
generan un cdigo en VBA, lenguaje que ms adelante aprenderemos a manejar, de tal forma
que podamos administrar y personalizar las macros con conocimiento de causa.

Excel trae incorporada una grabadora de macros. La misma funciona de forma muy fcil.
Encendemos la grabadora, ejecutamos las acciones que nos interesan sobre la hoja Excel,
paramos la grabadora y eso es todo. Excel escribe de forma automtica el cdigo VBA de la
macro. Ahora podemos hacer un experimento muy interesante. Crear nuestra primera macro
hacindola con la grabadora de macros. Sigue los pasos a continuacin:

Paso 1. Vamos a grabar la macro

Ir a la ficha Programador > Grabar macro

Se abrir un cuadro de dilogo como el que se muestra a continuacin.

Donde dice
Nombre de la macro escriba

129
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

MiPrimeraMacro. Ese ser el nombre que le daremos a nuestra macro.


Presione Aceptar y la macro comenzar a grabar todo lo que haga.
Ubicarse en la celda A1, escribe el valor 1500 y pulsar la tecla Enter

Paso 2. Detener la grabacin

Para terminar de grabar, debemos presionar el botn de detener grabacin

Paso 3. Revisin del cdigo generado

Accede al editor de Visual Basic con ALT+F11.


Debe hacer clic en Mdulo1 (ventana de la izquierda llamada Explorador de
Proyectos) para visualizar el cdigo de la nueva macro grabada. Ver una
pantalla como la siguiente:

130
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

4. Ejecucin de la macro

Vuelve a Excel con ALT+F11.


Ver que la celda A1 tiene el valor 1500 porque lo escribimos mientras
grabbamos la macro.

Para ver cmo opera la macro borra dicho valor.

Abre el men de macros presionando ALT+F8


Selecciona MiPrimeraMacro
Presiona Aceptar y ver cmo se escribe nuevamente el valor 1500 en la celda
A1.

d. Creacin de macros con programacin en VBA

La creacin de macros con programacin implica elaborar un programa (sencillo o complejo,


dependiendo la solucin que deseamos implementar atraves de la macro) en cdigo VBA
(Visual Basic for Application) que es el lenguaje con el que podemos automatizar aplicaciones
Office. Para codificar el programa requerimos de invocar al Editor de Visual Basic con la
pulsacin de las teclas ALT+F11 o desde la ficha Programador acceder al comando Visual
Basic (primer comando desde la izquierda de la ficha)

El Editor Visual Basic

Una vez que haya accedido al editor de Visual Basic vers algo similar a la figura siguiente (no
importa si no lo ve estrictamente similar, eso depender de las ventanas que tenga visibles y
ocultas). Puede mostrar u ocultar estas ventanas desde el men Ver.

El

131
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

editor contiene 4 ventanas principales:

la Ventana Proyecto (parte izquierda superior)


la Ventana de Cdigo (parte derecha)
la Ventana Propiedades (parte izquierda inferior)
la Ventana Inmediato (parte inferior derecha)

Ventana Proyecto - VBA Project: Esta


ventana muestra los libros excel (xls) o los
complementos (xla) abiertos. Usualmente
ver nombres del tipo "VBAProject" y entre
parntesis el nombre del archivo o
complemento Excel. Veamos el caso de
VBAProject (Libro1). Simplemente significa
que tienes abierto un libro Excel llamado
Libro 1. Luego cuelgan 3 carpetas ms: Hoja1
(Hoja1), ThisWorkbook y Modulo (no importa
si ve todos estos elementos ahora, luego
explicaremos como activarlos). Estas
carpetas es donde habitan las macros.
Haciendo doble clic en ellas activars la
ventana donde se escriben las macros.

Ventana de Cdigo: esta es el lugar donde escribiremos el cdigo propiamente dicho de las
macros. Como no hemos escrito ninguna macro todava veremos la hoja en blanco. Recuerda
bien estas dos ventanas, ya que las usaremos a continuacin para escribir nuestra primera
macro.

Como ver el Editor de VB tiene muchas ventanas. Pero de momento solo nos interesan las
dos ventanas que te indicamos anteriormente: la Ventana Proyecto VBA Project y la Ventana

132
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

de Cdigo donde se escribe el cdigo de las macros. La Ventana de Propiedades e Inmediato


las dejaremos para ms adelante.

Recuerda: presionando las teclas ALT+F11 puedes ir desde Excel al Editor o desde el Editor al
Excel de forma alterna (debes mantener presionada la tecla ALT y presionar F11 repetidas
veces, vers como pasas de Excel al editor y viceversa).

Si estas en el editor y quieres regresar a la hoja Excel tambin puedes utilizar el cono de Excel
que se encuentra en el men superior del editor (primer cono de la izquierda, con la X de
Excel).

Creando la primera macro con programacin en VBA

Esta macro la denominaremos EnviarSaludo y permitir enviar un mensaje de bienvenida


unido al nombre del usuario ingresado en la celda A3 de la hoja Hoja1.

Siga los pasos a continuacin indicados:

Paso 1:

Ir al editor de VB. Desde la ventana del Explorador de proyectos seleccione la hoja Hoja1.

Paso 2:

Desde la ventana de cdigo de la hoja Hoja1 ingrese el siguiente procedimiento (Sub)

133
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Note que al codificar Sub EnviarSaludos y pulsar Enter, automticamente el editor ya incluye el
cierre del procedimiento con la sentencia End Sub

La funcin MsgBox se emplea para enviar saludos mediante un cuadro de dialogo. Mas
adelante revisaremos a profundidad esta funcin propia del lenguaje VBA.

Paso 3:

Vuelva a la hoja Hoja1 de Excel e ingrese en la celda A3 su nombre y apellido

Paso 4:

Probaremos la macro invocando a la ventana de macros pulsando ALT+F8 , desde la cual


seleccionaremos la macro llamada EnviarSaludo y haremos clic en el botn Ejecutar.

134
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Veremos el siguiente resultado

Modificar macros existentes

Si se desea modificar la funcionalidad de una macro ya creada, deber invocar a la ventana de


macros con ALT+F8 , seleccionar la macro a modificar y hacer clic en el botn Modificar. Se
abrir la ventana del editor VB con el cdigo de la macro seleccionada para su modificacin.

Eliminar macros existentes

Invocar a la ventana de macros con ALT+F8, seleccione la macro que desea eliminar y haga clic
en el botn Eliminar, con lo cual la macro se eliminara incluyendo su cdigo. Recuerde que si la
macro eliminada la asigno a un control (un botn de comando por ejemplo) el control ya no
ejecutara ninguna accin.

Asignar la ejecucin de la macro a un control

Como es lgico pensar, no siempre ejecutaremos la macro desde la ventana de macros. La idea
de automatizar consiste en que las macros se ejecuten desde un botn de comandos por
ejemplo (o desde cualquier otro control que permita la ejecucin de la misma). A continuacin
explicaremos la manera como se puede asignar la ejecucin de la macro EnviarSaludo a un
botn que insertaremos en la hoja Hoja1

Paso 1:

Desde la ficha Programador ubique el grupo


Controles, desde el cual seleccione el comando
Insertar, con lo que se despliega la siguiente
ventana:

135
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2:

Desde el grupo de controles llamado Controles de Formulario seleccione el llamado Botn (el
primero de la izquierda) y dibuje dicho botn con el mouse dentro de cualquier parte de la
hoja Hoja1, de tal forma que al finalizar de dibujar el botn se mostrara una ventana parecida
a la ventana de macros, donde se elegir la macro a ejecutar por el botn. Elija la macro
EnviarSaludo y acepte.

Paso 3:

Vera que el botn esta seleccionado pero con el texto botn 1. Haga un clic sobre dicho texto,
edtelo y coloque Enviar Saludo y haga clic fuera del botn.
Ahora el botn quedo listo para ejecutar la macro. Haga clic sobre l y vera el resultado.

NOTA: Ud. puede dibujar un control y no asignarle ninguna macro por el momento. Esto se da
en los casos en los cuales se desea primero dibujar los controles y luego asignarlos a las
macros. Para hacer esto, haga clic derecho en el botn indicado, seleccione la opcin Asignar
macro y repita el paso 2.

136
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

LABORATORIOS DESARROLLADOS

Laboratorio 1: Creando macros que naveguen entre las hojas y adems que ordenen y filtren
una base de datos

Abra el libro Demo01_Macros de su material de trabajo y realice lo siguiente

Paso 1:

Vaya el editor Visual Basic y desde la ventana del Explorador de Proyectos seleccione la hoja
Hoja1 (MenuPrincipal).

Codifique las siguientes macros:

Vuelva a la hoja Hoja1 de Excel y dibuje los siguientes botones. A cada botn asigne la macro
que corresponda (de acuerdo al texto de cada botn segn la figura, asigne la macro
respectiva)

137
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2:

Seleccione la hoja Hoja2 (MacrosOrden) y con la grabadora de macros elabore las siguientes
macros:

OrdenarApellidosNombres
Donde grabe todas las acciones pertinentes para ordenar la base de datos por apellido
paterno, apellido materno y nombres (las de forma alfabetica de la A a la Z)

OrdenarSueldos
Donde grabe todas las acciones pertinentes para ordenar la base de datos por sueldo de forma
descendente

OrdenarAntiguedad
Donde grabe todas las acciones pertinentes para ordenar la base de datos por fecha de
ingreso, del ms antiguo al ms reciente

Ahora dirjase al editor VB. Seleccione la hoja Hoja2 .Agregue Ud. la siguiente macro:

Salga a Excel y en la hoja Hoja2 dibuje los siguientes botones, asignndoles las macros
respectivas, de acuerdo al texto que se muestra en cada botn:

138
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 3:

Seleccione la hoja Hoja3 (MacrosFiltro) y con la grabadora de macros elabore las siguientes
macros:

Filtro1
Donde grabe todas las acciones pertinentes para aplicar filtros avanzados en la base de datos
de acuerdo al rango llamado Criterio1 y que muestre el resultado en el rango Salida

Filtro2
Donde grabe todas las acciones pertinentes para aplicar filtros avanzados en la base de datos
de acuerdo al rango llamado Criterio2 y que muestre el resultado en el rango Salida

Filtro3
Donde grabe todas las acciones pertinentes para aplicar filtros avanzados en la base de datos
de acuerdo al rango llamado Criterio3 y que muestre el resultado en el rango Salida

Ahora dirjase al editor VB. Seleccione la hoja Hoja3 desde la ventana del Explorador de
proyectos .Codifique Ud. las siguientes macros:

Salga a Excel y en la hoja Hoja3 dibuje los siguientes botones, asignndoles las macros
respectivas, de acuerdo al texto que se muestra en cada botn:

139
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

B.
C.
D.
E.
F.
G.
H.

Paso 4:

Grabe su libro y pruebe cada macro desde la hoja1 MenuPrincipal.

Nota: Si se dirige al editor VB y desde la ventana del Explorador de Proyectos selecciona el


Modulo1, observe como las macros automticas (generadas por la grabadora) estn
codificadas.

EJERCICIOS PRCTICOS

Paso 1:

En el mismo libro Demo01_Macros, seleccione la hoja Hoja4 y dibuje los siguientes botones
(pero aun no asigne ninguna macro en ellos, solo dibjelos)

140
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2:

Ahora desde el editor VB seleccione la misma (Introd_VBA) y codifique las siguientes macros:

Paso 3:

Vuelva a Excel y asigne a cada botn la respectiva macro, haciendo clic derecho sobre el botn
respectivo y eligiendo la opcin Asignar Macro.

Grabe y pruebe su aplicacin

141
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

B. SESIN 2

TEMARIO
Definicin de programa
La programacin en Excel
Introduccin a la programacin con VBA

IMPORTANCIA

En la presente sesin se revisara los fundamentos de la programacin y especficamente en


Excel. Para aquellas personas que nunca han programado, este captulo ser fundamental para
iniciarse en la creacin de macros creadas por el desarrollador.

CONTENIDO DESARROLLADO

a. Definicin de programa

Un programa se define como un conjunto de sentencias ejecutadas bajo una estructura lgica
secuencial, desarrollada para dar solucin a un problema determinado.
Las sentencias se dan en un determinado lenguaje de programacin, como por ejemplo Java,
Visual Basic, C#, etc.

A continuacin mostramos un ejemplo de un pequeo programa que calcula el monto de una


comisin en funcin al ingreso de las ventas y el porcentaje de comisin a deducir.

142
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

b. Introduccin a la programacin en Excel

Esencialmente la programacin de Excel se reduce a la manipulacin de objetos mediante la


escritura de instrucciones en un lenguaje que Excel puede entender, siendo este el lenguaje
VBA (Visual Basic for Application)

VBA est pensado como un lenguaje de secuencia de comandos de aplicacin de Microsoft


comn y ahora est incluido en las aplicaciones de Office 2007 y 2010 (e incluso en
aplicaciones de otros fabricantes). Por consiguiente, al dominar VBA usando Excel se podr
entrar directamente en la escritura de macros para otros productos de Microsoft. Mejor an,
se pueden generar soluciones completas que usan opciones a travs de varias aplicaciones.

Por ejemplo las macros generadas por la grabadora de macros han creado en forma
automtica un cdigo en VBA.

Ms adelante veremos cmo realizar macros complejas utilizando cdigo VBA. Por ahora
tenemos que familiarizarnos con el lenguaje

El secreto de usar VBA con otras aplicaciones reside en entender el modelo de objetos para
cada aplicacin.
VBA simplemente manipula objetos, y cada producto (Excel, Word, Access, PowerPoint y
dems) posee un modelo de objeto nico propio.
Por ejemplo Excel expone varios objetos de anlisis de datos muy potentes como las hojas de
clculo, grficos, tablas dinmicas, escenarios y numerosas funciones matemticas, financieras
y temas generales. Con VBA se puede trabajar con estos objetos y disear procedimientos
automatizados.

Los mdulos

Las acciones de VBA se realizan mediante la ejecucin del cdigo VBA. El cdigo VBA se escribe
(o se graba) y se guarda en un mdulo VBA.
Los mdulos se guardan en un libro de trabajo de Excel pero se editan o visualizan en el editor
de Visual Basic. Un mdulo VBA se compone de procedimientos. Un procedimiento es
bsicamente un cdigo de ordenador que realiza alguna accin sobre los objetos o con ellos.

Ejemplo: Procedimiento llamado Sub que enva en un mensaje la suma de 1+1

Sub Prueba()
Sum= 1+1
MSGBox La respuesta es & Sum
End Sub

NOTA: VBA manipula los objetos contenidos en su aplicacin anfitriona (en este caso Excel).

143
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Los procedimientos Function

Un mdulo VBA puede tener tambin procedimientos Function. Un procedimiento Function


devuelve un solo valor. Se puede llamar una funcin desde otro procedimiento VBA o usar una
frmula de hoja de clculo.

Ejemplo de una funcin que retorna la suma de los 2 parmetros que se le pasan como
argumentos

Function MiFuncionSuma(arg1, arg2)


MiFuncionSuma = arg1 + arg2
End Function

El modelo de objetos de Excel

Excel proporciona ms de 100 clases de objetos para manipular. Ejemplos de objetos son un
libro de trabajo, una hoja de clculo, un rango de una hoja de clculo, un grfico y un
rectngulo dibujado. Existen muchos ms objetos a nuestra disposicin y se pueden manipular
mediante el uso de cdigo VBA.

Las clases de objetos estn ordenados jerrquicamente. Los objetos pueden actuar como
contenedores de otros objetos. Por ejemplo, Excel es un objeto llamado Application y contiene
otros objetos como WorkBook y CommandBar. El objeto WoorkBook puede contener otros
objetos como WorkSheet y Chart. Un objeto WoorkSheet puede contener objetos como
Range, PivotTable y dems. Nos referimos al orden de estos objetos como modelo de objeto
de Excel.
Objetos similares forman una coleccin. Por ejemplo, la coleccin WorkSheets est compuesta
por todas las hojas de clculo de un libro concreto. La coleccin CommandBars est compuesta
por todos los objetos CommandBar. Las colecciones son objetos en s mismas. Cuando nos
referimos a un objeto contenido o miembro, estamos especificando su posicin en la jerarqua
del objeto, usando un punto como separador entre el contenedor y el miembro.

Por ejemplo esta expresin se refiere al libro de trabajo Libro1.xls en la coleccin WorkBooks.

Application.WorkBooks(Libro1.xls)

Nos podemos referir a la Hoja1 del Libro1 como

Application.WorkBooks(Libro1.xls).WorkSheets(Hoja1)

Si se quiere omitir una referencia especfica a un objeto, Excel usa los objetos activos. Si el
libro1 es el libro de trabajo activo, la referencia anterior se puede simplificar a:

WorkSheets(Hoja1).Range(A1)

Si se sabe que la Hoja1 es la hoja activa, se puede incluso simplificar ms

Range(A1)
Propiedades de los objetos

144
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Los objetos tienen propiedades. Se puede pensar en una propiedad como en una configuracin
para un objeto.
Por ejemplo, un objeto Range tiene propiedades como Value y Name. Un objeto Chart tiene
propiedades como HasTitle y Type. Se puede usar VBA para determinar las propiedades del
objeto y tambin para cambiarlas.
Nos podemos referir a propiedades para combinar el objeto con su propiedad, separados por
punto. Por ejemplo nos podemos referir al valor de la celda A1 de la Hoja1 como

WorkSheets(Hoja1).Range(A1).Value

Se pueden asignar valores a variables de VBA.Para asignar un valor en la celda A1 de la


Hoja1 a una variable llamada Inters, use la siguiente instruccin VBA:

Inters = WorkSheets(Hoja1).Range(A1).Value

Los mtodos de los objetos

Los objetos disponen de mtodos. Un mtodo es una accin que se realiza con el
objeto. Por ejemplo, uno de los mtodos para el objeto Range es ClearContents. Este
mtodo borra el contenido del rango.
Se pueden especificar mtodos mediante la combinacin del objeto con el mtodo,
separados por punto, as:

Range (A1).ClearContents

VBA tambin incluye todas las estructuras de lenguajes de programacin modernos,


como matrices, bucles y de ms, que analizaremos en la siguiente sesin.

c. Las variables

El propsito principal de VBA es manipular datos. Algunos residen en objetos tales como
rangos de hojas de clculo. Otros se guardan en las variables que se crean.
Una variable es una localizacin de almacenamiento con nombre, dentro de la memoria del
ordenador.
VBA tiene algunas reglas relacionadas con los nombres de las variables:
Se pueden usar caracteres alfabticos, nmeros y algn carcter de puntuacin,
pero el primero de los caracteres debe ser alfabtico
VBA no distingue entre maysculas y minsculas
No se pueden usar espacios ni puntos
No se pueden incrustar en el nombre de una variable los siguientes smbolos:
#, $, %,!
Los nombres de las variables pueden tener hasta 254 caracteres

145
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Los tipos de datos

Cuando definimos variables debemos asignarle su tipo de dato. En VBA se manejan los
siguientes tipos de datos

mbito de las variables

Se define as al campo de accin donde podemos emplear las variables. Esto depende de
donde las declaremos y con qu sentencia. Los alcances pueden ser

Variables locales
Una variable local es una variable declarada dentro de un procedimiento. Estas variables se
pueden usar slo en el procedimiento en que se declararon. Cuando el procedimiento finaliza,
la variable deja de existir y Excel libera su memoria.
La manera ms comn de declarar una variable local es situarla dentro de una instruccin DIM.
Ejemplo:

146
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Sub MiSub()
DIM x As Integer
DIM First As Long
DIM InerestRate As Single
DIM TodaysDate As Date
DIM UserName As String * 20
Aqu se sita el cdigo del procedimiento
..
..
End Sub

Esto tambin es vlido:

DIM x As Integer, y As Integer, z As Integer

Esto no es vlido:

DIM x, y, z As Integer

Variables a nivel de mdulo


Algunas veces se desear que una variable est disponible para todos los procedimientos de
un mdulo. Para ello, se declara la variable antes del primer procedimiento del mdulo (fuera
de cualquier procedimiento o funcin). Ejemplo:

DIM fecha As Date


Sub Dias()
Aqu va el cdigo
End Sub
Sub Meses()
Aqu va el cdigo
End Sub

De esta forma la variable fecha podr ser reconocida en cualquiera de los 2 procedimientos

Variables Public
Para que una variable est disponible para todos los procedimientos de un proyecto de VBA ,
se declara la variable a nivel de mdulo con el uso de la palabra Public. Por ejemplo, si dentro
de un modulo declaramos lo siguiente

Public InteresAnual as Long

La variable InteresAnual estar disponible en todo el proyecto.

Variables Static
Las variables estticas son un caso especial. Se declaran a nivel de procedimiento y retienen su
valor despus de que el procedimiento finaliza.

147
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Ejemplo:

Sub Ejemplo()
Static Contador As Integer
Contador=Contador+1
Msgbox Contador
End Sub

De esta forma, cada vez que se ejecuta el procedimiento Ejemplo, la variable Contador
se incrementa en 1

Las instrucciones

Una unidad sintcticamente completa que expresa un tipo de accin, declaracin o definicin.
Normalmente una instruccin tiene una sola lnea aunque es posible utilizar dos puntos (:)
para poner ms de una instruccin en una lnea. Tambin se puede utilizar un carcter de
continuacin de lnea (_) para continuar una sola lnea lgica en una segunda lnea fsica.

Ejemplo:

Sueldo= MontoHorasTrab*100 : Descuento=Sueldo*0.1 : Neto= Sueldo-Descuento

Aqu se tiene una lnea que maneja 3 instrucciones (separadas por : )que tambin se pudieron
codificar as:

Sueldo= MontoHorasTrab*100
Descuento=Sueldo*0.1
Neto= Sueldo-Descuento

Trabajar con cadenas

Existen dos tipos de cadenas en VBA:


Cadenas de longitud fija, que se declaran con un nmero especfico de caracteres.
La mxima longitud es de 65.536 caracteres.
Cadenas de longitud variable, que tericamente pueden tener hasta 2.000
millones de caracteres.

Dim MiCadena As String * 50


Dim SuCadena As String

TRABAJAR CON FECHAS


Es muy comn el hecho de trabajar con fechas. Para esto las variables se definen como de tipo
Date y sus valores se asignan de la siguiente forma:

Dim FechaInicio As Date


Dim HoraInicio As Date
FechaInicio As Date = #1/1/2012#
HoraInicio As date = #12:00:00#
Operadores aritmticos

148
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

+ Suma, - Resta, * Multiplicacin, / Divisin, \ Divisin entera,


Mod Resto, ^ exponencial, & Concatenacin

Operadores comparativos
= Igual, < Menor, > Mayor, <= Menor o igual, >= Mayor o
igual, <> Distinto

Operadores lgicos
Not (negacin lgica, And (conjuncin lgica), Or (disyuncin
lgica), XoR (exclusin lgica), Eqv (equivalencia en dos
expresiones), Imp (implicacin lgica)

Las expresiones de asignacin

Una expresin de asignacin es una instruccin de VBA que realiza evaluaciones matemticas y
asigna el resultado a una variable o aun objeto. VBA usa el signo igual = como operador de
asignacin.

Ejemplos:

x=1
x=x+1
x = (y * 2) / (z * 2)
FileOpen = true
Range(Ao). Value = 1995

Variables de objeto

Una variable de objeto es una variable que representa un objeto entero, como puede ser un
rango o una hoja de clculo. Se declaran con DIM o PUBLIC dependiendo de su mbito de
accin. Las variables de objeto son importantes por dos razones:

Pueden simplificar el cdigo


Pueden hacer que el cdigo se ejecute ms de prisa.

Para ver como simplifican el cdigo, veamos un ejemplo sin usar variables de objeto:

Sub VarSinObj();
Worksheets(Hoja1).Range(A1).Value = 124
Worksheets(Hoja1).Range(A1).Font.Bold = True
Worksheets(Hoja1).Range(A1).Font. Italic = True
End Sub

Esta rutina introduce un valor en la celda A1 de la HOJA1, del libro de trabajo activo,
y despus aplica Negrita y cursiva a su contenido. Para reducir el cdigo se puede condensar la
rutina con una variable de objeto.

149
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Sub VarObj();
Dim MiCelda As Range
Set Micelda = Worksheets(Hoja1).Range(A1)
MiCelda.Value = 124
MiCelda.Font.Bold = True
MiCelda.Font. Italic = True
End Sub

LABORATORIOS DESARROLLADOS

Laboratorio 1:
Empleo de las funciones MsgBox e InputBox

La funcin MsgBox

Nos permite enviar mensajes personalizados mediante un cuadro de dialogo.

La funcin InputBox

Nos permite el ingreso de datos mediante un cuadro de dialogo donde dicho datos ser
almacenado en una variable

Paso 1:

Iniciar un nuevo libro Excel


Renombre a la Hoja1 como Saludos
Dirjase al Editor VBA
Desde su ventana del explorador de proyectos seleccione la hoja Saludos
codifique los siguientes procedimientos

Sub Saludar()
Msgbox (Bienvenido a Excel)
End Sub

Sub Saludar2()
Dim strNombre as String
strNombre =InputBox(Ingrese su nombre, Mensaje)
Msgbox (Bienvenido a Excel amigo(a) & strNombre)
End Sub

Paso 2:

Salga del editor VBA


En la hoja Saludos dibuje 2 botones desde el conjunto de controles de
formulario y asigne cada botn a la macro respectiva (guiarse por el texto de
cada botn en la siguiente figura):

150
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 3:

Grabe el libro con el nombre Demo01_Variables , como libro Excel habilitado


para macros
Haga clic en cada botn y compruebe la ejecucin de cada macro y analice el
comportamiento de las funciones MsgBox e InputBox

Laboratorio 2:
El objetivo de este laboratorio es comprender el tema de declaracin de variables y
su mbito de accin

Paso 1:

En su mismo libro Demo01_Variables renombre la hoja2 como


DemoVariables1 y la hoja3 como DemoVariables2
Dirjase al Editor VBA
Desde su ventana del explorador de proyectos seleccione la hoja
DemoVariables1 y codifique los siguientes procedimientos:

Dim valor3 As Integer


Sub Local1()
Dim valor1 As Integer
valor1 = 100
MsgBox "En el procedimiento Local1 la variable valor1 vale: " & valor1
MsgBox "En el procedimiento Local1 la variable valor2 vale: " & valor2
MsgBox "En el procedimiento Local1 la variable valor3 vale: " & valor3
End Sub
Sub Local2()
Dim valor2 As Integer
valor2 = 200
MsgBox "En el procedimiento Local2 la variable valor1 vale: " & valor1
MsgBox "En el procedimiento Local2 la variable valor2 vale: " & valor2
MsgBox "En el procedimiento Local2 la variable valor3 vale: " & valor3
End Sub
Sub EjemModulo1()
valor3 = InputBox("Ingrese valor de la variable Valor3", "Mensaje")
MsgBox "En el procedimiento EjemModulo1 la variable valor3 multiplicada por 10 es:" & valor3 * 10
End Sub
Sub EjemModulo2()
MsgBox "En el procedimiento EjemModulo2 la variable valor3 multiplicada por 20 es:" & valor3 * 20
End Sub

Sub EjemploVarPublica1()
nombrePublico = "Jose Leon"

151
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

MsgBox "La variable publica llamada nombrePublico en la hoja DemoVariables1 vale: " & nombrePublico
' Vamos a la hoja Demovariables1 a verificar si la variable nombrePublico es reconocida en esa hoja
Sheets("DemoVariables2").Select
End Sub

Paso 2:
Salga del editor VBA y en la hoja DemoVariables1 dibuje los siguientes botones de
formulario y asgnelos a las macros segn se indica:

Macro Local1 Macro Local2

Macro
Macro
EjemModulo2
EjemModulo1

Macro
EjemploVarPublica1

Paso 3:
Vuelva al editor VBA y seleccione la hoja DemoVariables2
Codifique lo siguiente

Sub EjemploVarPublica2()
MsgBox "La variable publica llamada nombrePublico en la hoja DemoVariables2 vale: " & nombrePublico
' Regresamos a la hoja Demovariables1
Sheets("DemoVariables1").Select
End Sub

Paso 4:
Salga del editor VBA y en la hoja DemoVariables2 dibuje un botn y asgnelo a la
macro que acaba de escribir

152
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 5:
Seleccione la hoja DemoVariables1 y pruebe los botones respectivos y analice los resultados
con su instructor

Laboratorio 3
El objetivo de este laboratorio es comprender el manejo de expresiones matemticas como
contadores y acumuladores

Paso 1:

Inicie un libro Excel y grbelo con el nombre Demo02_Expresiones como libro


Excel habilitado para macros
Ingrese al editor del VBA y seleccione la hoja1, codificando los siguientes
procedimientos

Dim y As Single
Dim acum As Single
Dim valor As Single
Dim cuenta As Integer
Dim promedio As Single

Sub Contador1()
'Contador con variable estatica
Static x As Single
x=x+1
Range("B1").Value = x
End Sub

Sub Contador2()
'Contador con variable de modulo
y=y+1
Range("B2").Value = y
End Sub

Sub Acumulador()
'Acumula los valores ingresados y los muestra en la celda B3
valor = InputBox("Ingresa valor")
cuenta = cuenta + 1
acum = acum + valor
Range("B3").Value = acum
End Sub

Sub MostrarPromedio()
' Toma los valores de acum y cuenta dle procedimiento Acumulador y obtiene el promedio de
los
' valores ingresados y lo muestra en la celda B4
promedio = acum / cuenta
Range("B4").Value = promedio
End Sub

153
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2:
Salga del editor VBA y en la hoja1 ingrese los datos que se muestran a
continuacin (desde la celda A1) y dibuje los siguientes botones de formulario,
asignando a cada uno de ellos la macro segn corresponda al texto de cada botn
mostrado en la siguiente figura:

Paso 3:
Haga clic sucesivamente en los botones Contador1 y Contador2 y observe lo que
se asigna en las celdas B1 y B2.
Ahora pruebe el botn Acumulador ingresando la siguiente secuencia de valores:
10,20, 30, 40 y 50. Observe lo asignado en la celda B3
Por ltimo haga clic en el botn Mostrar Promedio y observe como se calcula el
promedio de la serie ingresada desde el botn Acumulador en la celda B4.
Grabe el libro y cirrelo.

EJERCICIOS PRCTICOS

Ejercicio 1:
El objetivo de este ejercicio es comprender como el usuario puede crear sus propias funciones
y emplearlas en las formulas en su hoja de trabajo, como si fueran las funciones propias de
Excel

Paso 1:

Inicie un nuevo libro Excel y grbelo como libro de Excel habilitado para macros
con el nombre Demo03_Funciones.
Ingrese al editor VBA y desde su ventana del Explorador de Proyectos agregue
un modulo, tal como se muestra a continuacin (el modulo se llamara Modulo1)

154
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 3:
En la ventana de cdigo del Modulo1 codifique las siguientes funciones

Public Function ConvertirADolares(tipoCambio As Single, monto As Single) As Single


ConvertirADolares = monto / tipoCambio
End Function

Public Function ConvertirASoles(tipoCambio As Single, monto As Single) As Single


ConvertirASoles = monto * tipoCambio
End Function

Public Function CalcularComision(ventas As Single, porcom As Single) As Single


CalcularComision = ventas * porcom
End Function

Public Function ConvertirAQuintales(peso As Single) As Single


ConvertirAQuintales = peso / 46
End Function

Paso 4:
Salga del editor de VBA
En la Hoja1 ingrese los datos mostrados en la siguiente figura:

155
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

En las celdas de resultados (B5, B10, E5 y E10) aplique las respectivas funciones
para obtener los resultados que se muestran. Si desea puede emplear el asistente
de funciones y ubique las funciones en la categora Funciones del usuario

Ejercicio 2:

El objetivo de este ejercicio es el modelo de objetos de Excel y como en base a ellos crear
macros que automaticen procesos cotidianos de Excel como crear nuevos libros, ordenar las
hojas, proteger celdas, etc,

Recursos:

Abra el libro Excel Demo04_ObjetosExcel (entregada como parte de su material de estudio) y


en la ventana de cdigo del VBA revise las macros creadas all y compruebe su funcionamiento
en cada caso.

Saque sus propias conclusiones y haga un breve debate en la siguiente clase junto a sus
compaeros e instructor.

156
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

C. SESIONES 3 Y 4
TEMARIO
Estructuras Secuenciales
Estructuras Condicionales
Estructuras Repetitivas o de Bucle
Ejercitacin
IMPORTANCIA

En la presente sesin revisaremos las diferentes estructuras de programacin del lenguaje


VBA, de tal forma de poder elaborar macros ms complejas y personalizadas.

Las estructuras de programacin le permiten controlar el flujo de ejecucin del programa.


Tenemos tres tipos de estructuras de programacin:

Estructuras Secuenciales
Estructuras Condicionales
Estructuras Repetitivas o de Bucle

CONTENIDO DESARROLLADO

a. Estructuras Secuenciales

Son las que ejecutan todas sus instrucciones de principio a fin, es decir no se queda sin ejecutar
ninguna instruccin de la estructura.

Ejemplo

Sub Calcular1()

'Declaracion de variables

Dim nota1 As Integer

Dim nota2 As Integer

Dim nota3 As Integer

Dim promedio As Single

'Asignamos los valores desde las celdas

'La propiedad value obtiene el valor de la celda

nota1 = Range("B3").Value

nota2 = Range("B4").Value

nota3 = Range("B5").Value

157
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

'Calculamos y mostramos el promedio

promedio = (nota1 + nota2 + nota3) / 3

Range("B6").Value = promedio

End Sub

b. Estructuras de Decisin

Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los


resultados, realizar diferentes operaciones. Entre las estructuras de decisin que acepta VBA
se incluyen las siguientes:

If...Then
If...Then...Else
Select Case

Estructura If...Then

Use la estructura If...Then para ejecutar una o ms instrucciones basadas en una condicin.
Puede utilizar la sintaxis de una lnea o un bloque de varias lneas:

Forma A
If condicin Then

Sentencias

Forma B
If condicin Then

Sentencias

End If

Condicin normalmente es una comparacin, pero puede ser cualquier expresin que d como
resultado un valor numrico. Visual Basic interpreta este valor como True o False; un valor
numrico cero es False y se considera True cualquier valor numrico distinto de cero. Si
condicin es True, Visual Basic ejecuta todas las sentencias que siguen a la palabra clave Then.
Puede utilizar sintaxis de una lnea o de varias lneas para ejecutar una sentencia basada en
una condicin, los siguientes dos ejemplos son equivalentes:

If Range(A5).Value>=1000 Then

Range(A6).Value= 200

End If

158
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

If CualquierFecha < Now Then

CualquierFecha = Now

btnGrabar.Enabled = False Desactiva el botn Grabar.

End If

Estructura If...Then...Else

Utilice un bloque If...The...Else para definir varios bloques de sentencias, uno de los cuales se
ejecutar:

If condicin1 Then

[bloque de sentencias 1]

[ElseIf condicin2 Then

[bloque de sentencias 2]] ...

[Else

[bloque de sentencias n]]

End If

Visual Basic evala primero condicin1. Si es False, Visual Basic procede a evaluar condicin2 y
as sucesivamente, hasta que encuentre una condicin True. Cuando encuentra una condicin
True, Visual Basic ejecuta el bloque de instrucciones correspondientes y despus ejecuta el
cdigo que sigue a End If. Opcionalmente, puede incluir un bloque de instrucciones Else, que
Visual Basic ejecutar sin ninguna de las condiciones es True. If...Then...ElseIf es un caso
especial de If...Then...Else. Observe que puede tener cualquier nmero de clusula ElseIf o
ninguna. Puede incluir una clusula Else sin tener en cuenta si tiene o no clusula ElseIf.

Por ejemplo, la aplicacin podra realizar distintas acciones dependiendo del control en que se
haya hecho clic de una matriz de controles de men:

Private Sub mnuCut_Click (Index As Integer)

If Index = 0 Then Comando Cortar

CopyActiveControl Llama a procedimientos generales

ClearActiveControl

ElseIf Index = 1 Then Comando Copiar

159
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

CopyActiveControl
ElseIf Index = 2 Then Comando Borrar
ClearActiveControl

Else Comando Pegar

PasteActiveControl

End If

End Sub

Veamos otro ejemplo:

Private Sub DeterminaCondicin ( )

If Val (txtPromedio) >=13 Then

txtCondicin = Aprobado

ElseIf Val (txtPromedio) >= 10 Then

txtCondicin = Asistente

Else

txtCondicin = Desaprobado

End If

End Sub

Observe que siempre puede agregar ms clusulas ElseIf a la estructura If...Then. Sin embargo,
esta sintaxis puede resultar tediosa de escribir cuando cada ElseIf compara la misma expresin
con un valor distinto. Para estas situaciones, puede utilizar la estructura de decisin Select
Case.

Estructura Select Case

Visual Basic proporciona la estructura Select Case como alternativa a If...Then...Else para
ejecutar selectivamente un bloque de sentencias entre varios bloques. La sentencia Select
Case ofrece posibilidades similares a la instruccin If...Then...Else, pero hace que el cdigo sea
ms legible cuando hay varias opciones.
La estructura Select Case funciona con una nica expresin de prueba que se evala una vez
solamente, al principio de la estructura. Visual Basic compara el resultado de esta expresin
con los valores de cada Case de la estructura. Si hay una coincidencia, ejecuta el bloque de
sentencias asociado a ese Case:

160
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Select Case expresin_prueba

[Case lista_expresiones1

[bloque de sentencias 1]]

[Case lista_expresiones2

[bloque de sentencias 2]]

[Case Else

[bloque de sentencias n]]

End Select
Cada lista_expresiones es una lista de uno a ms valores. Si hay ms de un valor en una lista, se
separan los valores con comas. Cada bloque de sentencias contiene cero o ms instrucciones.
Si ms de un Case coincide con la expresin de prueba, slo se ejecutar el bloque de
instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las instrucciones de la
clusula (opcional) Case Else si ningn valor de la lista de expresiones coincide con la expresin
de prueba.

Por ejemplo, suponga que agrega otro comando al men Edicin en el ejemplo If...Then...Else.
Podra agregar otra clusula ElseIf o podra escribir la funcin con Select Case:

Select Case Range(B5).Value

Case A

Range(C5).Value=1000

Case B

Range(C5).Value=1500

Case C

Range(C5).Value=2000

Case D

Range(C5).Value=3000

Case Else

Range(C5).Value=5000

End Select

161
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Observe que la estructura Select Case evala una expresin cada vez que al principio de la
estructura. Por el contrario, la estructura If...Then...Else puede evaluar una expresin diferente
en cada sentencia ElseIf. Slo puede sustituir una estructura If...Then...Else con una estructura
Select Case si la instruccin If y cada instruccin ElseIf evala la misma expresin.

Otros Ejemplos

a) Si las ventas (en la celda B2) son mayores a 10000 soles aplique un descuento de 10 % , si
son mayores a 5000 y menores a 10000 aplique el 5% de lo contrario aplique el 2%. Los
porcentajes son con respecto al monto de ventas y debe mostrarlo en la celda B3

Solucin:

If Range(B2).Value > 100000 Then

Range(B3).Value= Range(B2).Value* 0.1

ElseIf Ventas > 50000 Then

Range(B3).Value= Range(B2).Value* 0.05

Else

Range(B3).Value= Range(B2).Value* 0.02

End If

b) Si la cantidad vendida asignada a la variable intCantidad es 1 no existe descuento. Si es 2 0 3


unidades se aplica el 5% de descuento; de 4 a 6 unidades el 10% pero si excede a las 6
unidades se aplica el 20% .El porcentaje de descuento lo puede asignar a la variable dblDscto

Solucin:
Select Case intCantidad

Case 1

dblDscto = 0.0

Case 2, 3

dblDscto = 0.05

Case 4 To 6

dblDscto = 0.10

Case Else

dblDscto = 0.20

End Select

162
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

c. Estructuras de Repeticin

Las estructuras de repeticin o bucle le permiten ejecutar una o ms lneas de cdigo


repetidamente. Las estructuras de repeticin que acepta Visual Basic son:

Do...Loop
For...Next
For Each...Next

Estructura Do...Loop

Utilice el bucle Do para ejecutar un bloque de sentencias un nmero indefinido de veces. Hay
algunas variantes en la sentencia Do...Loop, pero cada una evala una condicin numrica
para determinar si contina la ejecucin. Como ocurre con If...Then, la condicin debe ser un
valor o una expresin que d como resultado False (cero) o True (distinto de cero).

En el siguiente ejemplo de Do...Loop, las sentencias se ejecutan siempre y cuando condicin


sea True:

Do While condicin

Sentencias

Loop

Cuando Visual Basic ejecuta este bucle Do, primero evala condicin. Si condicin es False
(cero), se salta todas las sentencias. Si es True (distinto de cero) Visual Basic ejecuta las
sentencias, vuelve a la instruccin Do While y prueba la condicin de nuevo.

Por tanto, el bucle se puede ejecutar cualquier nmero de veces, siempre y cuando condicin
sea distinta de cero o True. Nunca se ejecutan las sentencias si condicin es False
inicialmente. Por ejemplo, este procedimiento solicita valores mientras que el valor ingresado
sea mayor que cero

Dim valor, contador

valor=InputBox(Ingrese valor,Mensaje)

Do While valor>0

contador = contador + 1

valor=InputBox(Ingrese valor,Mensaje)

Loop

MsgBox (La cantidad de valores ingresados fue: & contador)

163
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Otra variante de la instruccin Do...Loop ejecuta las sentencias primero y prueba la condicin
despus de cada ejecucin. Esta variacin garantiza al menos una ejecucin de sentencias:

Do

Sentencias

Loop While condicin

Hay otras dos variantes anlogas a las dos anteriores, excepto en que repiten el bucle siempre
y cuando condicin sea False en vez de True.

Hace el bucle cero o ms veces Hace el bucle al menos una vez

Do Until condicin Do

Sentencias Sentencias

Loop Loop Until condicin

Por ejemplo el siguiente cdigo solicitara un valor hasta que el valor ingresado sea igual a cero

valor = 0

Do

valor = InputBox("Ingrese valor", "Mensaje")

Loop Until valor = 0

Estructura For...Next

Los bucles Do funcionan bien cuando no se sabe cuntas veces se necesitar ejecutar las
sentencias del bucle. Sin embargo, cuando se sabe que se va a ejecutar las sentencias un
nmero determinado de veces, es mejor elegir el bucle For...Next. A diferencia del bucle Do, el
bucle For utiliza una variable llamada contador que incrementa o reduce su valor en cada
repeticin del bucle. La sintaxis es la siguiente:

For contador = iniciar To finalizar [Step incremento]

Sentencias

Next [contador]

164
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Los argumentos contador, iniciar, finalizar e incremento son todos numricos.

Nota: El argumento incremento puede ser positivo o negativo. Si incremento es positivo,


iniciar debe ser menor o igual que finalizar o no se ejecutarn las sentencias del bucle. Si
incremento es negativo, iniciar debe ser mayor o igual que finalizar para que se ejecute el
cuerpo del bucle. Si no se establece Step, el valor predeterminado de incremento es 1.

Al ejecutar el bucle For, Visual Basic:

Establece contador al mismo valor que iniciar.


Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale del bucle.
(Si incremento es negativo, Visual Basic comprueba si contador es menor que
finalizar.)
Ejecuta las sentencias.
Incrementa contador en 1 o en incremento, si se especific.
Repite los pasos 2 a 4.

Este cdigo imprime mediante MsgBox los nmeros del 0 al 100 :

Dim i As Integer

For i = 0 To 100

Msgbox (i)

Next

Este cdigo imprime mediante MsgBox los nmeros pares del 0 al 100 :

Dim i As Integer

For i = 0 To 100 step 2

Msgbox (i)

Next

Estructura For Each...Next

El bucle For Each...Next es similar al bucle For...Next, pero repite un grupo de sentencia por
cada elemento de una coleccin de objetos o de una matriz en vez de repetir las sentencias un
nmero especificado de veces. Esto resulta especialmente til si no se sabe cuntos elementos
hay en la coleccin. He aqu la sintaxis del bucle For Each...Next:

165
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

For Each elemento In grupo

Sentencias

Next elemento

Por ejemplo, el siguiente procedimiento evala cada celda de un rango seleccionado y si la


celda tiene un valor mayor que 12 la pinta de color azul, de lo contrario la pinta de color rojo.

For Each cell In Selection

If cell.Value > 12 Then

cell.Font.Color = vbBlue

Else

cell.Font.Color = vbRed

End If

Next

El siguiente ejemplo habilita todos los Cuadro de Texto de un formulario :

Private Sub ModoEdicin ( )

Dim control

For Each control In form1.Controls

If TypeOf control Is TextBox Then

Control.Enabled = True

End If

Next control

End Sub

166
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Salida de una Estructura de Control

La instruccin Exit le permite salir directamente de un bucle For o de un bucle Do. La sintaxis
de la sentencia Exit es sencilla: Exit For puede aparecer tantas veces como sea necesario
dentro de un bucle For y Exit Do puede aparecer tantas veces como sea necesario dentro de
un bucle Do:

For contador = iniciar To finalizar [Step incremento]

[bloque sentencias]

[Exit For]

[bloque sentencias]

Next [contador]

Do [{While / Until} condicin]

[bloque de sentencias]

[Exit Do]

[bloque de sentencias]

Loop

Do

[bloque de sentencias]

[Exit Do]

[bloque de sentencias]

Loop [{While / Until} condicin]

Exit For y Exit Do son muy tiles ya que, algunas veces, resulta apropiado salir inmediatamente
de un bucle sin realizar ms iteraciones o sentencias dentro del bucle.Cuando utilice la
instruccin Exit para salir de un bucle, el valor de la variable contador difiere, dependiendo de
cmo haya salido del bucle:

167
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Cuando termina un bucle, la variable contador contiene el valor del lmite superior ms el
paso.

Cuando sale de un bucle prematuramente, la variable contador conserva su valor segn las
reglas usuales del alcance.

Cuando sale antes del final de una coleccin, la variable contador contiene Nothing si se trata
de un tipo de dato Object y Empty si es un tipo de dato Variant.

CONTROL DE ERRORES DE EJECUCIN


Los errores de ejecucin de tipo externo suelen interrumpir de form sbita la ejecucin
normal del programa. Dependiendo del tipo de error, o bien VBA o bien Windows mostrarn
un mensaje de error que no siempre ser comprensible para el usuario. Veremos ejemplos de
cmo hacer que nuestro programa controle estos errores sin terminar de forma anormal y
generando nuestros propios mensajes de error para el usuario.

Ejemplo:

Sub Calcular()
On Error GoTo Problemas
Dim Precio as Single
Dim Cantidad as Integer
Dim Total as Single
Precio=InputBox (Ingrese el precio del producto:,Ingreso)
Cantidad=InputBox (Ingrese la cantidad pedida del producto:,Ingreso)
Total = Cantidad*Precio
Msgbox El total del pedido es: & Total
Exit Sub
Problemas:
MsgBox Error, operacin cancelada por: & err.Message
EndSub

La etiqueta Problemas se ejecutara solo en caso de darse un error, como por ejemplo se
ingrese un valor tipo cadena (por ejemplo Pepe) como precio o cantidad. Si se da ese caso,
el programa no se cortara abruptamente , sino que deriva el control a la etiqueta ya indicada y
enva un mensaje indicando el motivo del error.

LABORATORIOS DESARROLLADOS

Laboratorio 1:

El objetivo de este laboratorio es comprender las estructuras secuenciales

Paso 1

Abrir el libro Demo_Estructuras, entregado como parte de su material de trabajo


Desde el editor VBA seleccione la Hoja1 y codifique las siguientes lneas:

168
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Sub Calcular1()

'Declaracion de variables

Dim nota1 As Integer

Dim nota2 As Integer

Dim nota3 As Integer

Dim promedio As Single

'Asignamos los valores desde las celdas

'value obtiene el valor de la celda

nota1 = Range("B3").Value

nota2 = Range("B4").Value

nota3 = Range("B5").Value

'Calculamos y mostramos el promedio

promedio = (nota1 + nota2 + nota3) / 3

Range("B6").Value = promedio

End Sub

Sub Calcular2()

'Declaracion de variables

Dim nota1 As Integer

Dim nota2 As Integer

Dim nota3 As Integer

Dim promedio As Single

'Asignamos los valores desde las celdas

'value obtiene el valor de la celda

nota1 = Range("B10").Value

nota2 = Range("B11").Value

169
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

nota3 = Range("B12").Value

'Calculamos y mostramos el promedio

promedio = (nota1 * 2 + nota2 + nota3 * 3) / 6

Range("B13").Value = promedio

End Sub

Sub Calcular3()

Dim duracion As Single

Dim tarifa As Single

Dim importe As Single

duracion = Range("B18").Value

tarifa = Range("B19").Value

importe = duracion * tarifa

Range("B20").Value = importe

End Sub

Paso 2:

Salga del editor VBA. En la hoja Excel Hoja1, coloque 3 botones y asgnelos a cada
una de las macros creadas en el paso anterior
Pruebe cada una de las mismas con los datos de prueba que figuran en la hoja.

Laboratorio 2:

El objetivo de este laboratorio es comprender las estructuras condicionales con


If..Else..Endif

Paso 1

En el mismo libro Demo_Estructuras, desde el editor VBA seleccione la Hoja2 y


codifique las siguientes lneas:

Sub CalcularPromedio1()
'Declaracion de variables
Dim nota1 As Integer
Dim nota2 As Integer

170
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Dim nota3 As Integer


Dim promedio As Single

'Asignamos los valores desde las celdas


'value obtiene el valor de la celda
nota1 = Range("B3").Value
nota2 = Range("B4").Value
nota3 = Range("B5").Value

'Calculamos y mostramos el promedio


promedio = (nota1 + nota2 + nota3) / 3
Range("B6").Value = promedio

'Evaluamos el promedio para enviar mensaje


If promedio > 18 Then
MsgBox ("Becado")
End If
End Sub

Sub CalcularPromedio2()
'Declaracion de variables
Dim nota1 As Integer
Dim nota2 As Integer
Dim nota3 As Integer
Dim promedio As Single

'Asignamos los valores desde las celdas


'value obtiene el valor de la celda
nota1 = Range("B10").Value
nota2 = Range("B11").Value
nota3 = Range("B12").Value

'Calculamos y mostramos el promedio


promedio = (nota1 * 2 + nota2 + nota3 * 3) / 6
Range("B13").Value = promedio

'Evaluamos promedio
If promedio > 16 Then
Range("B14").Value = ("Becado")
Else
Range("B14").Value = ("Estudia mas")
End If
End Sub

Sub CalcularPromedio3()

171
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

'Declaracion de variables
Dim nota1 As Integer
Dim nota2 As Integer
Dim nota3 As Integer
Dim promedio As Single

'Asignamos los valores desde las celdas


'value obtiene el valor de la celda
nota1 = Range("B18").Value
nota2 = Range("B19").Value
nota3 = Range("B20").Value

'Calculamos y mostramos el promedio


promedio = (nota1 * 2 + nota2 + nota3 * 3) / 6
Range("B21").Value = promedio

'Evaluamos promedio
If promedio <= 10 Then
Range("B22").Value = ("Nivel Bajo")
Else
If promedio <= 15 Then
Range("B22").Value = ("Regular")
Else
Range("B22").Value = ("Bueno")
End If

End If
End Sub

Paso 2:

Salga del editor VBA. En la hoja Excel Hoja2, coloque 3 botones y asgnelos a cada
una de las macros creadas en el paso anterior
Pruebe cada una de las mismas con los datos de prueba que figuran en la hoja.

Laboratorio 3:

El objetivo de este laboratorio es comprender las estructuras condicionales mediante


la resolucin de una planilla.

172
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 1

En el mismo libro Demo_Estructuras, entregado como parte de su material de


trabajo dirjase al editor VBA y seleccione la Hoja3. Codifique las siguientes lneas:

Sub CalcularPlanilla()
'Declaramos las variables de trabajo
Dim sueldo As Single
Dim tipo As String
Dim Hextras As Integer
Dim tardanzas As Integer
Dim neto As Single
Dim MontoHE As Single 'dsctos por HE
Dim montotar As Single 'dsctos por tardanzas

'Asignando datos
sueldo = Range("B3").Value
tipo = Range("B4").Value
Hextras = Range("B5").Value
tardanzas = Range("B6").Value

'Evaluamos el tipo
If tipo = "E" Then
MontoHE = 50 * Hextras
If tardanzas > 10 Then
montotar = sueldo * 0.1
Else
montotar = 0
End If
Else
MontoHE = 30 * Hextras
If tardanzas > 0 Then
montotar = sueldo * 0.08
Else
montotar = 0
End If
End If

'Calculamos el neto
neto = sueldo + MontoHE - montotar
Range("B7").Value = neto
'Se aplica formato de moneda
Range("B7").NumberFormat = "$ #,##0.00"
End Sub

173
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2:

Salga del editor VBA. En la hoja Excel Hoja3, coloque un botn y asgnelo a la
macro creada en el paso anterior
Pruebe la macro con los datos de prueba que figuran en la hoja.

Laboratorio 3:

El objetivo de este laboratorio es comprender las estructuras condicionales con la


estructura Select ..End Select

Paso 1

Continuando en el libro Demo_Estructuras, agregue una hoja (Hoja4) y desde el


editor VBA seleccione la agregada y codifique las siguientes lneas:

Sub CalcularBonificacion()
Dim categoria As String
Dim bonificacion As Single
' Calculando
If Range("F4").Value = "" Then
MsgBox ("Debe ingresar una categoria")
Range("F5").Value = ""
Else
categoria = UCase(Range("F4").Value)
Select Case categoria
Case "A"
bonificacion = 100
Case "B"
bonificacion = 200
Case "C"
bonificacion = 300
Case "D"
bonificacion = 400
Case "E"
bonificacion = 500
Case "F"
bonificacion = 600
Case Else
bonificacion = 800
End Select
Range("F4").Value = categoria ' Para convertir la celda a mayuscula
Range("F5").Value = bonificacion
End If
End Sub

174
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Sub CalcularComision()
Dim monto As Single
Dim comision As Single
monto = Range("F17").Value
If monto < 0 Then
MsgBox ("El monto no puede ser negativo")
Range("F18").Value = ""
Else
'Calculando comision segun el monto
Select Case monto
Case Is <= 100
comision = monto * 0.02
Case Is <= 500
comision = monto * 0.05
Case Is <= 1000
comision = monto * 0.1
Case Is <= 2000
comision = monto * 0.15
Case Else
comision = monto * 0.18
End Select
Range("F18").Value = comision
End If
End Sub

Paso 2:

Salga del editor VBA. En la hoja Excel Hoja4, coloque 2 botones y asgnelos a cada
una de las macros creadas en el paso anterior
Pruebe cada una de las mismas con los datos de prueba que figuran en la hoja.

Laboratorio 5:

El objetivo de este laboratorio es comprender las estructuras repetitivas con las


estructuras For-Next, Do While y Do Until

Paso 1

Continuando en el libro Demo_Estructuras, agregue una hoja (Hoja5) y desde el


editor VBA seleccione la agregada y codifique las siguientes lneas:

175
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Sub DoUntil()
Dim numero As Integer
'solicito el nro desde input box
numero = InputBox("Ingrese numero")
Do Until numero = 0
numero = InputBox("Ingrese numero")
Loop
End Sub

Sub DoWhile()
Dim numero As Integer
'solicito el nro desde input box
numero = InputBox("Ingrese numero")
Do While numero <> 0
numero = InputBox("Ingrese numero")
Loop

End Sub

Sub ForNext()
Dim numero As Integer
For numero = 1 To 10
MsgBox (" El valor es: " & numero)
Next numero

End Sub

Sub ForNext2()
Dim numero As Integer
For numero = 10 To 0 Step -1 'step negativo
MsgBox (numero)
Next numero

End Sub

Sub Suma100()
'Variables
Dim numero As Integer
Dim suma As Integer
Dim fila As Integer
fila = 30
'Suma e impresion de los primeros 100 numeros
For numero = 1 To 100
suma = numero + suma
Cells(fila, 2) = numero

176
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

fila = fila + 1
Next numero
MsgBox (suma)

End Sub

Sub ForNext3()
'Variables
Dim desde As Integer
Dim hasta As Integer
Dim incremento As Integer
'Se personaliza el desde , hasta e incremento
desde = Range("F27").Value
hasta = Range("F28").Value
incremento = Range("F29").Value
Dim numero As Integer
For numero = desde To hasta Step incremento
MsgBox (numero)
Next numero
End Sub

Paso 2:

Salga del editor VBA. En la hoja Excel Hoja4, coloque 6 botones y asgnelos a cada
una de las macros creadas en el paso anterior
Pruebe cada una de las mismas.

Laboratorio 6:

El objetivo de este laboratorio es comprender las estructuras repetitivas

Paso 1

Continuando en el libro Demo_Estructuras, agregue una hoja (Hoja6) y desde el


editor VBA seleccione la agregada y codifique las siguientes lneas:

Sub TablaMultiplicar()
'La siguiente macro imprime la tabla con los primeros 12 multiplo de los
'numeros del 1 al 5
Dim valor As Integer
Dim multiplos As Integer
Dim fila As Integer
Dim columna As Integer
fila = 5
columna = 2
For valor = 1 To 5
For multiplos = 1 To 12

177
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Cells(fila, columna) = valor * multiplos


fila = fila + 1
Next multiplos
fila = 5
columna = columna + 1
Next valor
End Sub

Paso 2:

Salga del editor VBA. En la hoja Excel Hoja6, coloque 1 botn y asgnelo a la
macro creadas en el paso anterior
Pruebe la macro y vera una tabla de multiplicar de los primeros 5 numeros.

EJERCICIOS PRCTICOS

Paso 1

Abra su libro Demo_EjerciciosEstructuras y desde el editor VBA seleccione la hoja


llamada Planillas2 y resuelva el siguiente enunciado

DATOS DE ENTRADA (ingresados de acuerdo a las celdas especificadas en su hoja


Planillas2)

SUELDO
AREA ( LEGAL, CONTABILIDAD,INFORMATICA,MARKETING,LOGISTICA)
TIPO DE TRABAJADOR ( ESTABLE O CONTRATADO)
HORAS EXTRAS
TARDANZAS

REGLA DE NEGOCIO HORAS EXTRAS

LEGAL
ESTABLE =20 SOLES
CONTRATADO=15 SOLES
CONTABILIDAD
ESTABLE =50 SOLES
CONTRATADO=35 SOLES
INFORMARTICA
ESTABLE =100 SOLES
CONTRATADO=45 SOLES
MARKETING
ESTABLE =60 SOLES
CONTRATADO=30 SOLES
LOGISTICA

178
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

ESTABLE =70 SOLES


CONTRATADO=35 SOLES

REGLA DE NEGOCIO PARA TARDANZAS

SI SON MAS DE 5 MINUTOS DE TARDANZAS SE APLICA LO SIGUIENTE

LEGAL
3% SUELDO
CONTABILIDAD
4% SUELDO
INFORMARTICA
2.5% SUELDO
MARKETING
1.5% SUELDO
LOGISTICA
2.8% SUELDO

SI LOS MINUTOS DE TARDANZA SON MENORES O IGUALES A 5 EL MONTO POR TARDANZA


SERA IGUAL A 0

DEBERA MOSTRARSE (En las celdas definidas en su plantilla)

MONTO POR HORAS EXTRAS


MONTO POR TARDANZAS
NETO A PAGAR (SUELDO+MONTO HORAS EXTRAS- MONTO POR TARDANZAS)

Solucion:

Sub Planillas2()

'Variables

Dim area As String

Dim tipo As String

Dim sueldo As Single

Dim horas As Single

Dim tardanzas As Single

Dim montotar As Single

Dim montohor As Single

Dim neto As Single

'Se emplea la funcion Ucase (que converte una cadena a mayuscula)

area = UCase(Range("B3").Value)

179
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

tipo = UCase(Range("B4").Value)

sueldo = Range("B5").Value

horas = Range("B6").Value

tardanzas = Range("B7").Value

' Las horas extras depende del estado y el area

'las tardanzas solo del area

Select Case area

Case "LEGAL" ' area Legal

If tipo = "ESTABLE" Then

' estables la hora extra = 20

montohor = horas * 20

Else

' de lo contrario 15

montohor = horas * 15

End If

'tardanzas

If tardanzas > 5 Then

montotar = sueldo * 0.03

Else

montotar = 0

End If

Case "CONTABILIDAD" ' area Contabilidad

' estables la hora extra = 50

If tipo = "ESTABLE" Then

montohor = horas * 50

Else

' de lo contrario 35

montohor = horas * 35

End If

180
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

'tardanzas

If tardanzas > 5 Then

montotar = sueldo * 0.04

Else

montotar = 0

End If

Case "INFORMATICA" ' area Informatica

If tipo = "ESTABLE" Then

' Estables H extra = 100

montohor = horas * 100

Else

' de lo contrario 45

montohor = horas * 45

End If

'tardanzas

If tardanzas > 5 Then

montotar = sueldo * 0.025

Else

montotar = 0

End If

Case "MARKETING" ' area Marketing

' Estables H Extra =60

If tipo = "ESTABLE" Then

montohor = horas * 60

Else

' de lo contrario 30

montohor = horas * 30

End If

'tardanzas

If tardanzas > 5 Then

181
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

montotar = sueldo * 0.015

Else

montotar = 0

End If

Case "LOGISTICA" ' Area Logistica

If tipo = "ESTABLE" Then

' Estables H Extra = 70

montohor = horas * 70

Else

' de lo contrario 35

montohor = horas * 35

End If

'tardanzas

If tardanzas > 5 Then

montotar = sueldo * 0.028

Else

montotar = 0

End If

End Select

' Mostramos el monto por H Extras

Range("B9").Value = montohor

'Se muestra el Monto por tardanzas

Range("B10").Value = montotar

' Se calcula y muestra el Neto a pagar

neto = sueldo + montohor - montotar

Range("B11").Value = neto

'Formato de moneda en el resultado

Range("B9").NumberFormat = "$ #,##0.00"

Range("B10").NumberFormat = "$ #,##0.00"

Range("B11").NumberFormat = "$ #,##0.00"

182
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

End Sub

Para probar el cdigo, dibuje un botn en la hoja Planillas2 y asgnelo a la macro creada.

Ejercicio 2:

En el mismo libro del ejercicio anterior, hoja EjemploFiltro resuelva lo siguiente:

Ingresar desde una ventana InputBox un determinado tipo (1 o 2) y al ingresarlo copie a la hoja
DestinoFiltro todos los registros de la base de datos de la hoja EjemploFiltro que sean del tipo
ingresado. Enve un mensaje con la cantidad de registros copiados.

Solucin:

Sub Filtro()

On Error GoTo Mierror

' declaramos variables

Dim strTipo As String

Dim fila1 As Integer

Dim fila2 As Integer

Dim registros As Integer

' Asignamos valores a las variables de filtro

strTipo = InputBox("Ingresa el tipo", "Ingreso", 1)

' Empezamos a leer la base de datos

fila1 = 5

fila2 = 4

' limpiamos el rango

Range("FiltroTipo").Clear

Sheets("Hoja4").Range("B2").Value = strTipo

Do While Cells(fila1, 1) <> ""

If Cells(fila1, 4).Value = strTipo Then

' si la columna 8 de la fila leida coincide

' con el area seleccionada la copiamos a la hoja 4

fila2 = fila2 + 1

Sheets("Hoja4").Cells(fila2, 1) = Cells(fila1, 1)

Sheets("Hoja4").Cells(fila2, 2) = Cells(fila1, 2)

183
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Sheets("Hoja4").Cells(fila2, 3) = Cells(fila1, 3)

Sheets("Hoja4").Cells(fila2, 4) = Cells(fila1, 4)

Sheets("Hoja4").Cells(fila2, 5) = Cells(fila1, 5)

Sheets("Hoja4").Cells(fila2, 6) = Cells(fila1, 6)

Sheets("Hoja4").Cells(fila2, 7) = Cells(fila1, 7)

Sheets("Hoja4").Cells(fila2, 8) = Cells(fila1, 9)

Sheets("Hoja4").Cells(fila2, 9) = Cells(fila1, 10)

registros = registros + 1

End If

fila1 = fila1 + 1

Loop

MsgBox "Se copiaron : " & registros & " trabajadores"

Sheets("Hoja4").Select

Exit Sub

Mierror:

MsgBox ("Error:" + Err.Description)

End Sub

Para probar el cdigo, dibuje un botn en la hoja EjemploFiltro y asgnelo a la macro creada.

D. SESION 5

TEMARIO
Los UserForm o Formularios del usuario
Los controles

IMPORTANCIA

En esta sesin veremos como por medio el empleo de formularios podemos


elaborar aplicaciones con un mayor grado de interaccin con el usuario as como
conocer los principales controles que podemos incluir en dichos formularios

184
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

CONTENIDO DESARROLLADO
a. UserForms

Un cuadro de dilogo personalizado se genera en un UserForm y se puede acceder a


l con ayuda del Editor de VB. A continuacin se expone la secuencia tpica de fases a realizar
para la creacin de un UserForm:
1) Insertar un UserForm en el libro de trabajo
2) Escribir un procedimiento que despliegue el UserForm Este procedimiento est
localizado en un mdulo de VBA (no en el mdulo de cdigo para el UserForm)
3) Aadir controles al UserForm
4) Ajustar algunas propiedades a los controles aadidos
5) Escribir procedimientos de controlador de evento para los controles. Estos
procedimientos que estn situados en la ventana de cdigo para el UserForm, se
ejecutan cuando ocurren varios eventos (como hacer clic con el ratn en uno de los botones ).

Un Formulario (o su denominacin en ingls Userform) se utiliza para crear un Cuadro de


Dilogo donde el usuario puede introducir informacin, o realizar otras operaciones. Al
ejecutar muchas de las opciones del men de Excel se abren formularios. Por ejemplo, desde
el men Herramientas > Opciones se abre un formulario como el siguiente, desde donde se
pueden activar o desactivar
distintas opciones de Excel.

Este formulario es muy


completo y posee pestaas en
la parte superior, casillas de
seleccin (cuadraditos con
tildes), casillas de opciones
(crculos con un punto dentro) y listas desplegables (lista con una flechita que despliega
distintas opciones).

Tambin podemos
crear nuestros
propios formularios
como se ve a
continuacin.

185
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Pasos para agregar un formulario

Para crear un Userform debemos hacer lo siguiente:

1. Abrir el editor de macros (por ejemplo, con CTRL+F11).

2. Insertar un objeto Userform. Esto podemos hacerlo fcilmente:

2.1 Seleccionamos el Libro Excel donde


trabajaremos

2.2 Hacemos clic derecho en el mismo y


elegimos la opcin Insertar > Userform

2.3 Como se ve en la imagen a continuacin ,


veremos que aparece un objeto Userform1
que cuelga de la carpeta Formularios

3. En la ventana de Cdigo de la derecha, veremos que


aparece un Userform en blanco, sin controles. Para abrir su Cuadro de Herramientas puedes
hacerlo desde el men Ver > Cuadro de Herramientas. Ah figuran los controles que podremos
agregar dentro del Userform. Para aadir uno, simplemente hacemos clic izquierdo en el
control deseado y luego clic izquierdo dentro del Userform, en el sitio donde queramos
agregar el control.

186
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

La idea es que mediante estos controles podremos tanto capturar como enviar informacin o
datos desde o hacia las celdas de Excel respectivamente. Tambin podemos asociar macros a
los controles que agreguemos al Userform (todo esto lo veremos en secciones siguientes).

b. Los Controles

Ahora explicaremos brevemente la utilidad de cada control. Los controles se explican en el


mismo orden que aparecen en el Cuadro de Herramientas y en la figura anterior (de izquierda
a derecha y de arriba hacia abajo).

Explicaremos brevemente cada uno de estos controles

187
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

188
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Haciendo doble clic en cada control se abrir una venta donde podremos escribir y asociarle
una macro. En la seccin siguiente veremos un ejemplo simple sobre como crear un Userform
paso a paso.

Para ver como se veran estos controles dentro del Userform, vamos a crear un Userform que
contiene los 15 controles que se pueden agregar. Los hemos agregado en el mismo orden en
que aparecen en el Cuadro de Herramientas.

Las Propiedades de los Controles

Los controles poseen caractersticas, las cuales se


denominan propiedades, siendo las mas importantes el
nombre, rotulo (Caption), color de fondo y de primer
plano ( BackColor y ForeColor), entre otras.

Para aplicarlas lo puedo hacer seleccionando al control y


haciendo un clic derecho seleccione la opcin
Propiedades, con lo que se mostrara la ventana de
Propiedades del control y desde aqu defina los valores
que requieran cada propiedad.

Dicha ventana s muestra a continuacion

189
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Los procedimientos de evento

Un procedimiento es un conjunto de instrucciones que realiza un trabajo determinado.


Podemos hacer un procedimiento para conectarnos a una base de datos o limpiar un rango de
celdas.

Los controles pueden ser programados para realizar algn trabajo al suscitarse un evento
sobre ellos. Estos son los llamados procedimiento de evento

Los controles pueden programarse bajo muchos eventos, pero de todos estos eventos hay uno
que es el evento por naturaleza del control.

Por ejemplo , en el caso de un botn el evento por naturaleza es el evento Click o en el caso de
las cajas de texto es el evento TextChanged

Para programar el evento por naturaleza del control bastara con hacer doble click sobre el ,
con lo que se abrir la ventana de cdigo con el procedimiento listo para codificarse.

A continuacin mostramos el procedimiento de evento btnCalcular_Click:

Si se desea programar en cualquier otro evento que no sea el evento por defecto, se debe,
desde la ventana de cdigo seleccionar desde el cuadro combinado de controles el control a
programar y desde el cuadro combinado de eventos el evento a programar, todo esto desde el
editor VBA, tal como se muestra a continuacin:

190
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

LABORATORIOS DESARROLLADOS

Laboratorio 1:

El objetivo de este laboratorio es construir un formulario y codificar su funcionalidad

Paso 1:

Inicie un libro Excel y denomnelo Ejem01_Formularios, grabndolo como libro Excel habilitado
para macros
Desde el editor VBA agregue un formulario de la forma ya explicada en este capitulo
Sobre el construya la siguiente pantalla y nombre a los controles asi:

txtNota1

txtNota2

btnPromediar

lblPromedio

191
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Paso 2
En el evento clic del botn btnCalcular codifique lo siquiente:
Dim nota1 As Integer
Dim nota2 As Integer
Dim promedio As Single

nota1 = txtNota1.Text
nota2 = txtNota2.Text

promedio = (nota1 + nota2) / 2


lblPromedio.Caption = promedio

If promedio >= 12.5 Then


lblPromedio.ForeColor = vbBlue
Else
lblPromedio.ForeColor = vbRed
End If

Paso 3:
Salga del editor VBA a la hoja1 de Excel
Inserte un botn de tipo ACTIVE X (no de formulario) en la hoja y nmbrelo
como btnMostrar
Asegurandose que este en tiempo de diseo haga doble clic sobre dicho botn
y vera que vuelve al editor VBA al evento clic del botn. Codifique ahora lo
siguiente

UserForm1.Show

Paso 4:
Vuelva a Excel y salga del modo de diseo y haga cilc sobre el botn colocado
en la Hoja1.
Vera como se lanza el formulario y prubelo ingresando notas y calculando el
promedio

EJERCICIOS PRACTICOS
Revise junto a su instructor el cdigo de los libros Ejemplo02_Registros y
Demo_Filtros para su revisin y saque conclusiones con sus compaeros
mediante un debate.
Amplie la funcionalidad de estos ejercicios segn lo pedido por su instructor

192
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

BS Grupo
Programa: Microsoft Excel
2010 para Expertos
Mdulo II

Instructor :Ing. Jos Len Cabel


Email: pjleon69@gmail.com

SESIN01:

Introduccin a las Macros


Creacin de Macros
automticas con grabadora
Creacin de Macros simples
con programacin

193
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

TEMA 1:

Introduccin a las Macros

1.1 DEFINICIN DE MACRO

El propsito de una macro es automatizar tareas


de uso frecuente. Aunque algunas macros son
simplemente la grabacin de las pulsaciones de
tecla o los clic del mouse (ratn), los
programadores escriben macros de VBA (Visual
Basic para Aplicaciones (VBA), versin del lenguaje
de macros de Microsoft Visual Basic (que
revisaremos con mas detalle en la siguiente
sesin) que se utiliza para programar aplicaciones
basadas en Microsoft Windows y que se incluye en
varios programas de Microsoft.

194
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.2 TIPOS DE MACROS

AUTOMTICAS
Basadas en la grabacin de las acciones
realizadas y la asignacin a objetos.

PROGRAMACIN
Emplear el uso de comandos en Visual
Basic para Aplicaciones (VBA) asignado
su ejecucin a objetos, como un botn
de comando por ejemplo.

TEMA 2:

Macros Automticas

195
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.1 MACROS AUTOMTICAS

Las macros automticas se


caracterizan por la grabacin de las
pulsaciones realizadas por el usuario.

Es posible asignar estas acciones a


un botn o a cualquier otro control
de formularios.

2.2 ACCESO A LA FICHA


PROGRAMADOR

Para tener visible la ficha Programador


en la barra de men de Excel ( en caso
de que no lo este)
Haga clic en el botn Office (parte superior
izquierda de su pantalla , versin 2007)

Haga clic en la ficha Archivos (Versin


2010)

196
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.2 ACCESO A LA FICHA


PROGRAMADOR

Haga clic en
el botn
opciones de
Excel (Excel
2007) o
seleccione el
men
opciones
(Excel2010)

2.2 ACCESO A LA FICHA


PROGRAMADOR
En Excel 2007 aparecer un cuadro de
dialogo, desde el cual , ubicado en la opcin
Mas Frecuentes , marque la casilla en donde
se indica Mostrar ficha Programador
En Excel 2010 haga clic en Opciones y de ah
a la ficha que dice Personalizar Cinta de
Opciones, y haga clic sobre la casilla
Programador
En ambos casos haga clic en Aceptar y ya
vera la ficha Programador en la cinta de
opciones

197
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.3 GRABAR UNA MACRO


AUTOMTICA

Paso 1 El proceso se inicia encendiendo


la grabadora de macros

2.4 DATOS DE LA MACRO


Paso 2: Luego
asigne un nombre
para la macro y
opcionalmente un
mtodo abreviado
y una descripcin

198
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.5 GUARDAR LA MACRO EN:

Libro personal de macros


Al guardar la macro aqu podr
ejecutarla en cualquier momento.

Este libro
Slo podr ejecutar la macro cuando
este el archivo abierto.

2.6 FINALIZACIN DE
CREACIN DE LA MACRO
Paso 3: Realizar todas las acciones que desea incorporar
en la macro como si las estuviera haciendo de manera
interactiva (normal).
Un vez que termine de incluir todos los paso haga clic en
el botn Detener grabacin.
Ha creado su primera macro y esta lista para asignarla a
un control (botn de comando, botn de opcin , etc.)

199
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.7 ELIMINAR MACROS


Es posible eliminar desde la caja de
dialogo tambin usando la interfaz
de VBA.

2.8 SEGURIDAD EN MACROS

OPCIN DESCRIPCIN
Deshabilitar todas Haga clic en esta opcin si no confa en las macros. Todas las
las macros sin macros y alertas de seguridad de los documentos se
notificacin deshabilitan. Si hay documentos con macros sin firmar en las
que s confe, puede poner estos documentos en una ubicacin
de confianza. Los documentos de ubicaciones de confianza se
pueden ejecutar sin la comprobacin del sistema de seguridad
del Centro de confianza.
Deshabilitar todas Esta es la configuracin predeterminada. Haga clic en esta
las macros con opcin si desea deshabilitar las macros, pero desea recibir
notificacin alertas de seguridad si hay macros presentes. De este modo,
puede elegir cundo habilitar esas macros caso por caso.

200
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.8 SEGURIDAD EN MACROS

Opcin Descripcin
Deshabilitar todas las Esta configuracin es igual que Deshabilitar todas las macros con
macros excepto las notificacin excepto en que si la macro est firmada digitalmente por
firmadas un editor de confianza, puede ejecutarse si ya se ha confiado en el
digitalmente editor. De lo contrario, se le notifica. De este modo, puede decidir
habilitar esas macros firmadas o confiar en el editor. Todas las macros
sin firmar se deshabilitan sin notificacin.
Habilitar todas las Haga clic en esta opcin para permitir que se
macros (no
recomendado, puede ejecuten todas las macros. Esta configuracin hace
ejecutarse cdigo que el equipo sea vulnerable a cdigo
posiblemente
peligroso)
posiblemente malintencionado y no se
recomienda.

2.9 GRABAR UN LIBRO CON


MACROS
Cuando se grabe un libro que incluya macros , este
debe grabarse con la opcin Libro de Excel
habilitado para macro, dentro de las opciones de
grabacin, tal como se muestra a continuacin:

201
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

TEMA3:

Creacin de Macros
sencillas con
programacin

3.1 MACROS CON PROGRAMACION:

Aqu el usuario debe emplear cdigo


en VBA para construir la macro.
Eso implica un conocimiento de 3
aspectos importantes:
El manejo de variables y estructuras de
programacin
Manejo de los objetos propios de Excel
(Libros, Hojas, Rangos, Celdas, etc.)

202
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.2 ACCESO AL EDITOR VBA

Para acceder al editor de Visual Basic y


crear nuestras propias macros con cdigo
en VBA haremos clic en el botn con dicho
nombre (primero de la izquierda) con lo
que ingresaremos a la ventana del editor
de VBA

EL EDITOR DE VISUAL BASIC

203
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.3 VENTANA DE CDIGO-


MODULO

3.4 EXAMINADOR DE OBJETOS


Active un mdulo.

En el men Ver, elija Examinador de objetos


(F2

Seleccione el nombre del proyecto o biblioteca


que desea ver en la lista Proyecto/Biblioteca.

Utilice la lista Clases para seleccionar la clase;


utilice la lista Miembros para seleccionar los
miembros especficos de la clase o proyecto.

Vea informacin acerca de la clase o miembro que


seleccion en la seccin Details en la parte
inferior de la ventana.

204
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.5 EXAMINADOR DE OBJETOS

LABORATORIO

Junto a su instructor desarrolle los ejemplos en


destinados para esta sesin

205
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

BS Grupo
Programa: Microsoft Excel
2010 para Expertos
Mdulo II

Instructor :Ing. Jos Len Cabel


Email: pjleon69@gmail.com

SESIN01:

Que es un programa
La Programacin en Excel
Introduccin a la
programacin en VBA

206
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

TEMA1:
Que es un programa?

1.1 QU ES UN PROGRAMA?

Un programa se define como un


conjunto de sentencias ejecutadas
bajo una estructura lgica
secuencial, desarrollada para dar
solucin a un problema determinado.
Las sentencias se dan en un
determinado lenguaje de
programacin, como por ejemplo
Java, Visual Basic, Power Builder, etc.

207
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.2 EJEMPLO DE PROGRAMA

TEMA 2 :
La programacin en Excel

208
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.1 LA PROGRAMACIN EN
EXCEL
En el caso especifico de Excel, el ambiente
de programacin se lleva a cabo en un
dialecto del Visual Basic, denominado
Visual Basic For Application (VBA), que es
el entorno de programacin de la suite de
ofimtica Microsoft Office.
Este dialecto posee casi todas las
caractersticas del Visual Basic, y es lo que
procederemos a manejar en las futuras
sesiones

2.2 VISUAL BASIC VBA

Por ejemplo las macros generadas


por la grabadora de macros han
creado en forma automtica un
cdigo en Visual Basic para
aplicaciones.
Mas adelante veremos como realizar
macros complejas utilizando cdigo
VBA. Por ahora tenemos que
familiarizarnos con el lenguaje

209
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.3 EXAMINADOR DE OBJETOS


Active un mdulo.

En el men Ver, elija Examinador de objetos (F2

Seleccione el nombre del proyecto o biblioteca que


desea ver en la lista Proyecto/Biblioteca.

Utilice la lista Clases para seleccionar la clase;


utilice la lista Miembros para seleccionar los
miembros especficos de la clase o proyecto.

Vea informacin acerca de la clase o miembro que


seleccion en la seccin Details en la parte inferior
de la ventana.

2.3 EXAMINADOR DE OBJETOS

210
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

TEMA 3:
Introduccin a la
programacin en VBA

3.1 LAS VARIABLES

Una variable es un espacio en memoria


donde podemos depositar un dato.
En dicho espacio, podemos cambiar el
valor del dato a almacenar durante la
ejecucin del programa, de ah que su
nombre es precisamente variable.
Durante la ejecucin del programa una
variable puede almacenar diferentes
valores.

211
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.1 LAS VARIABLES


Nombres de variable deben comenzar con
un carcter alfabtico, deben ser nicos
dentro del mismo mbito, no deben
contener ms de 255 caracteres y no
pueden contener un punto o carcter de
declaracin de tipo.
Nombres Validos:
Dim strNombre as String
Dim intNota1 as Integer
Nombres NO Validos
Dim 12Nota as Integer
Dim mi nombre as String

3.2 TIPOS DE DATOS


Cuando se declara una variable, se
debe especificar su tipo de dato ,
vale decir, la naturaleza del dato que
la variable almacenara.
Las variables dentro del programa se
declaran con la sentencia DIM.
Por ejemplo:
Dim nombre as String
Dim nota as Integer
Dim fechaNac as Date

212
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.2 TIPOS DE DATOS


En VBA existen , entre otros, los siguientes tipos
de datos:
String : para cadenas o valores compuestos por
dgitos pero que no son numricos. Por ejemplo
un RUC o DNI
Integer : para valores enteros.
Single :para valores reales.
Date : para fechas
Boolean : para valores lgicos (True o False)
Variant: para cualquier tipo de valor, sino se sabe
de antemano que tipo de dato guardara la
variable.

3.3 ALCANCE DE LAS


VARIABLES
Publicas
La instruccin Public se puede utilizar
para declarar variables pblicas de nivel
de mdulo.

Privadas
La instruccin Dim o Private se puede
usar para declarar variables privadas de
nivel de mdulo o procedimiento.

213
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.3 ALCANCE DE LAS


VARIABLES
Privada
Private MiNombre As String
Dim MiNombre as String

Las variables Private pueden ser usadas nicamente por


procedimientos pertenecientes al mismo mdulo.

Cuando se utiliza a nivel de mdulo, la instruccin Dim es


equivalente a la instruccin Private. Sera aconsejable
usar la instruccin Private para facilitar la lectura y
comprensin del cdigo, aunque se deja a criterio del
programador dicha eleccin, dado que Dim es quizs la
manera mas conocida de declarar variables en VB.

3.3 ALCANCE DE LAS


VARIABLES
Publicas
Public NombreTexto As String .

Las variables pblicas se pueden usar en


cualquier procedimiento del proyecto. Si
una variable pblica se declara en un
mdulo estndar o en un mdulo de
clase, tambin se podr usar en los
proyectos referenciados por el proyecto
en que se declara la variable pblica.

214
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.3 ALCANCE DE LAS


VARIABLES
TIPO DE
UBICACIN ACCESIBLE
DECLARACIN

Encima del procedimiento Todos los procedimientos del


Dim
(antes del primer Sub) mdulo.

Antes de un procedimiento
Dim Ese procedimiento .
especfico.

Dim Dentro de un procedimiento. Resto de ese procedimiento.

Encima del procedimiento Todos los procedimientos (de


Public
(antes del primer Sub) todos los mdulos).

3.4 DECLARACIN DE
VARIABLES INDEPENDIENTES

215
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.5 DECLARACIN DE
VARIABLE EN MODULO

3.6 INSTRUCCIN

Una unidad sintcticamente completa


que expresa un tipo de accin,
declaracin o definicin. Normalmente
una instruccin tiene una sola lnea
aunque es posible utilizar dos puntos (:)
para poner ms de una instruccin en
una lnea. Tambin se puede utilizar un
carcter de continuacin de lnea (_)
para continuar una sola lnea lgica en
una segunda lnea fsica.

216
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.7 EXPRESIN

Una combinacin de palabras clave,


operadores, variables y constantes,
que produce una cadena, un nmero
o un objeto. Una expresin puede
realizar un clculo, manipular
caracteres o verificar datos.

3.8 OPERADORES

Matemticos:
+ (Suma o concatenacin)
- (Resta)
/ (Divisin)
* (Multiplicacin)
^ (Potencia)
Mod (Residuo de divisin entera)

217
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.8 OPERADORES

De Relacin
> (Mayor que)
< (Menor que)
= (Igual que)
>= (Mayor igual que)
<= (Menor igual que)
<> (Diferente que)

3.8 OPERADORES

Lgicos
And (Conjuncin)
Or (Disyuncin)
Not (Negacin)

218
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.9 LA FUNCIN MSGBOX

Nos permite enviar mensajes


personalizados mediante un cuadro
de dialogo.
Ejemplo:
Msgbox (Bienvenido a Excel)

3.10 LA FUNCIN INPUTBOX


Nos permite el ingreso de datos mediante un cuadro de
dialogo donde dicho datos ser almacenado en una variable
Ejemplo:

Dim strNombre as String


strNombre =InputBox(Ingrese su nombre, Mensaje)
Msgbox (Bienvenido a Excel amigo + strNombre)

219
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

PREGUNTAS

LABORATORIO

Revise junto a su instructor los


conceptos desarrollados en el
presente capitulo, creando un libro
Excel denominado
Demo_Variables

220
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

EJERCICIO : INSERTAR UNA


FUNCIN DEL USUARIO

INSTRUCCIN

Function
Determina el inicio de la funcin

End Function
Determina el final de la funcin

221
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

ARGUMENTO O PARMETRO

Constante, una variable o una


expresin pasadas a un
procedimiento.
Es un valor que delimita el accionar de
la funcin y que permite que la misma
haga su trabajo y retorne un resultado
Por ejemplo, la mayora de funciones
de Excel tienen parmetros, que
pueden ser valores variables,
constantes o hasta rangos de celdas

EJERCICIO 1 CALCULO DE
COMISIN
Crear una funcin que permita
calcular la comisin de la venta
teniendo en cuenta las variables
venta y porcentaje de comisin.

222
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

CDIGO

Public Function
CalcularComision(venta as Single,
porcom as Single) as Single
CalcularComision = venta * porcom
End Function

EJERCICIO 2 CONVERSIN
DE KILOS A Q

Deber ingresar el numero de Kilos y


estos sern convertidos en Quintales.
Teniendo en cuenta que los kilos se
dividen contra 46 para hallar el valor
de los quintales.

223
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

CONVERSIN DE KG A QQ

CDIGO

Public Function
ConversionaQuintal(kilos as Single)
as Single
ConversionaQuintal = kilos / 46
End Function

224
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

LABORATORIO
Pruebe las funciones empleandolas
desde una hoja cualquiera de Excel
como si fueran funciones propias de
la herramienta.
Las puede buscar con el asistente
para funciones en la categora
funciones del usuario

PREGUNTAS

225
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

BS Grupo
Programa: Microsoft Excel
2010 para Expertos
Mdulo II

Instructor :Ing. Jos Len Cabel


Email: pjleon69@gmail.com

Sesin03:

Estructuras Secuenciales
Estructuras Condicionales
Estructuras Repetitivas
Manejo de controles

226
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Tema1:

Estructuras Secuenciales

1.1 DEFINICION

Son aquellas estructuras donde se


ejecutan cada una de las
instrucciones que las componen, de
inicio a fin.
Son las estructuras mas simples,
pero que pueden ser complicadas de
acuerdo a las reglas de negocio que
se quiera resolver

227
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.3 EJEMPLO 2 : CALCULANDO UN


PROMEDIO SIMPLE

1.3 EJEMPLO 1 : CALCULANDO UN


PROMEDIO PONDERADO

228
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.4 LAS FUNCIONES INPUTBOX Y


MSGBOX

MsgBox
Esta funcion mermita enviar un mensaje al
usuario mediante un cuadro de dialogo.

InputBox
Permite el ingreso de datos desde el teclado
va un cuadro de dialogo. El dato ingresado se
guarda una variable.

1.4 LAS FUNCIONES INPUTBOX Y


MSGBOX

Ejemplo
En el siguiente cdigo de ejemplo se ingresa el nombre
de una persona mediante la funcin InputBox y se
asigna a una variable (strNombre). Luego mediante la
funcin Msgbox se enva un mensaje con un saludo con
el nombre ingresado

Dim strNombre as String


strNombre= Inputbox (Ingresa tu nombre, Mensaje)
MsgBox ("Bienvenido amigo: " & strNombre)

229
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.4 LAS FUNCIONES INPUTBOX Y


MSGBOX
Ejecutando el cdigo anterior:

TEMA2:

Estructuras condicionales

230
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.1 DEFINICION

La estructura de control condicional


permite decir entre dos opciones
resultantes de la evaluacin de una
sentencia. Si la evaluacin es
positiva realiza una o mas acciones y
opcionalmente tambin podemos
especificar acciones para realizar en
caso de que la evaluacin sea
negativa.

2.2 ESTRUCTURA

231
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.3 EJERCICIO 1
ESTRUCTURA IF- ENDIF

Si la celda A1 se encuentra vaca que


emita un beep

RESPUESTA

232
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.4 EJERCICIO NRO 2


Si la celda A1 se encuentra vaca
deber colocar negrita y aplicar el
color rojo en la celda.

RESPUESTA

233
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.5 EJERCICIO 3

Definiendo una funcin con un dato


opcional
Si se necesita multiplicar el largo por el
ancho del objeto para obtener el rea.

2.6 EJERCICIO 4 DATO


OPCIONAL
Se necesita saber el rea de un
objeto pero teniendo en cuenta que
el ancho puede ser variable o vacio.

234
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.7 Estructura If-Else If End


If
Si se da el caso de evaluar
condiciones multiplex puede
emplear la estructura If-Else If
End If.
Por ejemplo si se desea asignar
una bonificacin dependiendo
del estado civil de un empleado
se puede realizar as:

2.7 Estructura If-Else If End


If
Dim bonif As Single
Dim strEC As String
strEC = InputBox("Ingrese estado civil",
"Mensaje")
If srtEC = "Soltero" Then
bonif = 300
ElseIf strEC = "Casado" Then
bonif = 500
ElseIf strEC = "Divorciado" Then
bonif = 250
Else
bonif = 180
End If
MsgBox ("La bonificacion es : " & bonif)

235
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.8 Estructura Select Case


End Select

Lo mismo del ejemplo anterior


tambin se puede resolver con
la estructura Select Case End
Select.
Se evaluara el estado civil de la
siguiente forma

2.8 Estructura Select Case


End Select
Dim bonif As Single
Dim strEC As String
strEC = InputBox("Ingrese estado civil", "Mensaje")
Select Case strEC
Case "Soltero"
bonif = 300
Case "Casado"
bonif = 500
Case "Divorciado"
bonif = 250
Case Else
bonif = 180
End Select
MsgBox ("La bonificacion es : " & bonif)

236
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.8 Estructura Select Case


End Select

Ahora veremos como se deduce


un descuento dependiendo de la
cantidad comprada.

2.8 Estructura Select Case


End Select
Dim cantidad As Integer
Dim descuento As Single
cantidad = InputBox("Ingrese cantidad", "Mensaje")
Select Case cantidad
Case Is < 10
descuento = 0.05
Case Is <= 100
descuento = 0.075
Case Is <= 200
descuento = 0.1
Case Else
descuento = 0.15
End Select
MsgBox ("El descuento es : " & descuento)

237
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

TEMA 3:

Estructuras repetitivas

3.1 DEFINICION

Son estructuras que contienen


instrucciones que se van a repetir un
numero indeterminado de veces.
Las instrucciones que se repetirn
forman parte del cuerpo del bucle.
El bucle debe de terminar en algun
momento, dado que no es coherente
que la lgica lleve a ejecutar bucles
infinitos

238
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.2 Estructura Do While -Loop

Se emplean para repetir una serie


de instrucciones un numero
indeterminado de veces, MIENTRAS
que la condicin a evaluar sea
verdadera.
Aqu por ejemplo se repite la
solicitud de el ingreso de un
numero mientras que el numero
que se ingrese sea diferente de 0

3.2 Estructura Do While -Loop

Dim numero As Integer


'solicito el nro desde input box
numero = InputBox("Ingrese
numero")
Do While numero <> 0
numero = InputBox("Ingrese
numero")
Loop

239
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.3 Estructura Do Until-Loop

Se emplean para repetir una serie


de instrucciones un numero
indeterminado de veces, HASTA que
la condicin a evaluar sea
verdadera.
Aqu por ejemplo se repite la
solicitud de el ingreso de un numero
hasta que el numero que se ingrese
sea igual a 0

3.2 Estructura Do While -Loop

Dim numero As Integer


'solicito el nro desde input box
numero = InputBox("Ingrese
numero")
Do Until numero = 0
numero = InputBox("Ingrese
numero")
Loop

240
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.4 Estructura For-Next

Se emplean para repetir una serie


de instrucciones un numero
determinado de veces, desde un
valor inicial hasta un valor final.
Aqu por ejemplo se repite 10 veces
el envio de un mensaje con el valor
de la variable de control del bucle
(numero), desde que esta se inicia
en 1 hasta que llegue 10

3.4 Estructura For-Next


Dim numero As Integer
For numero = 1 To 10
MsgBox (numero)
Next numero

241
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

3.4 Estructura For-Next


En este caso mostraremos un
bucle decremental, haciendo uso
del parmetro opcional STEP con
valor negativo
Sino se usa este parmetro , el
incremento de la variable de
control del bucle ser de 1 en 1.
Dim numero As Integer
For numero = 10 To 0 Step -1 'step negativo
MsgBox (numero)
Next numero

PREGUNTAS

242
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

LABORATORIO
Revise junto a su instructor los
conceptos desarrollados en el
presente capitulo, abriendo el libro
Excel denominado
Demo_Estructuras proporcionado
como parte del material del capitulo

243
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

BS Grupo
Programa: Microsoft Excel
2007 para Expertos
Mdulo II

Instructor :Ing. Jos Len Cabel


Email: pjleon69@gmail.com

SESIN 05:

MANEJO DE CONTROLES
LOS USERFORM
EJERCITACIN

244
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Tema 1:
Manejo de controles

1.1 LOS CONTROLES

Los controles son objetos que


constituyen las interfaces graficas.
Los mas populares son los botones
(CommandButton) , las cajas de
texto (TextBox), las etiquetas
(Label),Listas (ListBox), entre otros.
Los que emplearemos con mas
frecuencia sern los de tipo Active X

245
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.2 INSERTANDO CONTROLES


Para insertar los controles en la
hoja, esta debe estar en modalidad
Diseo.
Desde el comando Insertar del la
ficha Programador se pueden
insertar los controles

1.3 LAS PROPIEDADES DE LOS


CONTROLES

Los controles poseen


caractersticas, las cuales se
denominan propiedades, siendo
las mas importantes el nombre ,
rotulo (Caption), color de fondo
y de primer plano ( BackColor y
ForeColor), entre otras.

246
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.3 LAS PROPIEDADES DE LOS


CONTROLES
Para aplicarlas lo puedo
hacer seleccionando al
control y haciendo un
clic derecho seleccione la
opcin Propiedades, con
lo que se mostrara la
ventana de Propiedades
del control y desde aqu
defina los valores que
requieran cada
propiedad

1.4 LOS PROCEDIMIENTOS DE


EVENTO
Un procedimiento es un conjunto de
instrucciones que realiza un trabajo
determinado. Podemos hacer un
procedimiento para conectarnos a una
base de datos o limpiar un rango de
celdas.
Los controles pueden ser programados
para realizar algn trabajo al suscitarse
un evento sobre ellos. Estos son los
llamados procedimiento de evento

247
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.4 LOS PROCEDIMIENTOS DE


EVENTO

Los controles pueden programarse


bajo muchos eventos, pero de todos
estos eventos hay uno que es el
evento por naturaleza del control.
Por ejemplo , en el caso de un botn
el evento por naturaleza es el evento
Click o en el caso de las cajas de
texto es el evento TextChanged

1.4 LOS PROCEDIMIENTOS DE


EVENTO
Para programar el
evento por naturaleza
del control bastara con
hacer doble click sobre
el , con lo que se abrir
la ventana de cdigo con
el procedimiento listo
para codificarse.
A continuacin
mostramos el
procedimiento de evento
btnCalcular_Click:

248
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

1.4 LOS PROCEDIMIENTOS DE


EVENTO

Si se desea programar en cualquier otro


evento que no sea el evento por defecto ,
se debe, desde la ventana de cdigo
seleccionar desde el cuadro combinado de
controles el control a programar y desde
el cuadro combinado de eventos el
evento a programar

4.4 LOS PROCEDIMIENTOS DE


EVENTO
Cuadro combinado de controles Cuadro combinado de Eventos

249
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

TEMA 2 :
Los Userform

2.1 DEFINICIN

Los formularios (tambin llamados


cuadros de dialogo personalizados o
UserForm) permiten disponer de
interfaces de usuarios simples y
amigables para la introduccin,
modificacin y visualizacin de datos.
Podemos colocar una serie de
controles ActiveX de tal forma de
interactuar eficientemente con el
usuario.

250
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.2 Agregar UserForm

Desde la ventana de cdigo realizar lo


siguiente

2.3 QUITAR UN ELEMENTO

Haga clic derecho


desde la ventana
del Explorador de
Proyectos sobre el
formulario que
desea eliminar y
proceda tal como se
indica en la imagen
a continuacin

251
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.4 FORMULARIO PERSONALIZADO

2.5 CONTROLES EN FORMULARIOS

Controles ActiveX
Cuadros de entrada de texto, lista
desplegable, botones de comando, etc.

Asociar Cdigo Visual Basic


Para responder a distintos eventos del
usuario (al realizar el clic sobre el botn
de comando, introdccin en una zona de
texto, seleccin en una lista
desplegable)

252
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.6 LISTA DE CONTROLES MAS


FRECUENTES

2.7 PROPIEDADES DE LOS


CONTROLES
OPCIN DESCRIPCIN
Name Especifica el nombre del control
Caption Indica el texto de una etiqueta
ControlTipText Crea una etiqueta informativa
Visible Especifica si un control est oculto o visible
Enable Determina si el foco puede estar sobre el
control
Value Define el estado o el contenido de un control
ControlSource Vincula un control a una celda (cuadro de
texto) o un rango de celdas (cuadro de listas)

253
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.7 PROPIEDADES DEL FORMULARIO

2.8 PRESENTAR FORMULARIO


Para lanzar un formulario se
debe invocar al mtodo Show
de los formularios.
Si en el evento clic de un botn
agregado sobre una hoja del
libro se programa lo siguiente

Userform1.Show

Al hacer clic sobre dicho botn


se cargara el formulario
UserForm1

254
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

2.9 OTROS MTODOS Y EVENTOS


DE LOS FORMULARIOS

Elimina el formulario de la memoria


UnLoad UserForm1

Mtodos Eventos
Show Initialize
Load Activate
Hide
Close

EJEMPLO NRO 1 AGREGAR


ELEMENTOS

255
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

INGRESO DE DATOS

PROGRAMACIN POR
ELEMENTO

256
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

PROGRAMACIN DEL ELEMENTO

PROGRAMACIN DE ELEMENTOS

257
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

PREGUNTAS

LABORATORIO
Desarrolle junto a su instructor los
ejercicios que se detallan a
continuacin , creando los libros
Excel denominado s

Demo_Controles y Demo_Formularios

258
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Tema 3

Ejercitacin

EJERCICIO NRO 1
Deber crear un UserForm que
permita seleccionar el autor, versin
y fecha mostrando los datos en la
celda A1 de la hoja.

259
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

Programacin del Userform


Es necesario que al cargar el
formulario los checkbox se
encuentren desactivados en todos los
casos.
Para ello usara el evento INITIALIZE.

PROGRAMACIN DE ELEMENTOS

260
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

RESULTADO

EJERCICIO NRO 2
Mostrar los datos almacenados en
la hoja en un combo para su
seleccin.

261
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel

INICIALIZAR EL FORMULARIO

SELECCIN DEL PAS Y CIUDAD

262
grupo
conocimiento para crecer