You are on page 1of 71

CETPRO DIVINO MAESTRO - HUANTA

Qu es una macro de Excel?


Si utilizas Excel frecuentemente es posible que en alguna ocasin te
hayas encontrado ejecutando una misma serie de acciones una y otra
vez. Esas acciones que haces repetidas veces se podran automatizar
con una macro.

Una macro es un conjunto de comandos que se almacena en un lugar


especial de Excel de manera que estn siempre disponibles cuando
los necesites ejecutar.

Por ejemplo, si todas las maanas creas un reporte de ventas y en


ese reporte siempre das el mismo formato a los textos, se podra
crear una macro para que lo haga automticamente por ti. Las
macros se utilizan principalmente para eliminar la necesidad de
repetir los pasos de aquellas tareas que realizas una y otra vez.

Un lenguaje de programacin
Las macros se escriben en un lenguaje de computadora especial que
es conocido como Visual Basic for Applications (VBA). Este lenguaje
permite acceder a prcticamente todas las funcionalidades de Excel y
con ello tambin ampliar la funcionalidad del programa.

Pero no te preocupes si no eres un programador de computadoras,


Excel provee de una herramienta especial que permite crear una
macro sin necesidad de conocer los detalles del lenguaje de
programacin.

Para qu sirve una macro en Excel

1
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Para qu sirve una macro en Excel? Una macro nos ayuda a


automatizar aquellas tareas que hacemos repetidamente. Una macro
es una serie de instrucciones que son guardadas dentro de un archivo
de Excel para poder ser ejecutadas cuando lo necesitemos.

Automatizacin de tareas

Seguramente ests familiarizado con procesos de automatizacin en


el mbito industrial. Un ejemplo muy claro son las plantas
ensambladoras de automviles donde existen robots que han
sustituido tareas que antes eran hechas por humanos. La
automatizacin trajo beneficios como mayor eficiencia y
productividad de las plantas y un mejor aprovechamiento del tiempo
del personal al reducir la cantidad de tareas repetitivas que
realizaban.

De la misma manera las macros nos ayudan a eliminar esas tareas


repetitivas de nuestro trabajo cotidiano al permitirnos utilizar mejor
nuestro tiempo en el anlisis de los datos y en la toma de decisiones.

Cmo se ve una macro en Excel?

Las macros son escritas en un lenguaje de computadora conocido


como VBA por sus siglas en ingls (Visual Basic for Applications).
Como cualquier otro lenguaje de computadora debemos aprender a
utilizar los comandos que nos ayudarn a indicar a Excel lo que
deseamos hacer con nuestros datos.

Aprender el lenguaje VBA no es nada complicado y se puede lograr


fcilmente. Lo que toma un poco ms de tiempo es pulir nuestras
habilidades de programacin. Lo que quiero decir con esto es que

2
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

para ser un buen programador de macros debes dedicar tiempo en


resolver mltiples problemas en donde puedas llevar al lmite el
lenguaje VBA.

Creacin de una macro

Las macros se crean con el Editor de Visual Basic el cual nos permitir
introducir el cdigo con las instrucciones que sern ejecutadas por la
macro.

Existe otro mtodo que es utilizar la Grabadora de macros la cual ir


grabando todas las acciones que realicemos en Excel hasta que
detengamos la grabacin. Una vez grabada la macro podremos
reproducir de nuevo las acciones con tan solo un clic.

Ahora que ya sabes para qu sire una macro en Excel puedes dar
los primeros pasos en este camino utilizando el tutorial Introduccin a
las macros.

Aunque si aceptas el desafo y te introduces en el mundo de la


programacin VBA pronto te convertirs en un Ninja de Excel. Vers
que crear una macro en Excel no es tan complicado y ser una
manera fcil y rpida de eliminar esas tareas repetitivas que todos los
das te quitan minutos preciados de tu tiempo.

Mostrar la ficha Programador

3
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Si quieres escribir una nueva macro o ejecutar una macro


previamente creada, entonces debes habilitar la ficha
Programador dentro de la cinta de opciones. Para mostrar esta ficha
sigue los siguientes pasos.

Mostrar la ficha Programador en Excel 2010

Haz clic en la ficha Archivo y elige la seccin Opciones. Se mostrar el


cuadro de dilogo Opciones de Excel donde debers seleccionar la
opcin Personalizar cinta de opciones.

En el panel de la derecha debers asegurarte de seleccionar la ficha


Programador.

4
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Acepta los cambios y la ficha se mostrar en la cinta de opciones.

Grupos de la ficha Programador

El grupo Cdigo tienes los comandos necesarios para iniciar el Editor


de Visual Basic donde se puede escribir directamente cdigo VBA.
Tambin nos permitir ver la lista de macros disponibles para poder
ejecutarlas o eliminarlas. Y no podramos olvidar mencionar que en
este grupo se encuentra el comando Grabar macro el cual nos
permite crear una macro sin necesidad de saber sobre programacin
en VBA.

El grupo Complementos nos permite administrar y habilitar


complementos como el Solver.

El grupo Controles incluye funcionalidad para agregar controles


especiales a las hojas de Excel como los controles de formulario que
son botones, casillas de verificacin, botones de opcin entre otros

5
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

ms que sern de gran utilidad para ampliar la funcionalidad de


Excel.

El grupo XML permite importar datos de un archivo XML as como


opciones tiles para codificar archivos XML. Finalmente el grupo
Modificar solamente contiene el comando Panel de documentos.

Aunque pueden parecer intimidantes los comandos de la ficha


Programador con el paso del tiempo te irs familiarizando poco a
poco con cada uno de ellos.

La grabadora de macros

Puedes crear una macro utilizando el lenguaje de programacin VBA,


pero el mtodo ms sencillo es utilizar la grabadora de macros que
guardar todos los pasos realizados para ejecutarlos posteriormente.

La grabadora de macros en Excel 2010

La grabadora de macros almacena cada accin que se realiza en


Excel, por eso es conveniente planear con antelacin los pasos a
seguir de manera que no se realicen acciones innecesarias mientras
se realiza la grabacin. Para utilizar la grabadora de macros debes ir a
la ficha Programador y seleccionar el comando Grabar macro.

Al pulsar el botn se mostrar el cuadro de dilogo Grabar macro.

6
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En el cuadro de texto Nombre de la macro debers colocar el


nombre que identificar de manera nica a la macro que estamos por
crear. De manera opcional puedes asignar un mtodo abreviado de
teclado el cual permitir ejecutar la macro con la combinacin de
teclas especificadas.

La lista de opciones Guardar macro en permite seleccionar la


ubicacin donde se almacenar la macro.

Este libro. Guarda la macro en el libro actual.

Libro nuevo. La macro se guarda en un libro nuevo y que pueden ser


ejecutadas en cualquier libro creado durante la sesin actual de
Excel.

Libro de macros personal. Esta opcin permite utilizar la macro en


cualquier momento sin importar el libro de Excel que se est
utilizando.

Tambin puedes colocar una Descripcin para la macro que vas a


crear. Finalmente debes pulsar el botn Aceptar para iniciar con la
grabacin de la macro. Al terminar de ejecutar las acciones planeadas
debers pulsar el botn Detener grabacin para completar la
macro.

Crear una macro

7
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En esta ocasin mostrar cmo crear una macro en Excel


utilizando la grabadora de macros. La macro ser un ejemplo muy
sencillo pero permitir ilustrar el proceso bsico de creacin.

Voy a crear una macro que siempre introduzca el nombre de tres


departamentos de una empresa y posteriormente aplique un formato
especial al texto. Para iniciar la grabacin debes ir al comando Grabar
macro que se encuentra en la ficha Programador lo cual mostrar el
siguiente cuadro de dilogo.

Observa cmo he colocado un nombre a la macro y adems he


especificado el mtodo abreviado CTRL+d para ejecutarla
posteriormente. Una vez que se pulsa el botn Aceptar se iniciar la
grabacin. Observa con detenimiento los pasos.

8
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Al terminar los pasos se pulsa el comando Detener grabacin y la


macro habr quedado guardada. Para ejecutar la macro recin
guardada seleccionar una nueva hoja de Excel y seleccionar el
comando Macros.

Al pulsar el comando Macros se mostrar la lista de todas las macros


existentes y de las cuales podrs elegir la ms conveniente. Al hacer
clic sobre el comando Ejecutar se realizarn todas las acciones
almacenadas en la macro y obtendrs el resultado esperado. Por
supuesto que si utilizas el mtodo abreviado de teclado de la macro
entonces se omitir este ltimo cuadro de dilogo.

El cdigo de la Grabadora de macros

Una manera muy interesante de descubrir y aprender ms sobre


cdigo VBA es analizar el cdigo generado por la Grabadora de
macros. Para este ejemplo grabaremos una macro muy sencilla que
solamente cambie el color de la fuente de la celda actual.

Para comenzar debemos ir a la ficha Programador y pulsar el


comando Grabar macro lo cual mostrar el cuadro de dilogo donde
asignar un nombre a la macro que estoy por crear.

9
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Pulsa el botn Aceptar y se comenzarn a grabar todas las acciones,


as que debes actuar con cuidado porque se grabar absolutamente
todo. Para la macro que estoy grabando solo har lo siguiente: ir a la
ficha Inicio y pulsar el comando Color de fuente y seleccionar el
color rojo para la celda activa.

Una vez hecho esto debo detener la grabacin de la macro y una


alternativa para hacerlo es pulsar el icono que se muestra en la barra
de estado.

10
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Ahora que ya hemos generado la macro, pulsa el botn Macros que se


encuentra en el grupo Cdigo de la ficha Programador. Se mostrar el
cuadro de dilogo Macro que enlista todas las macros que hemos
creado.

Selecciona la macro recin creada y pulsa el botn Modificar. Esto


abrir el Editor de Visual Basic y mostrar el cdigo generado para
la macro.

11
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Observando este cdigo podemos aprender varias cosas. Para


empezar observamos que el objeto Selection tiene una propiedad
llamada Font que es la que hace referencia a la fuente de la celda o
rango seleccionado. A su vez, la propiedad Font tiene otra propiedad
llamada Color que es precisamente la que define el color rojo de
nuestra celda.

Aunque este ha sido un ejercicio muy sencillo, cuando tengas


curiosidad o duda sobre qu objetos utilizar al programar en VBA
considera utilizar la Grabadora de macros para darte una idea del
camino a seguir.

Establecer seguridad de
macros
La seguridad es un tema importante al hablar de macros en Excel. Si
abres algn archivo que contenga una macro maliciosa puedes causar
algn tipo de dao al equipo. De manera predeterminada Excel no
permite ejecutar macros automticamente.

Sin embargo, si ests creando tus propias macros y deseas remover


esta proteccin porque sabes que no existe cdigo malicioso,
entonces puedes modificar la configuracin para habilitar todas las
macros. Para hacerlo debes seguir los siguientes pasos.

Haz clic en la ficha Archivo y posteriormente en Opciones. Dentro del


cuadro de dilogo mostrado selecciona la opcin Centro de
confianza y posteriormente pulsa el botn Configuracin del
centro de confianza. Se mostrar el cuadro de dilogo Centro de
confianza.

12
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Dentro de la seccin Configuracin de macros selecciona alguna


de las opciones disponibles.

Deshabilitar todas las macros sin notificacin. Deshabilita


las macros y permite ejecutar solamente aquellas que estn
almacenadas en un lugar confiable. Los lugares confiables se
configuran en la seccin Ubicaciones de confianza del mismo
cuadro de dilogo.

Deshabilitar todas las macros con notificacin. Muestra


una alerta de seguridad advirtiendo sobre la intencin de
ejecutar una macro de manera que se pueda decidir si se desea
ejecutar. Esta es la opcin predeterminada de Excel.

Deshabilitar todas las macros excepto las firmadas


digitalmente. Solamente se podrn ejecutar las macros que
estn firmadas digitalmente.

Habilitar todas las macros. Permite ejecutar todas las


macros sin enviar alguna notificacin al usuario. Esta opcin es
til si se ejecutan mltiples macros totalmente confiables. Esta
opcin es la que corre los mayores riesgos al ejecutar una
macro de una fuente desconocida.

Una vez seleccionada la opcin deseada se debe pulsar el botn


Aceptar para hacer los cambios permanentes.

13
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Programando en VBA

Excel 2010 es una de las herramientas de software ms poderosas


para el manejo, anlisis y presentacin de datos. Aun y con todas sus
bondades, en ocasiones Excel no llega a suplir algunas necesidades
especficas de los usuarios.

Afortunadamente Excel cuenta con VBA que es un lenguaje de


programacin que permite extender las habilidades del programa
para cubrir nuestros requerimientos. Utilizando VBA se pueden
desarrollar nuevos algoritmos para analizar la informacin o para
integrar a Excel con alguna otra aplicacin como Microsoft Access.

Principios fundamentales

La programacin en VBA puede ser un tanto misteriosa para la


mayora de los usuarios de Excel, sin embargo una vez que se
comprenden los principios bsicos de programacin en VBA se
comenzarn a crear soluciones robustas y efectivas.

El primer concepto importante a entender es que cada elemento de


Excel es representado en VBA como un objeto. Por ejemplo, existe el
objeto Workbook que representa a un libro de Excel. Tambin existe
el objeto Sheet que representa una hoja y el objeto Chart para un
grfico.

El segundo concepto importante a entender es que cada uno de estos


objetos tiene propiedades y mtodos. Para explicar mejor este
concepto utilizar una analoga.

Propiedades y Mtodos

Supongamos que tenemos el objeto auto. As es, un auto como el que


manejamos todos los das para ir al trabajo. Este auto tiene varias
propiedades como son: marca, modelo, color, tipo de transmisin
las cuales ayudan a describir mejor al auto. Tambin hay
propiedades que indican su estado actual como por ejemplo
gasolina disponible, temperatura del aceite, velocidad, kilmetros
recorridos entre otras propiedades ms. Podemos decir que las
propiedades de un objeto nos ayudan a describirlo mejor en todo
momento.

Por otro lado tenemos los mtodos de un objeto que en resumen son
las acciones que podemos realizar con dicho objeto. Por ejemplo, con
nuestro auto podemos hacer lo siguiente: encenderlo, avanzar, vuelta
a la izquierda, vuelta a la derecha, reversa, detener, apagar, etc.
Todas las acciones que se pueden llevar a cabo con un objeto son
conocidas como mtodos.

14
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Volviendo al terreno de Excel, el objeto Workbook tiene


propiedades como ActiveSheet (Hoja activa), Name (Nombre),
ReadOnly (Solo Lectura), Saved (Guardado) y algunos de sus
mtodos son Save (Guardar), Close (Cerrar), PrintOut (Imprimir),
Protect (Proteger), Unprotect (Desproteger).

Ser dificil mencionar todos los objetos de Excel y sus propiedades en


esta publicacin, pero lo importante a recordar en este ocasin es que
cada elemento de Excel est siempre representado por un objeto en
VBA y cada objeto tiene a su vez propiedades y mtodos que nos
permitirn trabajar con nuestros datos.

El Editor de Visual Basic

El Editor de Visual Basic, VBE por sus siglas en ingls, es un


programa independiente a Excel pero fuertemente relacionado a l
porque es el programa que nos permite escribir cdigo VBA que
estar asociado a las macros.

Existen al menos dos alternativas para abrir este editor, la primera de


ellas es a travs del botn Visual Basic de la ficha Programador.

El segundo mtodo para abrir este programa es, en mi opinin, el


ms sencillo y rpido y que es a travs del atajo de teclado: ALT +
F11. El Editor de Visual Basic contiene varias ventanas y barras de
herramientas.

15
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En la parte izquierda se muestra el Explorador de proyectos el cual


muestra el proyecto VBA creado para el libro actual y adems
muestra las hojas pertenecientes a ese libro de Excel. Si por alguna
razn no puedes visualizar este mdulo puedes habilitarlo en la
opcin de men Ver y seleccionando la opcin Explorador de
proyectos.

16
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

El Explorador de proyectos tambin nos ayuda a crear o abrir mdulos


de cdigo que se sern de gran utilidad para reutilizar todas las
funciones de cdigo VBA que vayamos escribiendo.

Dentro del Editor de Visual Basic puedes observar una ventana


llamada Inmediato que est en la parte inferior. Esta ventana es de
mucha ayuda al momento de escribir cdigo VBA porque permite
introducir instrucciones y observar el resultado inmediato. Adems,
desde el cdigo VBA podemos imprimir mensajes hacia la ventana
Inmediato con el comando Debug.Print de manera que podamos
depurar nuestro cdigo. Si no puedes observar esta ventana puedes
mostrarla tambin desde el men Ver.

El rea ms grande en blanco es donde escribiremos el cdigo VBA.


Es en esa ventana en donde escribimos y editamos las instrucciones
VBA que dan forma a nuestras macros.

Es importante familiarizarnos con el Editor de Visual Basic antes de


iniciar con la creacin de macros.

Tu primera macro con VBA

Ahora que ya sabes lo que es el Editor de Visual Basic para


Aplicaciones puedo mostrarte un ejemplo muy sencillo para crear una

17
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

macro. Lo primero que debes hacer es ir a la ficha Programador y


hacer clic en el botn Visual Basic.

Creacin de un mdulo

Una vez dentro del Editor debes hacer clic derecho sobre el ttulo del
proyecto y dentro del men seleccionar la opcin Insertar y
posteriormente Mdulo.

Se crear la seccin Mdulos y dentro de la misma se mostrar el


mdulo recin creado. Puedes saber que el mdulo est abierto
porque su nombre se muestra en el ttulo entre corchetes.

18
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Si el mdulo no est abierto solamente debers hacer doble clic sobre


l. Posicinate en el rea de cdigo e introduce las siguientes
instrucciones:

Antes de avanzar explicar con detalle las instrucciones mostradas.

Subrutinas en VBA

El primer concepto que explicare es la instruccin Sub que es la


abreviacin de la palabra subrutina. Una subrutina no es ms que un
conjunto de instrucciones que se ejecutarn una por una hasta llegar
al final de la subrutina que est especificado por la instruccin End
Sub.

Las subrutinas nos ayudan a agrupar varias instrucciones de manera


que podamos organizar adecuadamente nuestro cdigo. Una
subrutina siempre tiene un nombre el cual debe ser especificado justo
despus de la instruccin Sub y seguido por parntesis.

La funcin MsgBox en VBA

La subrutina que acabamos de crear para este ejemplo solamente


tiene una instruccin dentro la cual hace uso de la funcin MsgBox.
Esta funcin nos ayuda a mostrar una ventana de mensaje de manera
que podamos estar comunicados con el usuario sobre cualquier error
o advertencia que necesitamos darle a conocer. Para este ejemplo he
utilizado la forma ms sencilla de la funcin MsgBox la cual
solamente tiene un solo argumento que es precisamente el mensaje
que necesitamos mostrar en pantalla al usuario.

Ejecutar macro

Para probar nuestro cdigo bastar con pulsar el botn Ejecutar que
se encuentra dentro de la barra de herramientas.

19
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En cuanto se pulsa el botn se ejecutar el cdigo recin ingresado y


obtendremos el resultado en pantalla.

Listo, has creado tu primera macro la cual muestra una ventana de


mensajes y despliega el texto especificado en la funcin MsgBox. Para
guardar la macro recuerda que debes guardar el archivo como Libro
de Excel habilitado para macros, de lo contrario perders el
cdigo del mdulo creado.

Utilizar comentarios en VBA

Utilizar comentarios dentro del cdigo VBA es una de las mejores


prcticas que debes adoptar desde que inicias en el mundo de la
programacin en Excel. Los comentarios harn que tu cdigo sea fcil
de entender.

Un comentario en VBA es una lnea dentro del cdigo que no ser


tomada en cuenta al momento de realizar la ejecucin. Los
comentarios sern solo visibles por ti al momento de editar el cdigo
dentro del Editor de Visual Basic.

Para agregar un comentario ser suficiente con colocar una comilla


sencilla () al inicio de la lnea. Despus de colocar la comilla sencilla
debes escribir el comentario y al terminar de insertar la lnea Excel
colocar automticamente el texto en color verde indicando que ha
reconocido la lnea como un comentario en VBA.

20
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

He visto en ms de una ocasin que muchas personas no tienen esta


buena prctica al programar en VBA y el problema se presentar
cuando pase el tiempo y tengan que modificar el cdigo pero ya no
recuerden la lgica implementada ni lo que significa cada una de las
variables.

Aunque pareciera una actividad aburrida, creme que te ahorrar


mucho tiempo cuando te veas en la necesidad de modificar tu cdigo.
Adems, si por alguna razn necesitas que otra persona haga
modificaciones al cdigo le sern de gran ayuda los comentarios que
hayas agregado.

Comentar varas lneas de cdigo

Como ya lo mencion, un comentario en VBA ser omitido al


momento de la ejecucin. En ocasiones cuando est haciendo
pruebas con tu cdigo VBA deseas evitar que ciertas lneas de cdigo
se ejecuten y una manera de hacer es comentando dichas lneas.

Para comentar varias lneas de cdigo en una macro, sin la necesidad


de estar colocando la comilla sencilla al principio de cada una de las
lneas, puedes seguir los siguientes pasos. En primer lugar selecciona
todas las lneas de cdigo que deseas convertir en comentarios y
posteriormente oprime el botn Bloque con comentarios de manera
que Excel coloque todas las comillas sencillas () a cada lnea de
cdigo seleccionada.

21
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

De la misma manera puedes remover las comillas sencillas si pulsas


el botn Bloque sin comentarios que se encuentra justo al lado
derecho del botn Bloque con comentarios.

Si no puedes ver los botones anteriores en el Editor de Visual Basic es


porque seguramente tienes oculta la barra de herramientas de
Edicin. Para mostrarla, haz clic derecho sobre un rea libre del men
superior y seleccionar la opcin Edicin.

Objetos, propiedades y mtodos

Los objetos en Excel (VBA) son cosas. Una celda es un objeto, una
hoja es un objeto, un libro es un objeto y de esta manera existen

22
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

muchos ms objetos en Excel. A esto lo conocemos como el modelo


de objetos de Excel.

Cada uno de los objetos de Excel tiene propiedades y mtodos. Las


propiedades son las caractersticas del objeto y los mtodos son las
acciones que el objeto puede hacer.

Propiedades de un objeto

Si una persona fuera un objeto de Excel sus propiedades seran el


color de sus ojos, el color de su cabello, su estatura, su peso. De la
misma manera, un objeto de Excel tiene propiedades por ejemplos,
una celda (Range) tiene las propiedades valor (Value) y direccin
(Address) entre muchas otras. Estas propiedades describen mejor al
objeto.

Mtodos de un objeto

Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel


sus mtodos seran correr, caminar, hablar, dormir. Los mtodos son
las actividades o acciones que el objeto puede realizar. Los objetos de
Excel se comportan de la misma manera que el ejemplo de una
persona. Una celda (Range) tiene los mtodos activar (Activate),
calcular (Calculate), borrar (Clear) entre muchos ms.

Utilizando las propiedades y los mtodos

Para acceder a las propiedades y mtodos de un objeto lo hacemos


a travs de una nomenclatura especial. Justo despus del nombre del
objeto colocamos un punto seguido del nombre de la propiedad o del
mtodo. Observa este ejemplo donde hacemos uso de la propiedad
Value para la celda A1:

Range("A1").Value = "Hola"

De esta manera asignamos una cadena de texto al valor de la celda


A1. Ahora bien, si queremos borrar ese valor que acabamos de

23
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

colocar en la celda podemos utilizar el mtodo Clear de la siguiente


manera:

Range("A1").Clear

Ver todas las propiedades y mtodos

Los objetos tienen muchas propiedades y mtodos y a veces es difcil


pensar que los llegaremos a memorizar todos por completo. Sin
embargo, el Editor de Visual Basic es de gran ayuda porque
justamente al momento de escribir nuestro cdigo nos proporciona la
lista completa de propiedades y mtodos para un objeto.

Esto sucede al momento de introducir el punto despus del nombre


del objeto. Puedes distinguir entre las propiedades y mtodos porque
tienen iconos diferentes. En la imagen de arriba los mtodos son los
que tienen el icono de color verde.

Recuerda, los objetos son cosas en Excel y sus caractersticas las


llamamos propiedades las cuales nos ayudan a definir al objeto. Los
mtodos son las acciones que cada objeto puede realizar.

INICIO

FUNCIONES

ACERCA

Navegando el modelo de
objetos
Excel tiene un modelo de objetos el cual es una jerarqua de todos los
objetos que podemos utilizar desde el lenguaje VBA. En la parte
superior de la jerarqua se encuentra el objeto Application y todos los
dems objetos estarn por debajo de l.

24
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Acceder a objetos inferiores


Para tener acceso a los objetos que estn por debajo del objeto
Application podemos utilizar el punto. El punto nos ayuda a navegar
por la jerarqua hacia un nivel inferior. Observa lo que se muestra en
el Editor de Visual Basic al colocar un punto despus del objeto
Application:

Por ejemplo, si deseamos poner en negritas el texto de la celda A1


debemos llegar al objeto Range el cual nos dar acceso a modificar la
propiedad Bold de la siguiente manera:

Aunque esta lnea de cdigo puede tomarnos un poco de tiempo en


escribirla, describe perfectamente la jerarqua de los objetos en VBA
ya que despus de acceder el objeto de la aplicacin (Application), le
seguir el objeto del libro de trabajo activo (ActiveWorkbook) y
posteriormente el objeto de la hoja activa (ActiveSheet) para
finalmente llegar al objeto del rango de celdas (Range) y modificar
la propiedad Bold de la Fuente.

Objetos predeterminados
Existe una funcionalidad intrnseca de VBA conocida como objetos
predeterminados la cual nos permite omitir la escritura de algunos
objetos y aun as tener un cdigo funcional. Por ejemplo, en la
sentencia mostrada previamente podemos omitir el objeto Application
y tener nuestro cdigo funcionando correctamente:

Inclusive podemos omitir los objetos ActiveWorkbook y ActiveSheet


sabiendo que el cdigo se ejecutar siempre sobre el libro activo y la
hoja que est activa al momento de la ejecucin:

25
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Referencias completas a objetos


A algunas personas les gusta utilizar las referencias completas a los
objetos, es decir, especificar toda la ruta completa hasta llegar al
objeto deseado. Una razn para hacer esto es porque da una claridad
absoluta sobre la ubicacin exacta de cada objeto lo cual ayudar a
evitar cualquier mala interpretacin del cdigo.

Si decides no hacer uso de los objetos predeterminados sino que


deseas utilizar las referencias completas hacia cada objeto an hay
una manera de ahorrar algunas lneas de cdigo. Supongamos las
siguientes instrucciones en VBA:

Podemos ahorrar algunas palabras de este cdigo haciendo uso del


bloque With de la siguiente manera.

En ambos casos el resultado ser el mismo y en el ltimo


ahorraremos algunos caracteres dejando nuestro cdigo VBA claro y
legible.

Las colecciones de objetos Workbooks y Worksheets

Un objeto en VBA puede contener otro objeto y ese objeto a su vez


puede contener otro objeto y as sucesivamente. La raz de todos los
objetos en VBA se encuentra en el objeto Application el cual a su vez
contiene las colecciones de objetos Workbooks y Worksheets.

El objeto Workbook y el objeto Worksheet

El objeto Workbook representa un libro de Excel y el objeto Worksheet


representa una hoja de un libro de Excel. Como sabemos, un libro de
Excel puede tener ms de una hoja lo cual significa que un objeto
Workbook puede contener ms de un objeto Worksheet.

Ya que no hay lmite en el nmero de hojas que puede tener un libro,


se volvera complicado organizar esta relacin entre los objetos
Workbook y Worksheet y por esta razn se crearon las colecciones de

26
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

objetos. De esta manera un objeto Workbook tiene asociada una


coleccin de objetos Worksheets la cual contiene los objetos
Worksheet que representan las hojas de ese libro de Excel. De la
misma manera, el objeto Application no tiene asignados directamente
todos los libros de Excel sino que tiene una coleccin de objetos
Workbooks la cual incluir todos los objetos Workbook de los libros de
Excel que abramos en nuestro cdigo VBA.

Abrir un libro de Excel

Para abrir un libro de Excel en VBA podemos utilizar el mtodo Open


del objeto Workbooks de la siguiente manera:

Application.Workbooks.Open Filename:="C:Libro1.xlsx"

Esta instruccin abrir el archivo ubicado en C:Libro1.xlsx y lo


agregar a la coleccin de objetos Workbooks. De esta manera
podemos abrir tantos archivos como sean necesarios y para cada uno
de ellos se crear un objeto Workbook el cual ser almacenado dentro
de Workbooks.

Hacer referencia a un libro en VBA

Una vez que hemos abierto los archivos que necesitamos podremos
hacer referencia a cada uno de ellos a travs de la coleccin de
objetos Workbooks de la siguiente manera:

Application.Workbooks(1).Activate

El nmero que observas dentro de los parntesis indica el ndice del


objeto Workbook dentro de la coleccin de objetos Workbooks. De
manera predeterminada el ndice 1 ser para el libro de Excel que
contiene el cdigo VBA y a partir de ah la numeracin ser de
acuerdo al orden en que hayamos abierto otros archivos. Si
conocemos el nombre del libro podemos utilizarlo en lugar del ndice
y tener una instruccin como la siguiente:

Application.Workbooks("Libro1.xlsx").Activate

La coleccin de objetos Workbooks nos permitir acceder a todos


los libros que hayamos abierto dentro de nuestra aplicacin VBA.

Acceder las hojas de un libro

De igual manera podemos acceder las hojas de cualquier libro a


travs de su coleccin de objetos Worksheets. Esta coleccin tambin
puede ser accedida por el ndice de cada una de las hojas del libro:

Application.Workbooks(1).Worksheets(1).Range("A1").Value = "Hola"

27
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Esta instruccin accede a la hoja con el ndice 1 y coloca el valor


Hola Mundo en la celda A1. Tambin podemos acceder a una hoja a
travs de su nombre en caso de que lo conozcamos:

Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"

Agregar una nueva hoja

A travs de la coleccin de objetos Worksheets podemos crear


nuevas hojas en un libro. Observa la siguiente instruccin:

Worksheets.Add

Observa que no he iniciado la instruccin anterior con el objeto


Application, ni tampoco est precedida por el objeto Workbooks. Esta
es una sintaxis aceptable dentro de VBA e indica que se agregar una
nueva hoja al libro que est activo en ese momento. Este es un
mtodo abreviado que podemos utilizar si estamos seguros de que el
libro activo es el libro al que deseamos agregar una nueva hoja. De lo
contrario, podemos especificar tota la ruta completa:

Application.Workbooks("Libro1.xlsx").Worksheets.Add

Ahora ya sabemos que VBA tiene un objeto para representar los libros
de Excel (Workbook) y otro objeto para representar las hojas de un
libro (Worksheet). Ambos tipos de objetos son almacenados dentro de
colecciones de objetos que son conocidas como Workbooks, que se
refiere a la coleccin de libros que se han abierto y Worksheets que es
la coleccin de hojas que pertenecen a un determinado libro.

Tipos de errores en VBA


No todas las cosas funcionan bien a la primera y seguramente te
encontrars con errores al programar en Excel. Existen dos tipos de
errores en VBA: errores de sintaxis y errores en tiempo de
ejecucin.

Errores de sintaxis en VBA


Un error de sintaxis ocurre cuando tenemos un error con el lenguaje
VBA, es decir, cuando intentamos hacer algo que no est permitido.
Este tipo de errores son los ms fciles de localizar porque el Editor
de Visual Basic est configurado para avisarnos en el momento en
que encuentra un error de este tipo en nuestro cdigo.

28
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Los errores de sintaxis en VBA surgen cuando intentamos insertar


algn operador o alguna instruccin de VBA en un lugar que no le
corresponde. Observa la siguiente imagen:

En este ejemplo he intentado utilizar la palabra Next en lugar del tipo


de dato de la variable. Es por eso que el Editor de Visual Basic
muestra un mensaje de error de compilacin. La palabra Next es
parte del lenguaje VBA pero la he utilizado en el lugar inapropiado y
por eso obtengo el error.

De igual manera el Editor de Visual Basic notar si hemos utilizado


una palabra que no pertenece al lenguaje VBA. En el siguiente
ejemplo he confundido la instruccin Mod (mdulo) y he colocado la
palabra Mud.

Estos son solo unos ejemplos de errores de sintaxis que podemos


cometer pero como lo he mencionado antes, el Editor de Visual Basic

29
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

nos alertar sobre dichos errores y podremos detectarlos y


corregirlos.

Errores en tiempo de ejecucin


Un error en tiempo de ejecucin ocurre cuando nuestra aplicacin ya
est siendo ejecutada e intenta hacer alguna accin que no est
permitida por Excel o por Windows. Esto ocasionar que nuestra
aplicacin colapse o que Excel deje de responder.

Este tipo de errores son ms difciles de encontrar pero aun as se


podrn encontrar algunos de ellos al hacer pruebas y depuracin de
nuestra aplicacin. Algunos ejemplos de este tipo de errores son los
siguientes:

Intentar realizar una operacin no permitida por el ordenador.


Por ejemplo una divisin entre cero o intentar sumar una
cadena de texto y un valor Double.

Intentar utilizar una librera de cdigo que no est accesible en


ese momento.

Utilizar un bucle con una condicin que nunca se cumple.

Tratar de asignar un valor que est fuera de los lmites de una


variable.

Existen muchas otras razones por las que podemos tener un error en
tiempo de ejecucin. La mejor manera de prevenir estos errores ser
haciendo una depuracin de nuestro cdigo pero eso ser tema de
otro artculo.

Lo importante por ahora es estar consiente de estos dos tipos de


errores en VBA y saber que debemos estar atentos para corregir
todos los errores de sintaxis de nuestro cdigo y minimizar al mximo
los posibles errores de ejecucin.

Depurar macros en Excel


Cuando nos encontramos con errores en nuestras macros podemos
depurar el cdigo utilizando el Editor de Visual Basic para encontrar
fcilmente los errores que pueda contener nuestro cdigo VBA.
Considera la siguiente macro:

30
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Depurar cdigo VBA


Para iniciar con la depuracin del cdigo podemos seleccionar la
opcin de men Depuracin > Paso a paso por instrucciones o
simplemente pulsar la tecla F8.

Esto har que se inicie la ejecucin en la primera lnea, la cual se


mostrar con un fondo amarillo indicando que esa instruccin es la
que est por ejecutarse.

Para continuar con la depuracin debemos pulsar de nuevo la tecla F8


hasta llegar al final del cdigo. Cada vez que pulsamos la techa F8
suceden las siguientes cosas:

31
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

1. Excel ejecuta la instruccin que est sombreada en color


amarillo

2. Si Excel encuentra un error en la instruccin, entonces enviar


un mensaje de error.

3. Por el contrario, si no hubo error en dicha instruccin, entonces


Excel marcar en amarillo la siguiente instruccin a ejecutar.

De esta manera podemos ejecutar cada una de las lneas de nuestro


cdigo VBA y validar que no exista error alguno. Regresando a
nuestro ejemplo, al momento de llegar a la tercera instruccin y
pulsar la tecla F8, Excel enviar el siguiente mensaje de error:

El mensaje nos advierte que el objeto no admite esa propiedad o


mtodo y se est refiriendo al objeto Range en donde el mtodo
Value no est escrito de manera correcta y por lo tanto el depurador
de VBA no reconoce dicha propiedad. Pulsa el botn Aceptar para
cerrar el cuadro de dilogo y poder corregir el error en el cdigo.

Ya hemos hablado sobre los diferentes tipos de errores en VBA y la


depuracin nos ayudar a probar nuestro cdigo y a encontrar la gran
mayora de los errores que podamos tener. Es probable que al
principio veas a la depuracin como un trabajo muy exhaustivo pero
cuando tus programas y macros comiencen a crecer entonces vers
todos los beneficios que nos da la depuracin de macros en Excel.

Variables en VBA

Cuando programamos en VBA frecuentemente necesitamos un


repositorio para almacenar el resultado de alguna operacin. Las
variables en VBA son utilizadas para guardar valores y su tipo
depender de clase da dato que deseamos guardar dentro de ellas.

En VBA existen variables de tipo entero que almacenan nmeros,


variables de tipo doble que tambin almacenan nmeros pero con
decimales, variables de tipo texto para guardar una cadena de
caracteres entre algunos otros tipos de variables. A continuacin
haremos una revisin de cada uno de estos tipos.

32
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Variables de tipo entero

Las variables de tipo entero son utilizadas para guardar nmeros


enteros. Debemos utilizar la palabra clave Integer para declarar una
variable de este tipo.

Dim x As Integer
x=6

En la primera instruccin estoy declarando la variable con el nombre


x y estoy indicando que ser del tipo Integer. Declarar una
variable significa avisar a Excel sobre la existencia de dicho
repositorio para guardar informacin. En la segunda instruccin
asigno el valor 6 a la variable x.

Variables de tipo doble

Las variables de tipo doble pueden almacenar nmeros con el doble


de precisin incluyendo nmeros decimales. La palabra clave para
este tipo de variables es Double.

Dim x As Double
x = 3.1416

Aunque las variables de tipo doble pueden almacenar nmeros


enteros sin problema, no es recomendable hacerlo porque estaremos
desperdiciando espacio en la memoria del ordenador. Es decir, el
tamao reservado para una variable doble es el adecuado para
guardar nmeros decimales, si solo guardamos un nmero entero
quedar especio sin utilizar. Por lo tanto es recomendable utilizar
siempre el tipo de variable adecuado para cualquier nmero.

Variables de tipo texto

Una variable de tipo texto se declara con la palabra clave String. En el


siguiente cdigo declarar la variable libro y posteriormente le
asignar un valor.

Dim libro As String


libro = "Programacin en Excel"

Variables de tipo lgico

Una variable de tipo lgico es aquella que puede almacenar


solamente dos valores: falso o verdadero. La palabra clave para
definir estas variables es Boolean.

Dim continuar As Boolean


continuar = True

33
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

La primera lnea declara la variable booleana y en la segunda le


asignamos un valor. Solamente podemos asignar dos valores a este
tipo de variables: True (verdadero) y False (falso).

Estos son los tipos de variables bsicos en VBA. Existen algunos ms


que ir tratando en artculo posteriores. Mientras tanto es
indispensable que aprendas a declarar adecuadamente las variables
en VBA porque ser inevitable hacer uso de ellas dentro de nuestros
programas.

Cadenas de texto en VBA

Existen varias funciones en VBA que podemos utilizar para manipular


cadenas de texto. A continuacin revisaremos algunas de estas
funciones VBA y observaremos el resultados de cada una de ellas.

Para iniciar con esta revisin, debes colocar un botn de comando


dentro de una hoja de Excel y despus hacer doble clic sobre l para
introducir el cdigo.

Unir cadenas de texto

Para unir dos (o ms) cadenas de texto podemos utilizar el operador


&. Observa el siguiente cdigo:

34
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

El resultado de este cdigo es el siguiente:

La funcin Left

La funcin Left en VBA nos ayuda a extraer un nmero determinado


de caracteres a la izquierda de la cadena de texto.

En el cdigo he especificado los 7 caracteres a la izquierda de la


cadena de texto. El resultado es el siguiente:

35
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

La funcin Right

La funcin Right nos permite extraer caracteres a la derecha de una


cadena de texto. Observa el siguiente cdigo:

En esta funcin la cuenta de caracteres se hace de derecha a


izquierda siendo el ltimo carcter de la cadena de texto el primero
que extraer la funcin Right. Para este ejemplo he pedido los ltimos
5 caracteres a la derecha de la cadena de texto:

La funcin Len

La funcin Len nos ayuda a conocer la longitud de una cadena de


texto, es decir, la cantidad de caracteres que conforman a una
cadena.

36
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

La funcin Len contar cada uno de los caracteres de la cadena y


regresar un nmero:

La funcin InStr

La funcin InStr devuelve la posicin de un carcter dentro de la


cadena. Supongamos que quiero encontrar la posicin de la letra M
dentro de la cadena que contiene el valor Hola Mundo.

Es importante resaltar que la funcin InStr es sensible a maysculas y


minsculas. Observa cmo he especificado buscar la letra M
(mayscula) y el resultado de la funcin es el siguiente:

37
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

La funcin InStr encontr la letra M en la posicin nmero 6


comenzando desde la izquierda. Si en lugar de la letra M busco la
letra m (minscula), la funcin InStr devolver el valor 0 (cero)
indicando que no ha encontrado dicha letra.

Adems de indicar letras individuales en la funcin InStr, tambin


podemos especificar palabras completas por ejemplo:

cadena = "Hola Mundo"


InStr (cadena, "Mundo")

Por ejemplo, al buscar la palabra Mundo dentro de la cadena de


texto obtendremos como resultado la posicin nmero 6 ya que en
esa posicin comienza la palabra Mundo.

La funcin Mid

Con la funcin Mid podemos extraer una subcadena de otra cadena


de texto con tan solo especificar la posicin inicial de la subcadena y
su longitud. Observa el siguiente ejemplo:

La funcin Mid se mover a la posicin 15 de la cadena y a partir de


ah contar 7 caracteres y devolver como resultado la cadena
comprendida entre ambas posiciones. En nuestro ejemplo, la palabra
funcion es la que se encuentra entre dichas posiciones.

38
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Las funciones de texto en VBA nos ayudarn a manipular


adecuadamente las cadenas de texto y podremos obtener los
resultados que necesitamos.

La declaracin If-Then en VBA


En ocasiones necesitamos ejecutar algunas lneas de cdigo de
nuestra macro solamente cuando alguna condicin se haya cumplido.
La declaracin If-Then nos permite validar una condicin para
tomar una decisin adecuada.

La declaracin If-Then en VBA es la ms bsica de todas las


declaraciones de control de flujo que son aquellas declaraciones que
nos permiten tomar decisiones en base a una condicin. Esta
declaracin la podemos traducir como Si-Entonces y la utilizaremos
en situaciones donde necesitamos realizar la siguiente evaluacin: Si
se cumple la condicin Entonces haz esto.

Ejemplo de la declaracin If-Then


Para probar el funcionamiento de la declaracin If-Then inserta un
botn de comando (Control ActiveX) en una hoja de Excel y haz doble
clic sobre l para colocar el siguiente cdigo:

39
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En el primer paso se hace la declaracin de las variables que


utilizar en el resto del cdigo.

En el segundo paso asigno el valor de la celda A1 a la variable


calificacin.

El tercer paso contiene la declaracin If-Then y que prueba Si el


valor de la variable calificacin es mayor o igual a 60. En caso
de ser verdadero Entonces se asigna el valor Aprobado a la
variable resultado.

El ltimo paso es asignar el valor de la variable resultado a la


celda B2.

Ahora observa el resultado al ejecutar esta macro.

La declaracin Else
Parece que todo funciona muy bien en el cdigo anterior pero an lo
podemos mejorar agregando la declaracin Else de manera que
tengamos una declaracin de la forma If-Then-Else. Esta variante nos
permite hacer la siguiente evaluacin: Si se cumple la condicin
Entonces haz esto De lo contrario haz otra cosa.

La declaracin Else en VBA nos permite indicar otro bloque de


instrucciones que se deben ejecutar en caso de que la condicin sea

40
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

falsa. De esta manera podemos tomar una accin determinada en


caso de que la condicin se cumpla o en caso de que no se cumpla.

Ahora modificar el ejemplo anterior para asegurarme de que en caso


de que la condicin de calificacin mayor o igual a 60 no se cumpla se
despliegue el resultado reprobado. Observa el siguiente cdigo.

En el tercer paso puedes observar la declaracin If-Then-Else.


Ahora observa el efecto de este cambio al momento de ejecutar el
cdigo:

Por ltimo quiero que observes que en este segundo ejemplo la


declaracin If-Then-Else termina con la declaracin End If. Siempre
que utilicemos la declaracin If-Then o la declaracin If-Then-Else
debemos terminar con End If.

La nica ocasin donde no se termina con End If es cuando la


declaracin If-Then se puede colocar en una sola lnea como es el
caso del primer ejemplo de este artculo.

Acceder celdas con VBA

41
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Existe un par de maneras para acceder las celdas de nuestras hojas


utilizando VBA. Podemos utilizar el objeto Range y tambin podemos
utilizar el objeto Cells. A continuacin revisaremos ambos objetos.

Seleccionar una celda

Si deseamos seleccionar la celda B5 podemos utilizar cualquiera de


las dos instrucciones siguientes:

Range("B5").Select
Cells(5, 2).Select

El objeto Cells tiene como primer argumento el nmero de fila y como


segundo argumento el nmero de columna.

Seleccionar un rango

Para seleccionar un rango de celdas lo ms conveniente es utilizar el


objeto Range de la siguiente manera:

Range("A1:D5").Select

El objeto Cells no nos permite seleccionar un rango porque solamente


podemos especificar una celda a la vez.

Establecer el valor de una celda

Para establecer el valor de una celda podemos utilizar alguna de las


siguientes instrucciones:

Range("B5").Value = 500
Cells(5, 2).Value = 600

Ventaja del objeto Cells

Es mucho ms comn encontrarse el objeto Range en las aplicaciones


VBA, sin embargo el objeto Cells ofrece una ventaja que debemos
considerar cuando necesitamos hacer un recorrido programtico por
varias celdas ya que ser muy sencillo especificar las filas y columnas
utilizando una variable numrica.

For i = 1 To 10
For j = 1 To 5
Cells(i, j).Value = i * j
Next j
Next i

El bucle For-Next en VBA

42
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En trminos de programacin, un bucle es una instruccin que nos


permitir ejecutar repetidamente un conjunto de instrucciones hasta
que se cumpla la condicin que hayamos especificado. Los bucles
tambin son conocidos como ciclos.

La instruccin For-Next
El bucle For-Next es una de las instrucciones ms tiles al
programar en VBA. La sintaxis de esta instruccin es la siguiente:

For inicializacin de variable To lmite


{Conjunto de instrucciones que se repetirn}
Next incrementar variable

Inicializacin de variable: Ya que la instruccin For Next repite


un conjunto de instrucciones un nmero de veces especfico,
debemos inicializar una variable que ir contando cada una de
las repeticiones. Es comn encontrar la instruccin escrita como
For i = 1 lo cual indica que la variable i llevar la cuenta de las
repeticiones que deseamos que inicien en 1.

Lmite: Adems de inicializar la variable que llevar la cuenta de


las repeticiones, debemos especificar un lmite donde se
detendr el ciclo. Este lmite es indicado con la instruccin To.
De esta manera, si deseamos hacer un bucle que vaya desde 1
hasta 5 la instruccin la escribiremos como For i = 1 To 5.

Incrementar variable: El final del conjunto de instrucciones se


indica con la instruccin Next y que va seguida del nombre de
la variable que lleva la cuenta para incrementar su valor en
uno. As podemos terminar el bucle con la instruccin Next i.

Ejemplo de un bucle For-Next


A continuacin un ejemplo muy sencillo de un bucle For-Next donde
la nica instruccin que se repite es la de mostrar una ventana de
dilogo con el valor de la variable i:

43
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Con este bucle provocaremos que se muestre una ventana de dilogo


5 veces y en cada una de ellas se mostrar el valor actual de la
variable i que comenzar con 1 y terminar con 5. Observa el
resultado:

Ya que la variable i comienza con el valor 1, el primer cuadro de


dilogo muestra el mensaje i = 1, despus i = 2 y as
sucesivamente hasta llegar al lmite.

El bucle For-Next en VBA nos ayudar a crear ciclos que ejecutarn


un conjunto de instrucciones hasta alcanzar el lmite que hayamos
especificado.

Operadores lgicos en VBA

Los operadores lgicos ms comunes en VBA son: And y Or. Cada uno
de estos operadores es de mucha utilidad para evaluar condiciones y
tomar decisiones adecuadas sobre el cdigo que ser ejecutado.

El operador lgico And

El operador lgico And es el operador que nos ayuda a forzar el


cumplimiento de dos condiciones. Este operador lo traducimos como
Y de manera que para ejecutar un bloque de cdigo se debe
cumplir la condicin1 Y la condicin2.

44
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En el siguiente ejemplo tengo la calificacin de dos exmenes.


Solamente si ambos exmenes tienen una calificacin mayor a 70,
entonces el estudiante ser aprobado, de lo contrario la calificacin
ser reprobatoria.

El cdigo que se ejecutar al pulsar el botn ser el siguiente:

Al ejecutar este cdigo obtendremos el resultado Aprobado ya que


ambos exmenes tienen una calificacin mayor a 70:

De esta manera comprobamos que el operador lgico And nos


ayuda a forzar que ambas condiciones se cumplan. En cambio, si el
valor de una de las celdas es menor a 70, entonces tendremos un
resultado diferente:

45
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

El operador lgico And devolver el valor verdadero solamente


cuando ambas condiciones se cumplan y ser suficiente con que una
de ellas no se cumpla para obtener un resultado negativo.

El operador lgico Or

El operador lgico Or lo traducimos como O y nos permitir saber


si al menos una de las condiciones se cumple, es decir, si la
condicin1 O la condicin2 se cumplen.

Si cambiamos un poco el ejemplo anterior y decimos que es suficiente


que alguna de las dos calificaciones sea mayor a 70 para que el
estudiante sea aprobado, entonces podemos modificar el cdigo de la
siguiente manera:

Si alguna de las calificaciones es mayor a 70, entonces el estudiante


ser aprobado:

La nica manera en que el operador lgico Or nos devuelva un


valor falso es que ninguna de las condiciones se cumpla. En nuestro
ejemplo, el alumno estar reprobado solamente cuando ambas
calificaciones sean menores a 70:

46
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Podemos concluir que al evaluar dos condiciones, los operadores And


y Or se comportarn de la siguiente manera:

Eventos en VBA
Los eventos en VBA nos ayudan a monitorear las acciones que
realizan los usuarios en Excel de manera que podamos controlar la
accin a tomar cuando el usuario hace algo especfico como el activar
una hoja o hacer clic en alguna celda.

Ejemplos de eventos en VBA


Algunos ejemplos de eventos en VBA son los siguientes:

WorkbookOpen: El usuario abre un libro de Excel.

WorkbookActivate: El usuario activa un libro de Excel.

SelectionChange: El usuario cambia la seleccin de celdas en


una hoja.

Para descubrir los eventos que tiene un objeto es suficiente con abrir
el Editor de Visual Basic y posteriormente el Examinador de objetos
(F2). En el panel izquierdo se mostrarn los objetos y en el panel
derecho las propiedades, mtodos y eventos de dicho objeto. Podrs
distinguir los eventos porque tienen un icono en forma de rayo (color
amarillo):

47
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Un ejemplo de eventos en VBA


El ejemplo que crearemos en esta ocasin es para activar un cuadro
de dilogo con el mensaje Bienvenido a la Hoja 2 y que se mostrar
cuando activemos la Hoja2 de nuestro libro. Para comenzar, debes
seleccionar el objeto Hoja2 del panel izquierdo del Editor de Visual
Basic y posteriormente seleccionar la opcin Worksheet:

Esto crear automticamente la subrutina para el evento


SelectionChange pero podemos fcilmente crear otro evento
seleccionndolo de la lista de Procedimientos. Para este ejemplo
crear el evento Activate:

48
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Una vez creada la subrutina para el evento Activate solamente


insertar el cdigo para que se muestre el mensaje dentro del cuadro
de dilogo:

Ahora que hemos definido una accin asociada al evento Activate de


la Hoja2, el mensaje se mostrar cada vez que actives la Hoja2.

Los eventos en VBA son de mucha utilidad porque nos ayudan a


controlar el momento exacto en que deseamos ejecutar algn bloque
de cdigo al iniciarse alguna accin por el usuario.

Fecha y hora en VBA


Los valores de fecha y hora en VBA pueden ser manipulados de
diversas maneras. En esta ocasin aprenderemos cmo obtener el
ao, mes y da en VBA y cmo hacer operaciones bsicas con fechas.

Para realizar estos ejemplos debes colocar un control de botn en una


hoja de Excel y colocar las lneas de cdigo mostradas.

Obtener la fecha y hora actual


Para obtener la fecha actual en VBA utilizamos la funcin Date y para
obtener la hora actual usamos Now.

49
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En este ejemplo las variables fechaActual y horaActual contienen la


fecha y horas actuales respectivamente.

Obtener el ao, mes y da


En el ejemplo anterior he obtenido la fecha actual en la variable
fechaActual, sin embargo, si deseo mostrar solamente el ao puedo
utilizar la funcin Year.

El resultado de este cdigo es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la funcin


Month y para obtener el da la funcin Day.

Obtener la hora, minuto y segundo

50
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Para obtener la hora de la variable horaActual utilizaremos la funcin


Hour de la siguiente manera:

El resultado es el siguiente:

Para obtener el minuto y el segundo podremos utilizar las funciones


Minute y Second.

Convertir una cadena de texto en fecha


Ya hemos visto que la funcin Date nos devuelve la fecha actual, pero
podemos utilizar otra funcin que nos permitir convertir una cadena
de texto en una fecha. La funcin que utilizaremos para este ser la
funcin DateValue.

51
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

El nico argumento de la funcin DateValue es la cadena de texto que


convertir en fecha. El resultado de esta conversin es el siguiente:

Sumar das a una fecha


Para sumar das a una fecha en VBA utilizaremos la funcin DateAdd.
Esta funcin nos permite especificar la cantidad exacta de das a
sumar:

Observa el resultado de sumar 5 das a la fecha original:

52
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

El primer argumento de la funcin DateAdd determina la unidad de


tiempo que ser sumada. En este ejemplo especifiqu d para
indicar das, pero podemos utilizar otras medidas de tiempo:

yyyy para aos

m para meses

d para das

ww para semanas

Las fechas y horas son un tipo de dato muy comn con el que
seguramente tendrs que trabajar al crear tus macros. Es importante
que aprendas a utilizar las funciones VBA que nos permitirn
manipular adecuadamente la informacin.

Creando una funcin VBA

Como hemos visto en el artculo Tu primera macro con VBA, una


subrutina nos ayuda a organizar y agrupar las instrucciones en
nuestro cdigo. El da de hoy te mostrar cmo crear una funcin
VBA, la cual es similar a una subrutina excepto por una cosa.

A diferencia de las subrutinas, las funciones VBA fueron diseadas


para retornar un valor. A travs de una funcin podemos agrupar
cdigo que nos ayudar a hacer algn clculo especfico y obtener un
resultado de regreso. Una funcin VBA tambin es conocida como
Funcin Definida por el Usuario, UDF por sus siglas en ingls, y una
vez creada puede ser utilizada de la misma manera que las funciones
incluidas en Excel como la funcin SUMAR o la funcin BUSCARV. Esto
hace que las funciones VBA sean una herramienta muy poderosa.

A continuacin mostrar una funcin que toma un rango y regresa la


suma de cada una de sus celdas. Es importante insertar el cdigo
dentro de un Mdulo tal como se muestra en el artculo Tu primera
macro con VBA. Posteriormente ir explicando el detalle de la funcin.

53
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

La palabra clave Function

La primera lnea de cdigo comienza con la palabra Function la cual


define el inicio de la funcin. Observa tambin cmo la ltima lnea de
cdigo es End Function que est especificando el trmino de la
funcin.

Inmediatamente despus de la palabra clave Function se debe


especificar el nombre de la funcin que en este ejemplo es MiSuma
seguida de parntesis que de manera opcional pueden contener una
lista de parmetros.

Parmetros de una funcin VBA

Los parmetros son el medio por el cual pasamos informacin de


entrada a la funcin. Algunas funciones necesitarn de dichas
entradas para realizar algn clculo y algunas otras no, es por ello
que los parmetros de una funcin son opcionales. Puedes incluir
tantos parmetros como sean necesarios y solamente debes recordar
separarlos por una coma.

Un parmetro no es ms que una variable y por lo tanto puedes


observar que en el ejemplo he definido la variable rango que ser del
tipo Range.

Valor de retorno

Como mencion al principio, la caracterstica principal de una funcin


es que puede regresar un valor. Es por eso que al definir una funcin
se debe indicar el tipo del valor de retorno que tendr dicha funcin.
En este caso el valor de retorno ser de tipo Double y se est
especificado por las palabras As Double que aparecen despus de
los parntesis.

Cuerpo de la funcin VBA

54
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Una vez definida la funcin se pueden especificar todas las


instrucciones que sern ejecutas. En el ejemplo he comenzado por
definir un par de variables, la variable celda que ser del tipo Range
y la variable resultado del tipo Double. En sta ltima variable es
donde se ir acumulando la suma de todas las celdas.

La parte central de la funcin se encuentra en la instruccin For Each


ya que realiza un recorrido por todas las celdas del rango que fue
especificado como parmetro. Para cada celda que se encuentra se
va sumando su contenido en la variable resultado.

Retornando el valor

Una vez que se han hecho los clculos necesarios, es importante


regresar el valor. Para hacerlo es indispensable igualar el nombre de
la funcin al valor o variable que contiene el valor que se desea
regresar. En nuestro ejemplo, la variable resultado es la que contiene
la suma de todas las celdas por lo que se iguala con el nombre de la
funcin en la lnea MiSuma = resultado.

Probando la funcin VBA

Finalmente probar la funcinVBA recin creada dentro de una hoja


de Excel. Tal como lo definimos en el cdigo, el nico parmetro de la
funcin debe ser un rango del cual me regresar la suma de los
valores de la celda. Observa el siguiente ejemplo.

Aunque la funcin MiSuma hace lo mismo que la funcin de Excel


SUMAR, nos ha servido de ejemplo para introducir el tema de las
funciones en VBA. Con este ejemplo tan sencillo hemos creado
nuestra primera funcin VBA.

Crear un Userform
Para crear un Userform debemos hacer lo siguiente:

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

Insertar un objeto Userform. Esto podemos hacerlo fcilmente:

55
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Seleccionamos el Libro Excel donde trabajaremos, en nuestro caso


VBAProject (Libro2).

Hacemos clic derecho en el mismo y elegimos la opcin Insertar >


Userform

Como se ve en la fotografa, veremos que aparece un objeto


Userform1 que cuelga de la carpeta Formularios

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. Simplemente hacemos clic izquierdo en el control
deseado y luego clic izquierdo en el Userform, en el sitio donde
querramos agregar el control.

56
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

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).

Si te posicionas sobre los Controles del Cuadro de herramientas, vers


que aparece su nombre. Simplemente hacemos clic izquierdo en el
control deseado y luego clic izquierdo en el Userform, en el sitio
donde querramos agregar el control. En nuestro caso hemos
agregado algunos controles de forma desordenada dentro
del Userform.

Creacin de formularios de usuario (I)


Ejemplos de interaccin con mdulos y macros.

57
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Un formulario es una ventana o cuadro de dilogo que contiene un


conjunto de controles insertados por nosotros desde la barra de
herramientas o cuadro de control al cual se le denomina tambin
conjunto de Controles Activex.

En el VBA a un formulario se le denomina USERFORM quizs


recogiendo el nombre que tradicionalmente lo ha usado el lenguaje
de programacin Visual Basic.

Use la siguiente secuencia para insertar un formulario en la ventana


del editor del Visual Basic.

La siguiente es una imagen de un UserForm

58
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

En la figura anterior se muestra el formulario llamado UserForm1. Si


se desea cambiar este nombre se debe hacer clic en la opcin Name
de la ventana de propiedades. Si se desea que el formulario se llame
"Panel de ingreso de datos", entonces se debe hacer clic en la
propiedad Caption de la ventana de propiedades y digitar dicho texto
en el lado derecho de esta propiedad.

Ventana de Proyectos

Al abrir el Editor del VBA Usando <Alt> + <F11> se acede a un


conjunto de ventanas que conforman la ventana del editor.

Entre estas ventanas tenemos:

59
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Si en esta ventana no existe ningn formulario, se debe usar


<Insertar> - <UserForm>. Esto permite crear la carpeta
<Formularios> y dentro de ella estarn cada uno de los formularios
que se hayan insertado. En el caso de la figura anterior, se ha creado
un primer formulario llamado Userform1.

Al insertar un formulario de usuario en la ventana central se


dispondr del formulario mismo, segn se muestra en la siguiente
figura.

Al insertar un formulario, se dispondr del cuadro de herramientas


compuesto por un conjunto de botones de control del formulario, los
que se muestra en la siguiente figura.

60
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Por debajo de la ventana de proyectos se dispondr de la Ventana de


Propiedades. En esta ventana se visualizar las propiedades que
posee un determinado objeto. En la siguiente imagen se muestra la
ventana de propiedades de un formulario, ya que ste es el que est
activo.

Nota

Si se hace clic en una hoja de un libro, en la ventana de

Propiedades se visualizar las propiedades de la hoja.

61
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Cmo ejecutar un formulario

En la barra de herramientas que aparece debajo de los comandos, se


muestra tres controles similares a . Para ejecutar un
formulario es suficiente hacer clic en el primer botn. Para detener la
ejecucin del formulario, se debe hacer clic en el segundo y el tercero
permite dar por terminado o cancelar la ejecucin del formulario.

El contenido de un formulario depende de qu queremos hacer


mediante esta ventana:

Puede servirnos como panel de ingreso de datos y emisin de


resultado de clculo que hagamos con los datos

Puede servirnos para ingresar datos a una hoja de clculo

Puede servirnos para recuperar datos almacenados en una hoja


de clculo

Puede servirnos como un panel de dilogo que permita extraer


y/o ingresar datos a y desde una hoja de un libro.

En la siguiente figura hemos insertado un cuadro combinado, un


cuadro de texto y un botn de comando.

En esta figura, se encuentra seleccionado el botn de comando.

Cada uno de estos controles se han insertado haciendo clic en sus


iconos que aparecen en la ventana del Cuadro de herramientas y
luego trazando un pequeo recuadro en el formulario.

62
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Cada uno de estos controles tienen un nombre interno, el cual se


modifica usando la propiedad Name, el cual es usado en la
codificacin de las acciones que se debe realizar al activar dicho
control. Alguno de ellos tienen tambin la propiedad Caption, que
permite ingresar un texto en dicho botn de control y que servir para
colocarle una etiqueta al botn, como ocurre con el botn de
comando que se muestra en la figura anterior: CommandButton 1.

Si se hace doble clic en uno de estos controles, se puede acceder


directamente al cdigo que controla el uso de dicho botn.

Las acciones que se han enumerado lneas arriba se pueden llevar a


cabo mediante el uso de los cuadros de control.

C RE A N D O FO R M U LA R I O S

Escriba: Nombre en la celda A 1.


En B1 escriba: Direccin y en C1 escriba: Telfono.
Estos van centrados, subrayados y en negrita. A
la columna A aplique ancho 35 y 40 a la columna B.

Un formulario es una ventana que se programa por medio de controles y


estos controles responden a sucesos que nosotros programamos. Todo esto
se encuentra dentro de Visual Basic.

A cont inuacin veamos cmo crear un formulario y cmo


programarlo:

1. Presione La Teclas A lt + F11, para entrar al editor de Visual Basic.


2. Active las siguientes opciones:
a. De clic en el Men Ver y elija la opcin
Explorador de Proyectos
b. De clic en el Men ver y elija la
opcin Ventana Propiedades
3. En el Men Insertar de clic en la Opcin UserForm.
a. VisualBasic
insertar un nuevo
formulario llamado:
UserForm1.
b. De clic en el
Formulario
USERFORM1 para
activar el Cuadro
de Herramientas,
si no se activa de
clic en el Men Ver
y elija la opcin
Cuadro de
Herramientas.
c. En el panel de
propiedades de clic

63
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

sobre la propiedad
Caption y escriba
su nombre con
letras maysculas.
d. El formulario que vamos a programar tiene el siguiente
aspecto, y as debe disearlo:

Las palabras: Nombre,


Direccin y Telfono son
Etiquetas (Label)
Los cuadros que estn
al lado derecho de
cada etiqueta se
llaman: Cuadros de
Texto (TextBox) Y
abajo se ve un Botn
de comando
(CommandButton)
4. En el Cuadro de
Herramientas de clic
sobre el Control
Etiqueta (el que tiene
la A ) y luego de clic en
el Formulario
USERFORM1 para
insertar la etiqueta.
a. Observar un
recuadro con el
nombre Label1
b. De un clic en la
propiedad Caption
de la etiqueta y
escriba la palabra:
Nombre.

c. Si por error da doble clic en la etiqueta y lo manda a la pantalla de


programacin de la etiqueta, solo de doble clic en UserForm1 que
se encuentra en el Explorador de Proyecto.
5. En el Cuadro de Herramientas de clic sobre el control Cuadro de
Texto (el que tiene ab) y luego de clic en el formulario USERFORM1
al lado derecho de la etiqueta que dice Nombre. Este cuadro de
texto se llama TextBox1 y debe de estar vaco.
6. Repita los dos pasos anteriores insertando dos controles Etiqueta
y dos
controles Cuadro de texto escribiendo Direccin en la propiedad
Caption de la Label2 y Telfono en la Label3.
7. En el Cuadro de Herramientas de clic sobre el control Botn de
Comando y luego de clic sobre el Formulario USERFORM1
a. De clic en la propiedad Caption y escriba: Insertar.
b. Si por error da doble clic en el Botn y lo manda a la ventana de
programacin, cierre esta ventana.

64
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

8. Ahora de doble clic sobre el cuadro de texto llamado: Textbox1 que se


encuentra al frente de la etiqueta Nombre y vamos a programarlo.

Cuando salga la ventana de Cdigo escriba las instrucciones que se

encuentran en letra negrita : Private Sub TextBox1_Change()


Range("A 3").Select
A ctiveCell.For mula R1C1 = TextBox1
End Sub

Nota. Lo que est en azul lo genera Excel automticamente, usted solo

escribir lo que est en Negrita. Estos comandos le indican a Excel que

se vaya a la celda A 3 y escriba lo que hay en el Textbox1.

Para volver al Formulario cierre la ventana de Cdigo.

9. Ahora de doble clic sobre el cuadro de texto llamado: Textbox2 que se


encuentra al frente de la etiqueta Direccin y vamos a programarlo.
Cuando salga la ventana de Cdigo escriba las instrucciones que se
encuentran en letra negrita:

Private Sub TextBox2_Change()


Range("B3").Se lect
A ctiveCell.For mula R1C1 = TextBox2
End Sub

Estos comandos le indican a Excel que se vaya a la celda B3 y escriba lo


que hay en el Textbox2. Para volver al Formular io cierre la ventana
de Cdigo.
10. Ahora de doble clic sobre el cuadro de texto llamado: Textbox3 que se
encuentra al frente de la etiqueta Telfono y vamos a programarlo.
Cuando salga la ventana de Cdigo escriba las instrucciones que se
encuentran en letra negrita:

Private Sub TextBox3_Change()


Range("C3").Select
A ctiveCell.For mula R1C1 = TextBox3
End Sub

Estos comandos le indican a Excel que se vaya a la celda C3 y escriba lo


que hay en el Textbox3. Para volver al Formulario cierre la ventana de
Cdigo.

11. Ahora de doble clic sobre el control Botn de Comando para


programarlo y despus inserte el siguiente cdigo:

Private Sub
CommandBu
tton1_Click()
Selection.E
ntireRow.
Insert
TextBox1
= Empty
TextBox2 = Empty

65
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

TextBox3 = Empty
TextBox1.Set Foc us
End Sub

Nota. El comando Empty es empleado para blanquear los Textbox, es


decir, para dejarlos vacos.

12. Ahora presione la tecla de funcin F5 para ejecutar el Formulario


Userform1.
Escriba los datos que all se piden (Nombre, direccin y telfono)
seguidos de la tecla Enter . En el campo direccin escriba el
barrio.
Todo lo que escriba en los Cuadros de Texto (Textbox) se escribir
en Excel
Cuando presione el botn Insertar, se insertar una fila en blanco y
los Cuadros de texto (Textbox) quedarn vacos.
Inserte cinco registros con nombre, barrio y telfono. Los datos
pueden ser inventados.

13. Ahora quite los comandos de los procedimientos:


textbox1_change(), textbox2_change(), y textbox3_change(), y pngalos
al principio del procedimiento Commandbutton1_click() para que quede
de la siguiente manera:
Private
Sub
TextBox1_
Change()
End Sub
Private
Sub
TextBox2_
Change()
End Sub
Private
Sub
TextBox3_
Change()
End Sub

Private Sub CommandButton1_Click()


Range("A 3").Select
A ctiveCell.For mula R1C1 = TextBox1
Range("B3").Se lect
A ctiveCell.For mula R1C1 = TextBox2
Range("C3").Select
A ctiveCell.For mula R1C1 = TextBox3
Selectio
n.Entire
Row.
Insert
TextBox
1 =
Empty

66
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

TextBox
2 =
Empty
TextBox
3 =
Empty
TextBox
1.Set
Foc us
End Sub

Observe que los procedimientos: TextBox quedaron vacos. Ejecute de


Nuevo el formulario pulsando la tecla F5 y observe qu sucede.
14. Guarde su archivo con su nombre en la carpeta Mis Documentos con la
opcin: Libro de Excel habilitado para macros.

15. Ahora elimine el cuadro de texto TextBox2 y en su lugar inserte un


ComboBox. El formulario queda as:

16. Ahora de un clic sobre el ComboBox1 y en la ventana de


Propiedades busque la opcin: TabIndex y escriba: 2 y pulse Enter.
De un clic sobre el TextBox3 y en la propiedad TabIndex escriba 3 y
pulse Enter.

17. Frente a la etiqueta direccin, qued un combobox. Ahora de doble clic


en el botn Insertar y cambie
textbox2 por combobox1, para que quede como se muestra a
continuacin:

Private Sub CommandButton1_Click()


Range("A3").Select
ActiveCell.FormulaR1C1 = TextBox1
Range("B3").Select
ActiveCell.FormulaR1C1 = ComboBo x1
Range("C3").Select
ActiveCell.FormulaR1C1 = TextBox3

67
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Selection.EntireRow.Insert
TextBox1 = Empty
ComboBox1 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub

18. De doble clic sobre el formulario, en la parte gris con puntos y busque el
evento Initialize al lado derecho para que escriba el siguiente cdigo:

Private Sub UserForm_Initialize()


ComboBo x1.A
ddIte m "CHA
PINERO"
ComboBo x1.A
ddIte m "SA N
LUIS" ComboBo
x1.A ddIte m
"TEUSA QUILLO"
ComboBo x1.A
ddIte m "GA
LERA S"
ComboBo x1.A
ddIte m "EL LA
GO" ComboBo
x1.A ddIte m "EL
CA MPN"
End Sub

Este comando: A
ddItem lo que
hace es inicializar
el combobox con
una lista de Barrios
que van a ser
usados en el
momento de meter
los datos.

Pulse la tecla F5
para que vea el
funcionamiento del
formulario. Inserte

68
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

al menos tres
registros con:
Nombre, barrio y
telfono.
Observe que no
necesita escribir los
barrios, sino
seleccionarlos de la
lista.

Guarde su archivo
con su nombre en
la carpeta Mis
Documentos con
la opcin: Libro
de Excel
habilitado para
macros.

SEGUNDO
EJEMPLO:

Para comenzar el segundo ejemplo debemos guardar


el trabajo anterior y cerrarlo .

Abra un nuevo archivo de Excel. Escriba Nombre en A 1. Edad en B1 y


Das vividos en C1. Estos van centrados, con negrilla y subrayados.
Aplique a la columna A ancho 30.

Ahora pulse A lt + F11 para ir al editor de Visual Basic, luego dele Insertar
UserForm. En la propiedad Caption escriba su nombre completo.
Ahora vamos a crear un formulario con el siguiente
aspecto:

El
formu
lario
tiene:

a. Tres
etiquetas
b. Tres
Textbox
c. Un Botn de Comando

Los datos que se piden son: Nombre y Edad, los Das Vividos se generaran
automticamente cuando inserte la edad. A continuacin se muestra como se
deben de programar estos Controles:

Programacin de los Controles:

Private Sub CommandButton1_Click()

69
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

Selection.EntireRow.Insert
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub

Private Sub TextBox1_Change()


Range("A3").Select ActiveCell.FormulaR1C1 = TextBox1
End Sub

Private Sub TextBox2_Change()


Range("B3").Select ActiveCell.FormulaR1C1 = TextBox2
TextBox3 = Val(TextBox2) * 365
End Sub

Private Sub TextBox3_Change()


Range("C3").Select ActiveCell.FormulaR1C1 = TextBox3
End Sub

Esto va permitir que cuando se ejecute el formulario y se de la edad el


resultado de los das vividos aparecer en el Textbox3 y se escribir
tambin en Excel. El comando Val es un comando de Visual Basic que
permite convertir un valor de texto a un valor numrico.

EJERCICIO PRCTICO:

En una nueva hoja de Excel, escriba a partir de la celda A 1: CEDULA,


NOMBRE, CARRERA, JORNADA, SEMESTRE, GRUPO, Nota1, Nota2, Nota3,
Nota4, cada palabra en una celda. Debe crear en VisualBasic un formulario
que permita introducir estos datos en la hoja de Excel a partir de la fila 3.
Necesitar: Once etiquetas (Label), seis cuadros de Texto (TextBox) para
cdula, nombre y las cuatro notas, cuatro ComboBox para carrera, jornada,
semestre y grupo y un Botn de comando (Comma ndButton), como se
muestra a continuacin:

70
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA

El combobox1 debe contener tres carreras: Administracin, Contabilidad y


Marketing. El ComboBox2 debe contener tres jornadas: Maana, Noche y
Sbados. El ComboBox3 debe contener los nmeros: 1, 2, 3, 4, 5,
6, 7, 8, 9. El ComboBox4 debe contener los grupos: A, B. Revise los puntos
17 y 18 del primer ejercicio de este taller.

En la propiedad Caption del formulario debe escribir su nombre completo. Si


no escribe su nombre se le baja 5 puntos. Los comandos son iguales a los
vistos en el primer formulario, lo mismo que la forma de inicializar los
ComboBox.

En el evento Change() de cada textbox de las notas correspondientes al


primero, segundo y tercer cortes, debe ir la siguiente instruccin:

Private
Sub
TextBox5_
Change()
TextBox6.Value = (Val(TextBox3.Value) * 0.3 + Val(TextBox4.Value) * 0.3
+ Val(TextBox5.Value) * 0.4)
End Sub

Esto con el fin de que se realice el clculo correspondiente a la nota definitiva,


en el momento que se digiten las tres notas.

71
Profesor Csar Navarro Trejo

You might also like