Professional Documents
Culture Documents
MODULO II
PROGRAMA EXCEL PARA EXPERTOS
Macros y VBA para Excel
Conocer el lenguaje VBA (Visual Basic for Application) que permitir la creacin de
macros complejas basadas en cdigo.
126
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
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.
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.
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
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.
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.
Automticas
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
Paso 1:
128
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Paso 2:
Paso 3:
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:
Donde dice
Nombre de la macro escriba
129
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
130
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
4. Ejecucin de la macro
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
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
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).
Paso 1:
Ir al editor de VB. Desde la ventana del Explorador de proyectos seleccione la hoja Hoja1.
Paso 2:
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:
Paso 4:
134
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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.
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:
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
Paso 1:
Vaya el editor Visual Basic y desde la ventana del Explorador de Proyectos seleccione la hoja
Hoja1 (MenuPrincipal).
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:
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.
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
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.
142
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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.
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
Ejemplo de una funcin que retorna la suma de los 2 parmetros que se le pasan como
argumentos
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)
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)
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
Inters = WorkSheets(Hoja1).Range(A1).Value
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
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
Cuando definimos variables debemos asignarle su tipo de dato. En VBA se manejan los
siguientes tipos de datos
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 no es vlido:
DIM x, y, z As Integer
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
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:
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
148
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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)
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:
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
La funcin InputBox
Nos permite el ingreso de datos mediante un cuadro de dialogo donde dicho datos ser
almacenado en una variable
Paso 1:
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:
150
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Paso 3:
Laboratorio 2:
El objetivo de este laboratorio es comprender el tema de declaracin de variables y
su mbito de accin
Paso 1:
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
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:
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
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:
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
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
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
Range("B6").Value = promedio
End Sub
b. Estructuras de Decisin
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
CualquierFecha = Now
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]
[Else
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:
ClearActiveControl
159
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
CopyActiveControl
ElseIf Index = 2 Then Comando Borrar
ClearActiveControl
PasteActiveControl
End If
End Sub
txtCondicin = Aprobado
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.
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
[Case lista_expresiones1
[Case lista_expresiones2
[Case Else
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:
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:
Else
End If
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
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).
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
valor=InputBox(Ingrese valor,Mensaje)
Do While valor>0
contador = contador + 1
valor=InputBox(Ingrese valor,Mensaje)
Loop
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
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.
Do Until condicin Do
Sentencias Sentencias
Por ejemplo el siguiente cdigo solicitara un valor hasta que el valor ingresado sea igual a cero
valor = 0
Do
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:
Sentencias
Next [contador]
164
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
Msgbox (i)
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
Sentencias
Next elemento
cell.Font.Color = vbBlue
Else
cell.Font.Color = vbRed
End If
Next
Dim control
Control.Enabled = True
End If
Next control
End Sub
166
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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:
[bloque sentencias]
[Exit For]
[bloque sentencias]
Next [contador]
[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
Loop
Do
[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
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.
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:
Paso 1
168
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Sub Calcular1()
'Declaracion de variables
nota1 = Range("B3").Value
nota2 = Range("B4").Value
nota3 = Range("B5").Value
Range("B6").Value = promedio
End Sub
Sub Calcular2()
'Declaracion de variables
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
Range("B13").Value = promedio
End Sub
Sub Calcular3()
duracion = Range("B18").Value
tarifa = Range("B19").Value
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:
Paso 1
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
Sub CalcularPromedio2()
'Declaracion de variables
Dim nota1 As Integer
Dim nota2 As Integer
Dim nota3 As Integer
Dim promedio As Single
'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
'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:
172
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Paso 1
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:
Paso 1
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:
Paso 1
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:
Paso 1
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
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
SUELDO
AREA ( LEGAL, CONTABILIDAD,INFORMATICA,MARKETING,LOGISTICA)
TIPO DE TRABAJADOR ( ESTABLE O CONTRATADO)
HORAS EXTRAS
TARDANZAS
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
LEGAL
3% SUELDO
CONTABILIDAD
4% SUELDO
INFORMARTICA
2.5% SUELDO
MARKETING
1.5% SUELDO
LOGISTICA
2.8% SUELDO
Solucion:
Sub Planillas2()
'Variables
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
montohor = horas * 20
Else
' de lo contrario 15
montohor = horas * 15
End If
'tardanzas
Else
montotar = 0
End If
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
Else
montotar = 0
End If
Else
' de lo contrario 45
montohor = horas * 45
End If
'tardanzas
Else
montotar = 0
End If
montohor = horas * 60
Else
' de lo contrario 30
montohor = horas * 30
End If
'tardanzas
181
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Else
montotar = 0
End If
montohor = horas * 70
Else
' de lo contrario 35
montohor = horas * 35
End If
'tardanzas
Else
montotar = 0
End If
End Select
Range("B9").Value = montohor
Range("B10").Value = montotar
Range("B11").Value = neto
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:
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()
fila1 = 5
fila2 = 4
Range("FiltroTipo").Clear
Sheets("Hoja4").Range("B2").Value = strTipo
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)
registros = registros + 1
End If
fila1 = fila1 + 1
Loop
Sheets("Hoja4").Select
Exit Sub
Mierror:
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
184
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
CONTENIDO DESARROLLADO
a. UserForms
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
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
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.
189
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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.
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:
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
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
SESIN01:
193
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
TEMA 1:
194
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
196
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Haga clic en
el botn
opciones de
Excel (Excel
2007) o
seleccione el
men
opciones
(Excel2010)
197
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
198
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
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
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.
201
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
TEMA3:
Creacin de Macros
sencillas con
programacin
202
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
203
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
204
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
LABORATORIO
205
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
BS Grupo
Programa: Microsoft Excel
2010 para Expertos
Mdulo II
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?
207
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
209
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
210
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
TEMA 3:
Introduccin a la
programacin en VBA
211
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
212
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
214
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Antes de un procedimiento
Dim Ese procedimiento .
especfico.
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
216
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
3.7 EXPRESIN
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
219
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
PREGUNTAS
LABORATORIO
220
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
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
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
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
227
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
228
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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.
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
229
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
TEMA2:
Estructuras condicionales
230
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
2.1 DEFINICION
2.2 ESTRUCTURA
231
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
2.3 EJERCICIO 1
ESTRUCTURA IF- ENDIF
RESPUESTA
232
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
RESPUESTA
233
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
2.5 EJERCICIO 3
234
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
235
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
236
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
237
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
TEMA 3:
Estructuras repetitivas
3.1 DEFINICION
238
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
239
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
240
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
241
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
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
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
245
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
246
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
247
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
248
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
249
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
TEMA 2 :
Los Userform
2.1 DEFINICIN
250
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
251
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Controles ActiveX
Cuadros de entrada de texto, lista
desplegable, botones de comando, etc.
252
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
253
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Userform1.Show
254
grupo
conocimiento para crecer
Excel para Expertos
Programacin con Macros en Microsoft Excel
Mtodos Eventos
Show Initialize
Load Activate
Hide
Close
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 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 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
262
grupo
conocimiento para crecer