You are on page 1of 122

MANUAL DE CURSO:

MS-EXCEL 2000
NIVEL III

Authorized

Technical
Education
Center

Microsoft

Excel nivel III Indice

Indice
Introduccin
Que son las macros y qu es el lenguaje Visual Basic Cmo se comunica
Visual Basic Aplication con Excel
Introduccin a los modelos de objetos de Excel y VBA Objetos,
Propiedades y Mtodos
1- Trabajo con macros automticas.
Grabacin de una macro sencilla.
Asignacin de una macro a un botn en una hoja de clculo.
Asignacin de una macro a un icono, a un objeto grfico, al men
herramientas, a un mtodo abreviado del teclado
2- Editor de Visual Basic para Excel.
Descripcin de la Interfaz
Que es un proyecto en Visual Basic; Explorador de Proyectos
Que son controles Active X, Cuadro de Herramientas
Editor de Cdigo
Diseador de Formularios
Ventana de Propiedades
Barra de Herramientas estndar
Modo de Ejecucin y de Diseo
Programacin Orientada a Eventos
Edicin de macros, visualizacin de Eventos, Mtodos y Propiedades.
Impresin de un mdulo Visual Basic.
3- Procedimientos en Visual Basic.
Conceptos bsicos sobre procedimientos.
Cmo trabajan juntos los procedimientos para realizar una tarea completa.
Cmo invocar a un procedimiento.
Cmo organizar mdulos y procedimientos en un libro de trabajo.
Cmo proteger procedimientos para que no sea utilizado por otro.
Depuracin de errores en los procedimientos y tipos de errores posibles.
Ejecucin paso a paso. Alternar puntos de interrupcin.
4- Creacin de Funciones personalizadas.
Conceptos sobre las partes que componen una funcin.
Variables en VBA.
Utilizar y Combinar funciones de VBA y Excel.
Creacin de funciones personalizadas para utilizar en el asistente de
funciones.

Excel nivel III Indice

5- Objetos, Propiedades y Mtodos en Visual Basic.


Concepto de objetos como contenedores de otros objetos.
Uso de controles en una hoja de clculo.
Uso de objetos, propiedades y mtodos, en cdigo Visual Basic.
Objetos Grficos.
6- Trabajo con Mens Personalizados.
Conceptos sobre Mens.
Creacin de una barra de men.
Creacin de un men.
Creacin de un tem de men.
7- Trabajando con cdigo Visual Basic en procedimientos.
Utilizacin de la ventana local.
Definicin de constantes.
Estructuras de control en Visual Basic.
8- Trabajando con Custom Form.
Desarrollo de aplicaciones con boxes de dilogo.
Visualizacin de informacin, utilizando la funcin Msgbox.
Creacin de un box de dilogo.
Nuevos formularios modales y no modales.
Visualizacin de un box de dilogo personalizado.
Obteniendo informacin desde un box de dilogo personalizado.
Ocultando un box de dilogo.

Excel nivel III

Introduccin

Introduccin
Que son las macros y que es el lenguaje Visual Basic
Una macro consiste en una serie de comandos y funciones que se almacenan en
un mdulo de Visual Basic y que puede ejecutarse cuando uno quiera.
Los primeros lenguajes de macros para hojas de clculos consistan en una serie
de comandos que imitaban la interfaz del usuario, de esta manera solo se podan
realizar tareas repetitivas.
A partir de la Versin 5.0 de Excel se incorpora Visual Basic Aplication (VBA)
como lenguaje de programacin de la librera de objetos de Excel.
Visual Basic es un dialecto estructurado avanzado de Basic desarrollado por
Microsoft, y previsto para el desarrollo de la aplicacin. La sintaxis de Visual
Basic es similar a otros dialectos modernos de Basic, pero con muchas
caractersticas adicionales. Se utilizan los tipos de datos siguientes: nmeros
enteros, reales, strings, booleans, currency, fechas, y referencias del objeto.
Entonces Visual Basic es el lenguaje con el cual se escriben las macros en
Excel.

Cmo se comunica Visual Basic Aplication con Excel


Microsoft ofrece los objetos de sus distintas aplicaciones para ser automatizados
a partir de VBA en cualquier aplicacin que comparta este tipo de tecnologa.
Con VBA, los desarrolladores pueden combinar objetos Excel para la creacin
de potentes sistemas de informacin.
Excel tambin soporta OLE, as como un objeto de automatizacin y un
controlador OLE. Este soporte OLE permite a los desarrolladores integrar
fcilmente objetos de Excel en sistemas basados en otros entornos de
desarrollo.
Si bien Excel es la primera aplicacin que ofrece este tipo de tecnologa tambin,
cada vez son mas las empresas que incorporan VBA como lenguaje y entorno
de desarrollo a sus productos.
Entonces no solo podemos encontrar VBA en Word, Excel, Power Point,
Outlook, Proyect (miembros de la familia Office) sino tambin Corel Draw, Visio,
AutoCad entre otros.
Se pueden crear desarrollos que compartan las libreras de objetos de distintas
aplicaciones siempre y cuando posean VBA. Y las aplicaciones estn instaladas
en la maquina del usuario, con la licencia de uso correspondiente
Por ejemplo podemos hacer una base de datos en Excel que se convine con
tablas de Acces y recepcionar y enviar Mails por Outlook o a partir de las
especificaciones ordenadas en una hoja de calculo crear un dibujo en Corel
Draw o AutoCad

Pgina 1

Excel nivel III

Introduccin

Dentro de Excel tenemos entonces adems de la interfase de Hoja de Calculo un


editor de VBA donde podemos desarrollar nuestras aplicaciones, este editor es
muy parecido al que viene con el lenguaje de programacin Visual Basic
Este editor no es el nico lenguaje con el cual podemos controlar los objetos de
Excel. Cualquier lenguaje que acepte automatizacin sirve para este propsito
como ser Visual Basic (como aplicacin independiente), Delphi, C++ entre otros.
VBA, no nos permite crear desarrollos independientes de las aplicaciones, o sea
no se puede crear ejecutables independientemente del entorno donde fue
creado.
Por ejemplo si hacemos una sistema en Excel el mismo quedara grabado en el
archivo .xls y no podr ser ejecutado desde fuera de Excel
Esto abre un panorama inmenso a programadores y usuarios avanzados, ya que
permite combinar la potencialidad de los distintos programas que comparten este
tipo de tecnologa.
Todas estas maravillas tienen un pequeo inconveniente para poder usar las
macros de Excel de manera eficiente antes hay que aprender a programar en
Visual Basic, por lo tanto las personas que tengan conocimientos de
programacin van a sacar provecho rpidamente de estas utilidades.
Los que no, precisarn una cuota importante de dedicacin para explotar VBA.
Por suerte es un muy buen momento para aprender a programar porque las
cosas son mucho ms fciles ahora que hace unos aos.

Introduccin a los modelos de objetos de Excel y VBA


El modelo de objetos de determinada Librera es la forma que estn diseados
los objetos.
Como adems de la Librera de Objetos nosotros estamos acostumbrados a usar
el Excel nos va a ser muy fcil reconocer las distintas clases que conforman el
modulo de objetos.
La clase mas general es Application que representa a Excel en si mismo dentro
de esta clase estn los libros, las hojas, las celdas, los grficos etc cada una
ellas con sus propiedades y mtodos

Pgina 2

Excel nivel III

Introduccin

Por otro lado tenemos tambin la librera de VBA donde estn todas las clases
de Visual Basic como lenguaje.

Por ejemplo dentro de la clase conversin de VBA se encuentran todas las


funciones que nos permiten convertir datos.
Por ahora resulta un poco confuso pero es bueno tenerlo como referente a
medida que vayas avanzando le vas a ir encontrando sentido.

Pgina 3

Excel nivel III

Introduccin

Objetos, Propiedades y Mtodos


Un objeto es una entidad que tiene asociado un conjunto de mtodos, eventos y
propiedades.
Todos los objetos de Excel tienen Propiedades, Mtodos y Eventos, VBA es una
herramienta con la que puede controlar los objetos Excel manipulando sus
propiedades y mtodos en los distintos eventos
Hagamos una analoga con la vida real que viene al caso. Pensemos en un
objeto cualquiera digamos una bicicleta, esta bicicleta tendra propiedades.
Una Propiedad es un atributo de un objeto que define una de las caractersticas
del objeto, tal como su tamao, o un aspecto de su comportamiento, por ejemplo
si est visible. Para cambiar las caractersticas de un objeto, se cambia el valor
de sus propiedades, en nuestro ejemplo de la bicicleta estos serian algunos de
sus Eventos Propiedades y Mtodos
Eventos
Al arrancar
Al detenerse
Al subirse
Al frenar

Objeto

Propiedades
Color
Rojo
=
16
Cant. de cambios
Si
=
10
Portaequipaje
Kl.
=
Peso
=
Mtodos
Pedalear
Rpido
Detenerse
En 5 min
Tocar la bocina Tres
veces

Hay propiedades a las que no se puede dar valor.


En la ayuda de cada propiedad con F1 se indica si es posible leer y dar valores a
la propiedad (lectura/escritura), leer slo el valor de la propiedad (slo lectura) o
slo dar valor a la propiedad (slo escritura).
Los mtodos son acciones (procedimientos asociados a un objeto) a diferencia
de las propiedades no se modifican con = sino que se le pasan parmetros
Los eventos son toda accin que puede ser reconocida por un objeto,
dependiendo el tipo de objetos va haber distintos eventos.
Los eventos pueden ocurrir como resultado de una accin del usuario o del
cdigo del programa, tambin pueden ser originados por el sistema.
Puede ser que el usuario detenga la bicicleta y ah se desencadenara el evento
donde puede estar escrito nuestro cdigo por ejemplo podemos escribir que
cuando se detenga se levante una banderita. Pero tambin puede ser que la

Pgina 4

Excel nivel III

Introduccin

bicicleta choque con un rbol y tambin se detenga con lo cual tambin se


levantara la banderita.
Vamos ahora a un ejemplo de Excel
Eventos

Objeto (Sheets)

Propiedades

BeforeDoubleClick

3
Sheets.Count
Sheets.Application

Activate

Mtodos

Desactivate
SelectionChange

Sheets.Add
Sheets.Copy
Sheets.Delete

Destino

Cuando alguien hace doble Clic antes de generar una accin sobre Excel se va a
ejecutar el cdigo que escribamos dentro
Por ejemplo el usuario hace Doble Clic en la hoja que fue definido el evento,
dentro del evento se le pregunta a la propiedad count cuantas hojas hay en total
en este libro y se muestra un cuadro de dialogo.
Entonces programar o hacer macros ser ir escribiendo en los distintos eventos
de los objetos de Excel los cambios en las propiedades y eventos que queramos
hacer.
Suena fcil, claro porque es fcil pero requiere paciencia.

Pgina 5

Excel nivel III Captulo 1

Trabajo con macros automticas

Trabajo con macros automticas.


Una gran ventaja que tenemos al aprender a programar en Excel con VBA es
que podemos hacer una grabacin automtica de una macro y ver los comandos
de Visual Basic que gener.

En este capitulo aprenders a:


Grabar una macro sencilla.
Asignar una macro a un botn en una hoja de clculo.
Asignar una macro a un icono, a un objeto grfico, al men herramientas, a
un mtodo abreviado del teclado

Pgina 6

Excel nivel III Captulo 1

Trabajo con macros automticas

Grabacin de una macro sencilla.


Vamos a empezar con un ejemplo muy sencillo que solo tiene el objetivo de
adentrarnos en el mundo de las macros.
Como vamos a trabajar con VBA durante todo el libro podemos hacer visible la
barrita de herramientas de Visual Basic en Excel, sino podramos ir a
Herramientas/Macros/Grabar nueva macro
1. Puls el Botn derecho del mouse sobre cualquier barrita de herramientas

2.

Esta barrita nos ser de mucha utilidad

3.

Para comenzar a grabar la macro vamos a cliequear el circulo azul (Grabar


Macro).

4. Aparecer un cuadro de dialogo que es de suma importancia:


5.

Pgina 7

Excel nivel III Captulo 1

Trabajo con macros automticas

En el nombre de la macro escribiremos un nombre descriptivo sin espacios


en blanco (por ej. PrimerMacro) y en el ComboBox que dice Guardar
macro en elegiremos una de las tres opciones

Libro de Macros Personales si queremos que la macro este


disponible siempre que abramos Excel sin importar cual es el libro
que este abierto. La macro se grabara en el archivo Personal.xls que
est dentro de la carpeta Inicio en la carpeta de Office.

Este libro si esta macro se usara nicamente cuando este abierto


este libro.

Libro Nuevo para que se grabe en un libro Nuevo obviamente


elegimos Libro nuevo.

La descripcin es simplemente un comentario que aparecer en la parte


superior del cdigo generado por la grabadora de macros.
El mtodo abreviado permitir ejecutar la macro con teclas rpidas.
6. A partir de ahora todo lo que hagamos con el mouse o el teclado ser
transformado en comandos de VBA, menos algunas cosas bsicas como
mover el mouse de un lado para otro sin hacer clic.
Entonces, vamos a seleccionar una celda cualquiera y vamos a escribir unas
palabras, (por ej. Bienvenidos) luego le cambiaremos el color a la celda y
detendremos la macro.
7.

Tenemos tres formas de detener una macro desde la barrita de detener


macro que suele aparecer automticamente cuando comenzamos a grabar
(si es que alguien no la cerro)

8.

Desde la barrita de visual Basic que activamos hace unos minutos (ntese que
ahora el triangulo se convirti en un cuadradito).
O desde Herramientas/macros/Detener macro
Listo ya tenemos la macro creada para usarla basta con ir a
Herramientas/macros o clickear en el boton de ejecutar macros de la barra de
Visual Basic.

Pgina 8

Excel nivel III Captulo 1

Trabajo con macros automticas

Asignacin de una macro a un botn en una hoja de clculo.


Para asignar la macro que creamos a un botn de comando dentro de una hoja
de calculo primero tendremos que crear el botn y luego asignarle la macro que
ya tenemos creada.
Existen dos grupos de controles aparentemente iguales pero con propiedades y
funcionamiento distintos.
Los ms profesionales (bueno, con mas propiedades) se pueden usar haciendo
clic el martillito y la llave inglesa de la barrita de herramientas de Visual Basic

Los ms fciles de usar estn con botn derecho sobre cualquier barrita
eligiendo Formularios

Aparecer esta barrita

Usaremos por ahora la el botn de comandos de la barra de formularios. Para


esto simplemente dibujamos el botn de comandos y un cuadro de dilogo nos
preguntara cual es la macro que queremos asociar al botn.
Si la queremos definir otra macro botn derecho sobre el botn modificar
macro.

Pgina 9

Excel nivel III Captulo 1

Trabajo con macros automticas

Asignacin de una macro a un icono, a un objeto grfico, al men


herramientas, a un mtodo abreviado del teclado
Para asignar una macro a un icono de una barra de herramientas debemos
clickear botn derecho sobre cualquier barrita de herramientas y un clic en
Personalizar.

Una vez que esta abierto el cuadro de dilogo se pueden hacer todas las
modificaciones que se necesiten del men y de las barritas de herramientas.

Podemos crear una barrita nueva para usar con todas nuestras macros y los
comandos que utilizamos con mas frecuencia, para eso hacemos un clic en
nueva...

Pgina 10

Excel nivel III Captulo 1

Trabajo con macros automticas

Luego pondremos un nombre descriptivo, al aceptar la barrita esta creada.


Este nombre es importante porque por medio de l podremos mas adelante
ocultar o mostrar nuestros comandos desde VBA.

Ahora podemos arrastrar nuestra macro desde la ficha comandos del cuadro de
dialogo Personalizar

Una vez arrastrado a la nueva barrita podemos hacer clic en modificar seleccin
de la ficha de comandos o bien botn derecho sobre la carita feliz.

Pgina 11

Excel nivel III Captulo 1

Trabajo con macros automticas

A partir de este cuadro de dilogo podremos cambiar varias propiedades


relevantes.
El nombre del botn: (esto sirve para cambiar la ayuda rpida del botn)

Cambiar la imagen del botn:

Definir si queremos que se vea siempre el nombre o solo el nombre.


Asignarle un hipervnculo.(con referencias al libro otros libros o direcciones de
Internet)
Asignarle la macro que hallamos creado con anterioridad.
Para crear un nuevo elemento de men, primero podemos crear un nuevo grupo
por ejemplo que este situado despus de la ayuda.
Para crearlo arrastraremos desde la ficha de comandos de la categora Nuevo
men, un nuevo men

Pgina 12

Excel nivel III Captulo 1

Trabajo con macros automticas

De la misma manera que hicimos con el botoncito podemos cambiar sus


propiedades clickeando el botn derecho sobre el nuevo elemento del botn.
Si queremos que este separado del resto del men podemos hacer un clic en
iniciar grupo.

No le asignaremos la macro al titulo para sino que la agregaremos abajo del


mismo.
Podemos elegir arrastrar un elemento de men bajo este titulo para solo tener
solo texto o bien directamente la carita feliz para tener texto e imagen. Para
hacer esto
Simplemente vamos nuevamente a la categora macros del cuadro de dialogo
personalizar y elegimos el elemento deseado.

Pgina 13

Excel nivel III Captulo 1

Trabajo con macros automticas

Esta operacin suele complicarse presta atencin antes de soltar el mouse que
el cursor este en el cuadrado gris que aparece al llevar el elemento de men al
lugar deseado
.
Una vez creado podemos cambiarle las propiedades (nombre, icono, macro etc)
de la misma forma que lo hicimos anteriormente con el icono sobre la barra de
herramientas.
Podemos asignar macros a cualquier objeto grafico que insertemos sobre la hoja
con el botn derecho en el objeto deseado por ejemplo en una imagen del clipart

Para reasignar una combinacin de teclas (recordemos que al grabar una nueva
macro nos ofreca la opcin de hacerlo), Clikeamos como si furamos a ejecutar
una macro y elegimos Opciones y ah definimos la combinacin, ten en cuenta
que si usas una combinacin que se usa en Excel, quedar la macro asignada

Pgina 14

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Editor de Visual Basic para Excel.

Dijimos en el capitulo anterior que Excel venia con un editor de VBA, en realidad
es un programa independiente que nos permite ver los mismos archivos xls de
Excel pero desde una ptica diferente.
En este Captulo aprenders a:

Conocer la Interfaz del Editor


Saber que es un proyecto en Visual Basic.
Usar el Explorador de Proyectos
Saber que son controles Active X
Usar el Cuadro de Herramientas
Usar el Editor de Cdigo
Disear Formularios
Usar la Ventana de Propiedades
Entender la Barra de Herramientas estndar
Que es el Modo de Ejecucin y de Diseo
Acerca de la Programacin Orientada a Eventos
Editar macros, visualizacin de Eventos, Mtodos y Propiedades.
Imprimir un mdulo Visual Basic.

Pgina 15

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Descripcin de la Interfaz.
En el editor vamos a considerar a los Libros como Proyectos de desarrollo
viendo a los libros como objetos contenedores de otros objetos con Propiedades
Mtodos y Eventos.
Visual Basic 6.0 (Como aplicacin independiente)

Pgina 16

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Este editor es muy parecido al programa Visual Basic, esto es muy ventajoso
porque nos vamos a acostumbrar a trabajar en un entorno que podremos
aprovechar eventualmente en el futuro.
Visual Basic Aplication (Dentro de Excel 2000)

Pgina 17

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Descripcin de la Interfaz
Podemos abrir el editor desde Herramientas/Macro/Editor de Visual Basic,
tecleando las teclas rpidas Atl+F11

o bien haciendo un clic en la barrita de Visual Basic


El Editor es una aplicacin independiente de Excel lo puede notar al ver que en
la barra de tareas de Windows presenta un icono separado

Es muy parecido a la interfase del programa del lenguaje Visual Basic como
podrn notar quienes ya han trabajado con ese producto.
Al comienzo se suele complicar para organizarse dentro del editor por eso
primero vamos a cerrar todas las ventanas y dejaremos solo la barra de men
Estndar que viene por defecto.

Pgina 18

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Que es un proyecto en Visual Basic; Explorador de Proyectos


Abr el explorador de proyectos y vers todos los libros que tengas abiertos, y los
archivos ocultos (como por ejemplo el personal.xls o Eurotool.xla que suele venir
con Office).
Siempre que quieras encontrar algn objeto como ser un formulario o una macro
que hiciste con anterioridad tens que abrir el explorador de proyectos.

El explorador te muestra los mismos archivos de Excel que estn abiertos, con
todos los objetos que lo componen, en la figura de arriba podes ver que hay
varios archivos abiertos algunos tienen terminacin .xla y por ej. el acrobat
PDFWriter es un archivo que contiene macros que se agreg en esta
computadora al instalarse el Acrobat Writer.
El archivo ejemplo.xls es el que se esta usando y esta visible desde la interface
de Excel, dentro de la carpeta Microsoft Excel Objetos vemos las hojas que tiene
el libro con sus nombres respectivos. Entre parntesis figura el nombre que se
le dio a la etiqueta de la hoja, si lo cambiamos cambiar tambin en Visual Basic.

Pgina 19

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Editor de Cdigo
Utilizamos la ventana Cdigo para escribir, mostrar y editar cdigo de Visual
Basic.
Es posible abrir tantas ventanas de Cdigo como mdulos tengas, por lo que
pods ver fcilmente el cdigo en diferentes formularios o mdulos y copiarlo y
pegarlo entre ellos.
Para abrir la ventana de cdigo simplemente tenes que hacer doble clic en el
modulo que queres editar. Si todava no tenes ningn modulo creado entonces
sobre tu proyecto con el botn derecho elegs insertar mdulo y luego doble clic.

El editor de cdigo tiene las facilidades de copiar y mover que tiene Word podes
usar el mouse con la tecla control para copiar o cualquiera de tus formas
preferidas.

Pgina 20

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

El Cuadro Objeto
Muestra el nombre del objeto seleccionado. Haga clic en la flecha situada a la
derecha del cuadro de lista para mostrar una lista de todos los objetos asociados
con el formulario.
El Cuadro Procedimiento/Evento
Presenta una relacin de todos los eventos reconocidos por Visual Basic para un
formulario o control mostrado en el cuadro Objeto. Cuando selecciones un
evento, el procedimiento de evento asociado con ese nombre de evento se
muestra en la ventana Cdigo.
Si aparece (General) en el cuadro Objeto, el cuadro Procedimiento presenta una
relacin de todas las declaraciones y todos los procedimientos generales que se
han creado para el formulario. Si ests editando cdigo del mdulo, el cuadro
Procedimiento enumera todos los procedimientos generales del mdulo. En
cualquier caso, el procedimiento seleccionado en el cuadro Procedimiento se
muestra en la ventana Cdigo.
Todos los procedimientos de un mdulo aparecen en una sola lista por la que se
puede desplazar y que est ordenada alfabticamente por nombre. Si se
selecciona un procedimiento utilizando los cuadros de lista desplegables de la
parte superior de la ventana Cdigo, se mueve el cursor a la primera lnea del
cdigo en el procedimiento seleccionado.
Ya s que esto es complicado, lo iremos viendo a lo largo del libro.

Barra de divisin
Si se arrastra esta barra hacia abajo, se divide la ventana Cdigo en dos paneles
horizontales, cada uno de los cuales tienen sus propias barras de
desplazamiento. Pods ver diferentes partes del cdigo a la vez. La informacin
que aparece en los cuadros Objeto y Procedimientos/Eventos se aplica al
cdigo del panel que tiene el enfoque. Si se arrastra la barra a la parte superior o
inferior de la ventana o se hace doble clic sobre ella, se cierra un panel.

Pgina 21

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Icono Ver procedimiento


Muestra el procedimiento seleccionado. Slo se muestra un procedimiento cada
vez en la ventana Cdigo.
Icono Ver mdulo completo
Muestra todo el cdigo del mdulo.

Pgina 22

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Diseador de Formularios
Un Formulario es una ventana o cuadro de dialogo, es un control contenedor de
otros controles con esto quiero decir que dentro de l se pueden dibujar
controles Active x.
Cuando hablamos de programas o aplicaciones habla comandos dispuestos
para realizar determinada tarea, la forma que ese programa se comunica con el
usuario es por medio de formularios.
Para crear un formulario dentro de VBA, Clikeamos botn derecho sobre el
explorador de proyectos y elegimos insertar formulario.

Se abre el diseador de formularios y se agrega una carpeta nueva a nuestro


proyecto con un nuevo formulario (user form).

Podemos cambiar algunas opciones para modificar el editor, para cambiarlas


vamos a Herramientas/Opciones .

Pgina 23

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Comprobacin automtica de sintaxis: determina si Visual Basic debera


verificar automticamente la sintaxis correcta despus de introducir una lnea de
cdigo.
Requerir declaracin de variables: determina si se necesitan declaraciones de
variables explcitas en los mdulos. Al seleccionar esto, se agrega la instruccin
Opcin explcit a las declaraciones generales de cualquier mdulo nuevo.
Lista de miembros automtica: muestra una lista que contiene informacin que
completara de forma lgica la instruccin en el punto actual de insercin.
Informacin rpida automtica: muestra informacin sobre funciones y sus
parmetros segn escribe.
Sugerencia de datos automtica: muestra el valor de la variable sobre la que
se sita el puntero. Slo est disponible en modo de interrupcin.
Sangra automtica: permite tabular la primera lnea de cdigo; todas las lneas
posteriores comenzarn en la ubicacin del tabulador.
Ancho del tabulador: establece la anchura del tabulador, que puede variar de 1 a
32 espacios; el valor predeterminado es 4 espacios.
Modificar texto con arrastrar y colocar: permite arrastrar y colocar elementos
dentro del cdigo actual y de la ventana de Cdigo a la ventana Inmediato o
Inspeccin.
Vista completa predeterminada del mdulo: establece el estado
predeterminado de mdulos nuevos para permitirle mirar en los procedimientos
en la ventana de Cdigo como lista desplazable nica o slo como un
procedimiento a la vez. No afecta a la forma en que se ven los mdulos abiertos
actuales.
Separador de procedimientos: permite mostrar u ocultar barras separadoras
que aparecen al final de cada procedimiento en la ventana de Cdigo..

Pgina 24

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Que son controles Active X, Cuadro de Herramientas


Un control Active x es un programa compilado de manera de poder ser utilizado
en un contenedor. Por ejemplo para poner una imagen en un formulario o una
hoja de Excel necesitamos un control que tenga dentro de sus propiedades la
capacidad de buscar un archivo de imagen y mostrarlo, todas las herramientas
que estamos acostumbrados a ver, como ser el cuadro de texto para escribir
, o el Combo Box
para elegir
una palabra o el option buttom
controles Active x.

para elegir una opcin, son todos

No necesariamente los controles tienen que ser visibles, hay algunos controles
como por ejemplo el mscomm32 que sirve para comunicarse con un MODEM o
el puerto paralelo no es visible pero tiene propiedades mtodos y eventos y
tambin precisa un contenedor para dibujarlo. Un contenedor puede ser un
formulario (mas adelante veremos como hacer uno) o una hoja de Excel un
documento de Word una diapositiva de Power Point, el Explorador de windows.
Estos Active x son compilados en un archivo con extensin ocx y precisan ser
registrados para que funcionen.
Cuando instalamos Excel se registran algunos ocx, pero si usamos otros que
nosotros tenemos registrados en nuestro sistema porque algn otro programa
como Visual Basic o cualquier otra aplicacin lo hizo, e intentamos usar el libro
de Excel en otra mquina dar un error. Para evitar ese error tenemos que
copiar el archivo ocx correspondiente en la maquina del usuario y registrarlo
desde VBA Herramientas/Controles Adicionales o con alguna otra herramienta
como Regsvr32.exe
El cuadro de herramientas muestra los controles estndares que vienen con
Excel, cuando abrimos un formulario usualmente esta abierto pero si lo cerramos
podemos volver a abrirlo con el icono desde la barra Estndar

Pods personalizar el cuadro de herramientas agregndole pginas o agregando


controles mediante el comando Controles adicionales del men Herramientas o
con botn derecho sobre el mismo cuadro.

Pgina 25

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Demos un vistazo a las herramientas que tenemos aqu.


Seleccionar objetos
Seleccionar objetos es el nico elemento del cuadro de elementos que no dibuja
un control. Cuando se selecciona, slo pods cambiar el tamao o mover un
control que ya se haya dibujado en un formulario.

Etiqueta
Permite tener texto que no desees que cambie el usuario, como el ttulo debajo
de un grfico.
Cuadro de texto
Contiene texto que el usuario puede introducir o cambiar.

Cuadro combinado
Permite dibujar un cuadro de lista combinado y un cuadro de texto. El usuario
puede elegir un elemento de la lista o introducir un valor en el cuadro de texto.
Cuadro de lista
Se utiliza para mostrar una lista de elementos entre los que puede elegir el
usuario. Puede desplazarse por la lista si sta contiene ms elementos de los
que se pueden ver en un determinado momento.
Casilla de verificacin
Crea una casilla que el usuario puede elegir fcilmente para indicar si algo es
verdadero o falso o para mostrar varias elecciones cuando el usuario puede
elegir ms de una.

Botn de opcin
Permite mostrar varias elecciones entre las que el usuario slo puede elegir una.

Botn de alternar
Crea un botn que alterna entre activado y desactivado.
Marco
Permite crear una agrupacin grfica o funcional de controles. Para agrupar los
controles, dibuje primero el marco y despus los controles dentro del marco.

Botn de comando
Crea un botn que el usuario puede elegir para realizar la accin de un
comando.

Pgina 26

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Barra de tabulaciones
Permite definir mltiples pginas para la misma rea de una ventana o cuadro de
dilogo de la aplicacin.

Pgina mltiple
Presenta mltiples pantallas de informacin como un solo conjunto.
Barra de desplazamiento
Proporciona una herramienta grfica para desplazarse rpidamente por una
larga lista de elementos o una gran cantidad de informacin, para indicar la
posicin actual en una escala o como un dispositivo de entrada o indicador de
velocidad o cantidad.

Botn de nmero
Un control de giro que se puede utilizar con otro control para aumentar o reducir
los nmeros. Tambin lo puede utilizar para desplazarse hacia delante o detrs
de un intervalo de valores o una lista de elementos.

Imagen
Muestra una imagen grfica de un mapa de bits, icono o metaarchivo en el
formulario. Las imgenes mostradas en un control Imagen slo pueden ser
decorativas y utilizan menos recursos que un Cuadro de imagen.

Pgina 27

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Ventana de Propiedades
Seleccionando un objeto y presionando F4 accedemos a la ventana de
propiedades de ese objeto.
En esta ventana podemos cambiar las propiedades de los objetos mientras
estamos en modo de Diseo o sea mientras no se este corriendo (ejecutando) el
procedimiento o el formulario.

Cada control tiene propiedades que le son propias para saber acerca de una
propiedad en particular siempre podemos recurrir a la ayuda de VBA
seleccionando la propiedad y apretando F1

Pgina 28

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Es muy til el ejemplo que nos trae el help acerca de la propiedad.

Pgina 29

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Barra de Herramientas estndar


Contiene botones que tienen accesos directos a algunos elementos de men
utilizados con frecuencia.

Puede hacer clic una sola vez en un botn de la barra de herramientas para
realizar la accin representada por el botn. Puede seleccionar la opcin
Informacin sobre herramientas de la ficha General del cuadro de dilogo
Opciones si desea mostrar informacin sobre los botones de la barra de
herramientas.
Botones de la barra de herramientas
Ver <aplicacin principal >
Alterna entre la aplicacin principal y el documento de Visual Basic activo.
Insertar
Abre un men para que se pueda insertar uno de los objetos siguientes en el
proyecto activo. El icono cambia al ltimo objeto agregado. El objeto
predeterminado es el formulario.
Pero tambin se pueden insertar Mdulos y Mdulos de clase
Guardar <nombre de documento principal >
Guarda el documento principal, incluidos el proyecto y todos sus componentes:
formularios y mdulos.
Ejecutar Sub/UserForm o Ejecutar macro
Ejecuta el procedimiento actual si el cursor est en un procedimiento, ejecuta el
UserForm si un UserForm est activo actualmente o ejecuta una macro si no
est activa la ventana Cdigo ni un UserForm.
Interrumpir
Detiene la ejecucin de un programa y cambia al modo de interrupcin.
Restablecer <proyecto>
Borra las variables de nivel de mdulo de la pila de ejecucin y restablece el
proyecto.
Modo de diseo
Activa y desactiva el modo de diseo.
Explorador de proyectos
Abre el Explorador de proyectos que muestra una lista jerrquica de los
proyectos abiertos actualmente y su contenido.
Ventana de Propiedades

Pgina 30

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Abre la ventana de Propiedades para que puedan verse las propiedades del
control seleccionado.
Examinador de objetos
Muestra el Examinador de objetos, que presenta una lista de bibliotecas de
objetos, biblioteca de tipos, clases, mtodos, propiedades, eventos y constantes
que se pueden utilizar en cdigo, as como los mdulos y procedimientos
definidos para el proyecto.
Cuadro de herramientas
Muestra u oculta el cuadro de herramientas que contiene todos los controles y
los objetos insertables (Como un grfico de Microsoft Excel) disponibles para la
aplicacin. Slo est disponible cuando est activo un UserForm.
Asistente de Office
Abre el Asistente de Office donde puede obtener ayuda sobre la ventana, el
comando o el cuadro de dilogo que est activo.

Pgina 31

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Modo de Ejecucin y de Diseo


Existen dos modos de ver un programa:
A modo de Diseo cuando estamos escribiendo el programa, estamos dibujando
el formulario cambiando sus propiedades con la ventana de propiedades y
dibujando los formularios, agregando controles etc.

A modo de ejecucin cuando el programa esta corriendo o ejecutndose eso


significa que VBA interpret los comandos que escribimos y estos comandos se
estn activando.

Pgina 32

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Modificar una propiedad a modo de ejecucin significa que ante determinado


evento por ejemplo alguien hace un clic en un botn de comando se cambia una
propiedad de un objeto por ejemplo el fondo del formulario se pone rojo.
Para pasar a modo de ejecucin basta con correr la macro o el formulario y para
pasar a modo de diseo basta con detener la ejecucin.

Pgina 33

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Programacin Orientada a Eventos


Existen distintos tipos de programas. En los primeros tiempos de las
computadoras los programas eran de tipo secuencial (tambin llamados tipo
batch).
Un programa secuencial es un programa que se arranca, lee los datos que
necesita, realiza los clculos e imprime o guarda en el disco los resultados. De
ordinario, mientras un programa secuencial est ejecutndose no necesita
ninguna intervencin del usuario. A este tipo de programas se les llama tambin
programas basados u orientados a procedimientos o a algoritmos (procedural
lenguajes). Este tipo de programas siguen utilizndose ampliamente en la
actualidad, pero la difusin de los PCs ha puesto de actualidad otros tipos de
programacin.
Los programas interactivos exigen la intervencin del usuario en tiempo de
ejecucin, bien
para suministrar datos, bien para indicar al programa lo que debe hacer por
medio de mens. Los programas interactivos limitan y orientan la accin del
usuario.
Por su parte los programas orientados a eventos son los programas tpicos de
Windows, tales como Netscape, Word, Excel, PowerPoint y otros. Cuando uno
de estos programas ha arrancado, lo nico que hace es quedarse a la espera de
las acciones del usuario, que en este caso son llamadas eventos.
El usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a
crear un fichero desde el principio. Estos programas pasan la mayor parte de su
tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas. Las
acciones que el usuario puede realizar en un momento determinado son
variadsimas, y exigen un tipo especial de programacin: la programacin
orientada a eventos.
Programacin orientada a eventos o programacin orientada a objetos (en el
sentido mas liviano del termino) implica que el programador no va a estar
pensando en un diagrama de flujo sino que va a pensar directamente en los
objetos que necesita y el comportamiento del usuario.
Vamos a programar directamente sobre los eventos de los objetos.
Si queremos que se grabe determinados datos de un formulario pondremos un
botn y dentro del evento clic del botn escribiremos el cdigo necesario.
Me parece que ya es hora que veamos la macro que hicimos en el capitulo 1
pero directamente desde el editor de VBA.

Pgina 34

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Edicin de macros, visualizacin de Eventos, Mtodos y


Propiedades.
Dentro de la carpeta Mdulos figura el modulo1 que se cre automticamente
cuando grabaste la macro y le dijiste que la creara en Este Libro.
Cuando hacemos por primera vez una macro y le decimos que la grabe en el
libro de macros personales, se crea el archivo personal.xls y los comandos
estarn dentro de un procedimiento con el nombre de la macro que le dimos
dentro de la carpeta Mdulos en el VBAproyect personal.xls.
Si haces doble clic en el modulo te va a aparecer la el editor de cdigo con los
comandos de VBA que invento la grabadora de macros.
Para VBA este cdigo es un procedimiento que veremos en detalle mas
adelante, el cdigo que tiene un comilla simple delante es comentario que VBA
no interpreta nos sirve para recordar que quisimos hacer con este procedimiento
o con determinada lnea.
La segunda lnea de cdigo ejecutable hace referencia cuando escribiste
bienvenido en una celda recordas en el capitulo 1?, bien ah estamos cambiando
la propiedad Formula R1C1 del objeto ActiveCell y estamos por la palabra
Bienvenidos.
En este caso este objeto no es un control Active X sino que es un objeto de la
librera de Excel.

Si queremos ver los eventos de los objetos de Excel como ser la Hoja 1 o El libro
en general hacemos doble clic sobre el Explorador de Proyectos en Hoja1 o
ThisWorkbok respectivamente.
Vamos a ver que eventos tiene la Hoja1, doble clic en hoja1

Pgina 35

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

a la izquierda eleg Worksheet para que a la derecha te aparezcan todos los


eventos que tiene la Hoja1.
Por defecto trae el evento SelectionChange pero podemos elegir de la derecha
cualquier evento.
Vamos a elegir activate.

Dentro del evento Activate escribimos un comando para que al activarse la hoja
aparezca un cartelito de bienvenida, solo para ver el funcionamiento del evento.

Pgina 36

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Grbalo y anda a Excel para ver si funciona


Simplemente activa la hoja y el evento activar el mensaje.

Pgina 37

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Impresin de un mdulo Visual Basic.


Para imprimir el modulo estando abierto vas a Archivo/Imprimir

Opciones del cuadro de dilogo


Impresora
Identifica la impresora en la que se va a imprimir.
Intervalo
Determina el intervalo que se imprime:
Seleccin: imprime el cdigo seleccionado actualmente.
Mdulo actual: imprime los formularios y/o el cdigo del mdulo
seleccionado actualmente.
Proyecto actual: imprime los formularios y/o el cdigo de todo el
proyecto.
Imprimir
Determina lo que se va a imprimir. Puede seleccionar todas las opciones que
desee, dependiendo de lo que haya seleccionado en Intervalo.
Imagen de formulario: imprime las imgenes del formulario.
Cdigo: imprime el cdigo para el intervalo seleccionado.
Calidad de impresin
Determina si se va a imprimir con calidad alta, media, baja o borrador.
Imprimir en un archivo
Si se selecciona, la impresin se enva al archivo especificado en el cuadro de
dilogo Imprimir en un archivo. Este cuadro de dilogo aparece despus de
elegir Aceptar en el cuadro de dilogo Imprimir.
Aceptar
Imprime la seleccin.

Pgina 38

Excel nivel III Captulo 2

Editor de Visual Basic para Excel

Cancelar
Cierra el cuadro de dilogo sin imprimir.
Configurar
Muestra el cuadro de dilogo Configurar Impresin.

Pgina 39

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Procedimientos en Visual Basic.

En este captulo vas a aprender:

Conceptos bsicos sobre procedimientos.


Cmo trabajan juntos los procedimientos para realizar una tarea
completa.
Cmo invocar a un procedimiento.
Cmo organizar mdulos y procedimientos en un libro de trabajo.
Cmo proteger procedimientos para que no sea utilizado por otro.
Depuracin de errores en los procedimientos y tipos de errores
posibles.
Ejecucin paso a paso. Alternar puntos de interrupcin.

Pgina 40

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Conceptos bsicos sobre procedimientos.


Ya hemos estado hablando de procedimientos, al grabar la macro automtica
desde Excel se cre un procedimiento en un modulo de VBA
Entonces un procedimiento sera una secuencia con nombre de instrucciones
que se ejecutan como una unidad
Todo el cdigo ejecutable debe estar contenido en un procedimiento. Esto
significa que no podemos escribir cdigo que queramos que se ejecute fuera de
los procedimientos
Para crear un nuevo procedimiento no hace falta crear una macro desde Excel
solo tenemos que ir al modulo del libro y escribir sub y el nombre del
procedimiento

Entre los parntesis podemos definir variables de esta manera podemos pasarle
parmetros a un procedimiento cuando lo invocamos
Podemos crear cuantos procedimientos queramos. Pueden estar todos en el
mismo modulo o estar en distintos mdulos, normalmente agrupamos todos los
procedimientos que tienen algo en comn en un mismo modulo para que sea
mas fcil encontrarlo y llevarlo a otro proyecto pero si el libro esta abierto no
importa en que modulo se encuentre el procedimiento va a estar disponible para
invocarlo.

Pgina 41

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Cmo trabajan juntos los procedimientos para realizar una tarea


completa.
Vamos a ver un ejemplo de importacin de archivo por medio de una macro, y
veremos los siguientes puntos:

Cmo invocar a un procedimiento.


Cmo organizar mdulos y procedimientos en un libro de trabajo.
Cmo proteger procedimientos para que no sea utilizado por otro.
Depuracin de errores en los procedimientos y tipos de errores posibles.
Ejecucin paso a paso. Alternar puntos de interrupcin.

Excel es muy usado para formatear inteligentemente datos que vienen de un


main frame o por ejemplo de un programa contable y se desea pasar a otra base
de datos
Imaginemos que un programa contable nos enva un archivo de texto con la
facturacin del mes separada por tabulaciones y nosotros lo queremos dividir por
tipo de factura y ordenar por fecha tambin vamos a buscar con el cdigo del
cliente el nombre y direccin en una base de datos.
Como queremos que este disponible siempre vamos a crear los procedimientos
necesarios para esta tarea en el archivo personal.xls
Si no tens el Personal.xls en el explorador de proyectos tendras que crear una
macro automtica desde Excel y grabarla en el libro de macros personales Excel
automticamente crear el libro.

Para que sea mas fcil ubicar el modulo donde se van a grabar los
procedimientos que estamos haciendo y no se confundan con otros para otros
propsitos vamos a nombrar el modulo. Clickeamos en modulo1 y con F4
vemos las propiedades.

Pgina 42

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Cambiamos el nombre y cerramos la ventana de propiedades.


Primero importaremos el archivo (solicitar al profesor el archivo)
Vamos a crear una macro automtica para que nos facilite la escritura
Como es una tarea un poco compleja lo vamos a dividir por procedimientos para
que sea mas fcil interpretarlo en el futuro.
Desde Excel grabamos una macro con el nombre borrame (la nombramos
borrame para que no se acumulen muchas macros que solo sirven para ver los
comandos, de esta manera la prxima que hagamos la va a sobre escribir)
Con la macro grabando vamos a archivo abrir, elegimos seleccionamos archivo
de texto

se abrir un asistente, elegimos Delimitado porque las columnas pueden tener


distinto ancho, como el titulo no nos interesa comenzamos a importar por la fila 5
y el origen de archivo Windows.

Pgina 43

Excel nivel III Captulo 3

Procedimientos en Visual Basic

luego elegimos tabulacin como separador

En el paso 3 hay una diferencia entre el asistente del Excel 97 y el 2000 en el


2000 se agrego avanzado para evitar los problemas cuando el separador
decimal de los montos fueran distintos a la configuracin regional de la mquina

Pgina 44

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Finalmente obtenemos el archivo, se creo una hoja con el nombre del archivo

Para ves lo que hicimos vamos con Atl + F11 a VBA, es inevitable que si
grabamos el personal.xls las nuevas macros vallan a parar a un nuevo modulo,
entonces siempre nos fijamos en el ultimo modulo para encontrar la macro que
acabamos de hacer.
Como podemos ver todo el asistente se ve resumido en un solo comando con
todos los parmetros que le fuimos dando.

Pgina 45

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Como asumimos que el archivo cambia todos los meses El parmetro que no
podemos dejar fijo es el nombre del archivo porque sino todos los meses va a
buscar el mismo archivo y no nos sirve

Primero vamos a llevarnos este comando a nuestro procedimiento (ntese que al


final del rengln hay un guin bajo eso significa que el comando sigue abajo).
Para eso basta con seleccionar copiar ir a nuestro procedimiento y pegar.
Lgicamente que bastara cambiarle el nombre al este procedimiento borrame
pero como ya definimos uno antes entonces vamos al modulo
modImportarArchivo y dentro del procedimiento proImportarArchivo lo pegamos

Vamos a ponerle un comentario arriba de todo para que cuando venga otra
persona a ver de que se trata esto lo entienda, en realidad en un tiempito
nosotros tampoco nos vamos a acordar.
Te aconsejo en tus primeros pasos con VBA comentar todo es una buena forma
de aprender y clarificar lo que ya sabes.

Pgina 46

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Para escribir un comentario basta con escribir delante de la frase una comilla
simple.

Para poder cambiar el archivo que vamos a abrir vamos a necesitar definir una
variable de tipo string para almacenar la ruta del archivo elegido

Ahora cargaremos esta variable con un comando de VBA que nos proporciona a
partir de una interface de windows (Abrir Archivo) la ruta elegida por el usuario.
El objeto Application esta por encima del los otros objetos de Excel nos sirve
para abrir libros, guardar como, encontrar un archivo, saber cual es la aplicacin
activa etc. Nosotros vamos a usar getOpenfilename pero como no sabemos bien
que parmetros darle vamos a escribir application luego el punto para que nos
traiga las propiedades y mtodos de la clase elegimos GetOpenFilename y
vamos a apretar F1 para obtener ayuda. Y clikeamos en donde dice ejemplo
(para no tener que leer tanto).

Pgina 47

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Analicemos el ejemplo.

La variable sera fileToOpen, para mi gusto un desastre, primero porque no la


definieron como nosotros o sea que es de tipo Variant porque habamos dicho
que cuando no definamos una variable VBA la crea como Variant.
Despus de application hay un guin bajo lo cual significa que sigue abajo.
Las tres lneas de abajo validan la variable en el caso que el usuario elija
cancelar desde el cuadro de dialogo que presenta GetOpenFilename (paciencia
ya lo vamos a ver), por ahora copiemos todo para nuestro procedimiento.
Fijate que en el ejemplo que estoy escribiendo como deje incompleta VBA lo
pone rojo lo cual significa que esta mal escrito, pero no te confes porque hay
veces que algunas lneas estn mal.

Pgina 48

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Despus de cargar la variable, vamos a ver si strNombreArchivo vale falso si es


as nos vamos del procedimiento con exit sub sino continuamos con el
procedimiento.
Fijate que tambin cambiamos el signo <> de la validacin por un = y el
parmetro del asistente por la variable esto es fundamental.

Pgina 49

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Bueno corrigiendo las cositas quedara as no?

Que te parece si lo ejecutamos, para eso podemos ir a Excel y ejecutarlo como


Macro o directamente desde ac con F5 o un clic en el triangulito azul

La otra forma es ir paso a paso, o sea comando por comando lo cual en este
caso es mucho ms didctico para eso F8.
Entonces estando el cursor dentro del procedimiento apretamos la tecla F8
Se ilumino en amarillo la primer lnea, se ejecutan las lneas despus de pasar
por ellas lo cual es bueno para controlar las variables ya vas a ver.
F8 otra vez.

Notaste que salteo la lnea dim, eso es porque las variables se cargan ni bien se
accede al procedimiento por eso en realidad da lo mismo donde estn escritas

Pgina 50

Excel nivel III Captulo 3

Procedimientos en Visual Basic

pero conviene que estn todas arriba de todo por una cuestion de practicidad
para leerlas.
Si pasas el mouse por arriba de la variable strNombreArchivo te cuenta cuanto
vale por ahora o sea nada. Esto que parece una bicoca es en realidad algo
muy til y que un viejo programador de Cobol o Pascal hubiera amado.

Bien F8 otra vez y aparece el cuadro de dialogo famoso. Buscamos el directorio


y elegimos el archivo de texto que viene con el manual.
Viste que abajo dice Facturacin, eso porque nos hicimos los cancheros al
invocar este cuadro de dialogo. (revisa mas arriba)

Al aceptar no se abri ningn archivo lo nico que hicimos hasta ahora es cargar
en nuestra variable el path elegido por el usuario.
Ves que ahora la variable vale la ruta elegida.

Pgina 51

Excel nivel III Captulo 3

Procedimientos en Visual Basic

F8 y valida que no sea falso


Opss, primer error, Felicitaciones en este momento es que varios alumnos de
mis clases se levantan y se van, otros me miran y piensan este de ac no sabe
nada.
Bueno en realidad hasta que no te aparece un error se puede decir que no
empezaste a programar uno debera ponerse contento con los errores porque es
cuando mas se aprende.

Basta de filosofar que dice ac que los tipos no coinciden o sea que estamos
tratando de comparar la variable tipo string con un bolean. Lo mas fcil va a ser
pasar la variable a Variant entonces cuando el usuario elija cancelar va a
comparar con un bolean pero si elige un archivo compara con un string.
Manos a la obra, si clikeamos finalizar es como detener sino sigue activo.
En este caso podemos finalizar porque son cambios grandes los que tenemos
que hacer.
Vamos a cambiar str por var y string por variant

Pgina 52

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Como ya probamos la primer parte, vamos a poner un punto de interrupcin para


que corra el procedimiento hasta donde llegamos para eso hacemos un clic con
el mouse en la parte Izquierda de la lnea donde queremos que se detenga
Aparecer un redondelito rojo o marrn depende lo daltnico que seas.

Ahora podemos correr el programa con F5.

Viste que se detuvo ah donde estaba el punto que cargo la variable.


Desde ac F8 nuevamente para ir paso a paso.

Salteo el Exit Sub porque al comparar la variable con False no es igual (hubiese
sido igual si el usuario elega cancelar en vez de un archivo.
Ahora dos veces mas F8 y se ejecuta el asistente con la variable que acabamos
de cargar.

Al pasar por el asistente se creo un nuevo libro de excel con el archivo de texto.
Tene cuidado que no quede en amarillo End Sub porque significa que todava
esta corriendo el procedimiento y esto te deshabilitara muchas funciones de
Excel por eso para terminar o bien haces un clic en Parar macro o apretas otra
vez F8 para que termine
Si volves a ejecutar la macro primero cerra el libro que acabas de abrir para no
hacerte lio y ojo al cerrarlo no lo grabes para evitar que se sobre escriba y
pierdas el archivo original.
Ya tenemos el archivo de texto en Excel, ahora vamos a ir recorriendo las filas y
de acuerdo el tipo de facturas lo vamos a agrupar.
Para eso inventamos un nuevo procedimiento para que no quede todo
amontonado.

Pgina 53

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Te acords no? Sub y el nombre del procedimiento debajo del end Sub.
En este caso podemos escribir sub proDistribuirFacturas

Grabemos una macro con el nombre borrame para insertar dos hojas una que se
llame FacturasA y otra FacturasB.
El resultado es el siguiente, por medio del objeto Sheet agregaste, nombraste y
seleccionaste las hojas, facil no?

Lo llevamos a nuestro nuevo procedimiento

Pgina 54

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Vamos a hacer unos cambios primero borramos la seleccin de la hoja


FACMAYO porque por un lado el usuario puede elegir otra hoja el mes que viene
y nos dara error por otro no hace falta porque ya esta seleccionada, es la nica
que hay hasta ahora.
Grabemos otra macro para ponerle los ttulos a las hojas

Esto funcionaria perfecto pero lo podemos depurar un poquito para que no


quede tanto cdigo y nos quedara as:

Pgina 55

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Ac se nos presenta un problema, tenemos que volver a la hoja que importamos


para ir trayendo las filas a las distintas hojas, bien, el problema en cuestin es
que no sabemos como se llama porque cambia todos los meses, adems la
variable donde esta el nombre la definimos en otro procedimiento.
Tenemos dos soluciones (miles pero elijo dos).
Podemos definir la variable strNombreArchivo como modular pero igualmente
tendramos algunas complicaciones para saber el nombre de la hoja porque en
esta variable esta el path completo.
Dos, cargar una variable con el nombre de la hoja al empezar este
procedimiento.
Entonces...

Ahora cuando queramos ir a esta hoja usaremos la variable.

Pgina 56

Excel nivel III Captulo 3

Procedimientos en Visual Basic

El objeto Range es muy til, nos sirve para ir dentro de la hoja a una celda
determinada, en este caso vamos a la celda B2 para ver de que tipo es la
primera factura.
Si en la celda el valor es A entonces que vaya a la hoja con las facturas A sino a
la otra. (en el capitulo 7 vamos a ver todas estas cosas raras de if else y otras
yerbas en detalle.)
Pero antes de ir a la otra hoja tenemos que copiar en el portapapeles los datos
del primer dato que queremos llevar por eso de la celda que estamos le vamos a
decir que valla uno para la izquierda.
Para hacer eso usamos el mtodo offset de la siguiente manera

Como ves tiene parmetros 0,1 el 0 corresponde a las filas y el -1 a las columnas
De esta manera ahorramos varios pasos porque no nos movemos, con lo cual no
tenemos que volver y no usamos variables.
Ahora tenemos que ir a la hoja correspondiente y pegarlo en el ultimo rengln
disponible, para eso te cuento un truco nos vamos a la fila 60000 y de ah subs
con Control flechita para arriba y de ah uno para abajo para no borrar el ultimo.

Pgina 57

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Este cdigo funciona para el primer rengln de los datos importados pero no
podemos repetir esto por todos los renglones por un lado porque no sabemos
cuantos renglones hay adems que seria demasiado cdigo
Para eso sirven los loops que vamos a ver mas adelante en el capitulo 7 pero
por ahora vamos a usar la instruccin do While (hacelo mientras se cumpla una
condicin)
El do while repetir lo que escribamos en el medio hasta que la condicin sea
falsa.

Como veras hay varios cambios antes de entrar al do while tenemos que estar
uno mas arriba para facilitar la ubicacin dentro de la hoja con los datos. (B1 en
vez de B2).
El do while se va ejecutar hasta que en la celda no halla nada osea que halla
llegado al final de la columna
La primera linea despus del Do While bajamos una (esto sirve para la segunda
vuelta).

Pgina 58

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Comparamos para saber para donde ir y copiamos.


Vamos a la otra hoja y pegamos en la ultima.
Funciona bien pero tendramos que agregar los datos de derecha (Monto y
Proveedor)
Quedaria asi:

Como podes ver al pegar usamos pasteSpecial en ves de paste para no tener
que ir hasta la celda y despus volver.
Una ventaja es que cada hoja guarda el valor de la celda activa con lo cual con
solo ir a la hoja el cursor queda en mismo lugar que estaba cuando nos fuimos.
Vamos a crear un ultimo procedimiento para ejecutar los otros dos.
Debajo de un End Sub escribimos sub proFacturacion y dentro invocamos a los
otros dos procedimientos.
La ultima lnea es un mensaje para avisar que todo sali bien

Pgina 59

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Tenemos terminada la macro no te olvides de guardar el personal.xls que fue


donde estuvimos haciendo todo.
Para Borrar los mdulos que no necesitamos tenemos que posisionarnos sobre
el explorador de proyectos con el botn derecho elegimos quitar modulo, nos va
a ofrecer si lo queremos exportar, le decimos que no.
Exportar es til para llevar cdigo de un lugar a otro. Al exportar un modulo se
crea un archivo de texto con el cdigo y la terminacin bas.
Podemos proteger el modulo para que nadie lo pueda ver.
En VBA vamos a Herramientas Propiedades de VBAProject

En las propiedades encontramos dos fichas en la primera (General),

El Nombre de proyecto identifica un componente en el Registro de Windows y el


Examinador de objetos. Es importante que tenga un nombre exclusivo.

Pgina 60

Excel nivel III Captulo 3

Procedimientos en Visual Basic

Si quisiramos podramos asociar un archivo de ayuda, existen muchos


programas para crear archivos de ayuda por ej. Uno llamado RoboHelp.
La descripcin del proyecto establece el texto descriptivo que se muestra en el
panel de descripcin de la parte inferior del Examinador de objetos.
Los Argumentos de compilacin condicional difcilmente los vallas a usar pero es
una posibilidad que tiene VBA.
La compilacin condicional se puede utilizar para ejecutar de forma selectiva
determinados bloques de cdigo, por ejemplo, instrucciones de depuracin que
comparen la velocidad de distintos mtodos de enfocar una tarea de
programacin, o adaptando una aplicacin para distintos idiomas.

Bien para bloquear el proyecto y ponerle contrasea esta claro no? Si te


olvidaste la contrasea no va a ser fcil abrirlo, En Internet hay algunos
programitas truchos para abrir estos mdulos con lo cual tampoco es del todo
seguro.
Recin va a funcionar el bloqueo cuando salgas (grabando) del Libro y vuelvas a
entrar.

Pgina 61

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Creacin de Funciones personalizadas

En este captulo aprenderas lo siguiente:

Conceptos sobre las partes que componen una funcin.


Variables en VBA.
Utilizar y Combinar funciones de VBA y Excel.
Creacin de funciones personalizadas para utilizar en el asistente de
funciones.

Pgina 62

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Conceptos sobre las partes que componen una funcin


Cuando escribimos cdigo para automatizar tareas de Excel lo hacemos como
ya vimos en un Modulo dentro del proyecto del libro.
Existen procedimientos sub y procedimientos Function (llamadas funciones).
Podemos definir a un procedimiento Function como una serie de instrucciones
de Visual Basic encerradas entre dos instrucciones Function y End Function. Un
procedimiento Function es similar a un procedimiento Sub, aunque una funcin
puede devolver adems un valor. Un procedimiento Function acepta
argumentos, como pueden ser constantes, variables o expresiones que le pasa
el procedimiento que efecta la llamada. Si un procedimiento Function no tiene
argumentos, la instruccin Function debe incluir un par de parntesis vacos.
Una funcin devuelve un valor asignndolo a su nombre en una o ms
instrucciones del procedimiento.
Entonces la diferencia entre un procedimiento y una funcin es que el
procedimiento no nos devuelve nada y la funcin si
Un procedimiento es una macro que se invoca desde algn lado en cambio una
funcin se usa para que nos devuelva un dato.
La utilidad de una funcin de usuario es igual que las funciones que vienen con
Excel como suma, Trim etc. pero creada por nosotros para ser usada en el
mbito de VBA o directamente en una hoja de Excel desde el asistente de
funciones.
Cuando usamos la funcin suma(A1:A2) en la celda vemos lo que nos devuelve
la funcin, en cambio cuando ejecutamos una macro (un procedimiento) este se
ejecuta y los comandos que hay en el ocurren
En el siguiente ejemplo, la funcin funCalcularIva calcula el iva de determinado
monto. Cuando se llama a la funcin desde el procedimiento Principal o desde
una hoja de calculo , se le pasa una variable que contiene el valor del
argumento. El resultado de los clculos se devuelve al procedimiento que
efecto la llamada o en la celda donde se escribi la funcin
Function funCalcularIva(Monto)
FunCalcularIva=Monto+(Monto*0.21)
End Function
Te das cuenta lo interesante que resulta estas funciones personalizadas para
automatizar clculos, bsquedas etc.
Bien como hacemos para escribirla, simplemente vamos al modulo de nuestro
libro (si queremos que este disponible siempre lo haremos en el Personal.xls) y
escribimos la funcin en la ventana de edicin de cdigo.

Pgina 63

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Al escribir el comando Function y el nombre de la funcin funCalcularIva VBA


completa con End Function y pone en azul los comandos. Hay que tener
especial cuidado de no empezar una funcin en medio de otra o de un
procedimiento asegurate siempre de estar arriba de function o debajo de end
function para crear una nueva funcin o procedimiento.
A nuestra funcin la llamamos funCalcularIva para seguir las reglas de
codificacin gregoriano.
Las convenciones de codificacin son pautas de programacin que no estn
enfocadas a la lgica del programa, sino a su estructura y apariencia fsica.
Facilitan la lectura, comprensin y mantenimiento del cdigo
La razn principal de usar un conjunto coherente de convenciones de
codificacin es estandarizar la estructura y el estilo de codificacin de una
aplicacin de forma que el autor y otras personas puedan leer y entender el
cdigo fcilmente.
Un conjunto de convenciones de codificacin de propsito general debe definir
los requisitos mnimos necesarios para conseguir los objetivos explicados
anteriormente, dejando libertad al programador para crear la lgica y el flujo
funcional del programa.
El objetivo es hacer que el programa sea fcil de leer y de entender sin obstruir
la creatividad natural del programador con imposiciones excesivas y
restricciones arbitrarias.
Escribimos fun delante de la funcin, para que sepamos que CalcularIva es una
funcin y no un procedimiento sub, tambin ponemos en mayscula CalcularIva
para que sea mas legible por un lado y para que al escribirla con minscula el
sistema lo transforme en mayscula mostrndonos que reconoci la funcin.
Escribiremos el nombre de la funcin con las primeras letras en maysculas y
luego cuando hagamos referencia a ella lo haremos con minsculas si se
transforma en maysculas la reconoci sino escribimos mal el nombre de la
funcin o esta en otro libro.
Ahora tendremos que definir los parmetros de entrada que vamos a querer en
esta funcin

Pgina 64

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

En este caso tenemos un solo argumento de entrada que es Monto.


Como el Monto es un numero y puede ser decimal entonces la dimensionaremos
(crearemos) como numrica double
Monto en realidad es una variable de tipo Double utilizada como parmetro de
entrada en una funcin.

Declaracin de variables
Recuerdan en la escuela x=10 entonces x+2 =12, bien de eso se trata x es una
variable.
Una variable es un lugar de almacenamiento con nombre que puede contener
cierto tipo de datos que puede ser modificado durante la ejecucin del programa.
Cada variable tiene un nombre nico que la identifica dentro de su nivel de
mbito. Puede especificar un tipo de datos o no.
Nombres de variable deben comenzar con un carcter alfabtico, deben ser
nicos dentro del mismo mbito, no deben contener ms de 255 caracteres y no
pueden contener un punto o carcter de declaracin de tipo.
Para declarar (usar) variables se utiliza normalmente una instruccin Dim
Dim strMiVariable as string
Las variables se pueden declarar como de uno de los siguientes tipos de datos:
Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (para
cadenas de longitud variable), String * longitud (para cadenas de longitud fija),
Object, o Variant. Si no se especifica el tipo de datos, el tipo de datos Variant es
el predefinido. Tambin es posible crear un tipo definido por el usuario
empleando la instruccin Type.
Se pueden declarar varias variables en una instruccin. Para especificar el tipo
de datos se debe incluir un tipo de datos para cada variable.
No es necesario especificar el tipo de datos en la instruccin de declaracin. Si
se omite, la variable ser del tipo Variant.
Cuando se utiliza la instruccin Static en lugar de la instruccin Dim, la variable
declarada mantendr su valor entre llamadas sucesivas.
En Visual Basic se puede declarar implcitamente una variable usndola en una
instruccin de asignacin. Todas las variables que se definen implcitamente son
del tipo Variant. Las variables del tipo Variant consumen ms recursos de
memoria que la mayor parte de las otros tipos de variables. Tu aplicacin ser
ms eficiente si se declaran explcitamente las variables y se les asigna un tipo
de datos especfico. Al declararse explcitamente las variables se reduce la
posibilidad de errores de nombres y el uso de nombres errneos.
Si no quers que Visual Basic realice declaraciones implcitas, puede incluir en
un mdulo la instruccin Option Explicit antes de todos los procedimientos. Esta

Pgina 65

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

instruccin exige que todas las variables del mdulo se declaren explcitamente.
Si un mdulo incluye la instruccin Option Explicit, se producir un error en
tiempo de compilacin cuando Visual Basic encuentre un nombre de variable
que no ha sido previamente declarado, o cuyo nombre se ha escrito
incorrectamente.
Se puede seleccionar una opcin del entorno de programacin de Visual Basic
para incluir automticamente la instruccin Option Explicit en todos los nuevos
mdulos.

Para seguir con la codificacin gregoriana tenemos un prefijo para cada tipo de
variables.
Tipo de datos
Boolean
Byte
Objeto Collection
Currency
Date (Time)
Double
Error
Integer
Long
Object
Single
String
Tipo definido por el usuario
Variant

Prefijo
bln
byt
col
cur
dtm
dbl
err
int
lng
obj
sng
str
udt
vnt

Ejemplo
BlnEncontrado
BytDatosImagen
colWidgets
curIngresos
dtmInicio
dblTolerancia
errNumDeOrden
intCantidad
lngDistancia
objActivo
sngMedia
strNombreF
udtEmpleado
vntCheckSum

Alcance de las variables


Otro tema muy importante es el Scope o alcance que tiene una variable
Tenemos variables de procedimiento que son las creadas dentro de un
procedimiento

Variables Modulares creadas en el espacio General Declaraciones del modulo

Pgina 66

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Y las variables Publicas que se pueden crear en cualquier lugar, aunque por una
cuestion de orden conviene crearlas en un modulo separado.

El tiempo durante el que una variable conserva su valor se conoce como vida. El
valor de la variable puede cambiar durante su vida, pero conserva algn valor.
Cuando una variable pierde su alcance, ya no tiene ningn valor.
Cuando un procedimiento o funcin comienza a ejecutarse, se inicializan todas
las variables. Las variables numricas se inicializan a cero, las cadenas de
longitud variable se inicializan a una cadena vaca de longitud cero ("") y una
cadena de longitud fija se llena con los caracteres correspondientes al cdigo
ASCII 0, o Chr(0). Las variables variant se inicializan a Empty. Cada uno de los
elementos de una variable de tipo definido por el usuario se inicializa como si se
tratase de una variable independiente.
Si el valor de una variable no cambia durante la ejecucin del cdigo, conserva
su valor de inicializacin hasta que pierda alcance.
Una variable de nivel de procedimiento declarada mediante la instruccin Dim
conserva su valor hasta que el procedimiento termina de ejecutarse. Si el
procedimiento llama a otros procedimientos, la variable conserva su valor
tambin mientras se ejecutan esos procedimientos.
Si una variable de nivel de procedimiento de declara con la palabra clave Static,
la variable conserva su valor mientras haya cdigo en ejecucin, sea cual sea el
mdulo. Cuando todo el cdigo ha terminado de ejecutarse, la variable pierde su
alcance y su valor. Su vida es la misma que la de una variable de nivel de
mdulo.
Una variable de nivel de mdulo es distinta a una variable esttica. En un mdulo
estndar, conserva su valor hasta que se termina de ejecutar el cdigo.
Las variables de nivel de mdulo consumen memoria hasta que sus valores se
vuelven a inicializa, por eso slo se deben utilizar cuando sea necesario.
Si se incluye la palabra clave Static antes de una instruccin Sub o Function,
los valores de todas las variables de nivel de procedimiento del procedimiento se
conservarn entre las sucesivas llamadas
Retomando nuestro ejemplo ya tenamos creado el encabezado de la funcin
ahora escribiremos el calculo

Pgina 67

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Le agregamos dob a monto porque es una variable de tipo Double


La funcin en si mismo funcionaria como una variable porque para devorlver el
resultado se carga a si mismo, ahora bien el dato que va a devolver puede ser
una palabra (string) o un numero o un bolean (verdadero / falso) o cualquier otro
tipo de datos, si nosotros sabemos que tipo de datos va a devolver entonces
definiremos toda la funcin como el tipo de datos que devolver.

Si no se especifican de forma explcita mediante Public, Private los


procedimientos Function son pblicos de manera predeterminada. Si no se
emplea Static, el valor de las variables locales no se conserva entre distintas
llamadas.
Los procedimientos Function pueden ser recursivos; es decir, pueden llamarse a
s mismos para realizar una tarea determinada. Sin embargo, la recursin puede
provocar el desbordamiento de pila. La palabra clave Static no se suele utilizar
con procedimientos Function recursivos.
Todo el cdigo ejecutable debe estar dentro de procedimientos. No puede definir
un procedimiento Function dentro de otro procedimiento Function, Sub o
Property.
La instruccin Exit Function produce una salida inmediata de un procedimiento
Function. La ejecucin del programa contina con la instruccin que sigue a la
instruccin que llam al procedimiento Function. En cualquier lugar de un
procedimiento Function puede aparecer cualquier nmero de instrucciones Exit
Function.
Declare explcitamente las variables para evitar este tipo de conflicto. Puede
utilizar una instruccin Option Explicit para forzar la declaracin explcita de
variables.
Visual Basic puede reorganizar las expresiones aritmticas para mejorar su
eficacia interna. Evite utilizar un procedimiento Function en una expresin
aritmtica cuando la funcin cambie el valor de las variables de la misma
expresin.
Un ltimo detalle el parmetro de entrada dobMonto puede obtenerse de dos
formas por referencia (by ref) o por valor (by val)
by val es un modo de pasar un argumento a un procedimiento pasando su valor
en vez de su direccin. Esto hace posible el acceso del procedimiento a una
copia de la variable. Como resultado, el valor actual de la variable no puede ser
cambiado por el procedimiento al cual se pasa.

Pgina 68

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

By ref es un modo de pasar un argumento a un procedimiento pasando su


direccin en vez de su valor. Esto hace posible el acceso del procedimiento a la
variable real. Como resultado, el valor real de la variable puede ser cambiado por
el procedimiento al cual se pasa.
Por defecto las funciones toman las variables definidas entre los parmetros by
ref asi que seria bueno agregarle by val.

Si quisiramos que el monto fuera opcional o sea que en el caso que alguien no
pase este parmetro la funcin funcionara igual
Parece complicado tantas cosas no pero en realidad no es tan complicado como
parece y teniendo una de referencia siempre podemos copiar y pegar.

Pgina 69

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Utilizar y Combinar funciones de VBA y Excel


Podemos usar nuestras propias formulas con las formulas que vienen con Excel,
lamentablemente no podemos ver como fueron creadas las formulas pero si
usarlas.
Las frmulas que pueden ser usadas en VBA estn listadas en la ayuda
buscando la palabra funciones, podes encontrar un ejemplo y una descripcin de
los parmetros.

La otra forma de ver que funciones podes usar es directamente con el objeto
WorksheetFunction, al tipear el punto te apareceran la lista de todas las
funciones.

Pgina 70

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Creacin de funciones personalizadas


Sera bueno usarla desde Excel para eso nos vamos a una hoja cualquiera y
estando en una celda vamos al asistente de funciones

En la categora definida por el usuario elegimos nuestra funcin y clikeamos


aceptar

Bueno ahora simplemente elegis la celda que va a cargar el parmetro del monto
y pones aceptar

Fantstico no ?, nuestra propia funcin si queres que tenga una


descripcin como las que vienen con Excel te voy a contar un truco pero
no se lo digas a nadie.
Tenes que ir a Herramientas Macro

Pgina 71

Excel nivel III Captulo 4

Creacin de Funciones personalizadas

Nuestra funcin no esta en la lista porque no es un procedimiento es una funcin


y en la lista solo figuran los procedimientos pero igalmente con fe escribi el
nombre de la funcin (funCalcularIva) y hace un clic en opciones...

Aca podes escribir lo que quieras incluso asignar una tecla rapida y la
descripcin aparecera en el asistente de funciones.

Pgina 72

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

Objetos, Propiedades y Mtodos en Visual Basic.

En este captulo aprenders:


Concepto de objetos como contenedores de otros objetos.
Uso de controles en una hoja de clculo.
Uso de objetos, propiedades y mtodos, en cdigo Visual Basic.
Objetos Grficos.

Pgina 73

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

Concepto de objetos como contenedores de otros objetos


Dijimos que una hoja de Excel o un formulario pueden ser considerados
contenedores de objetos, si queremos usar un control active x necesitamos un
lugar para dibujarlo ese lugar puede ser una hoja de Excel.
En el capitulo 2 hablamos acerca de los objetos active x y vimos que podamos
usar dos tipos de objetos similares dentro de las hojas unos de la barra de
formulario y otros de la barra de Visual Basic.

Uso de controles en una hoja de clculo.


Al agregar un control desde la barrita de Visual Basic, se agrega un objeto a la
hoja correspondiente, este objeto tiene Propiedades, Mtodos y Eventos

Vamos a dibujar un Cuadro Combinado para ver como funcionan estos


controles.

Si al dibujar el control antes de soltar el mouse apretas la tecla Alt se


dibuja con las dimensiones de las celdas.

Una vez que esta dibujado vamos a ver como le cambiamos el nombre y las
propiedades para que nos sea de utilidad.
Imaginemos que necesitamos hacer un Cuadro Combinado que al cambiar
cambie un grafico que representa las ventas de una empresa
Nombra a una hoja Datos y a la que esta el Cuadro Combinado Reportes, en la
hoja Datos escrib la siguiente informacin:

Pgina 74

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

Luego en la hoja de reportes vamos a escribir la lista que queremos que


aparezca en el combo box (Cuadro Combinado).
Despus si queremos podemos ocultarla o moverla a un lugar que no se vea

Para relacionar la lista con el combo seleccionamos el combo si no se


selecciona de la barrita de Visual Basic eleg diseo. Luego F4 para que
vengan las propiedades

Pgina 75

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

En las propiedades cambiarle el nombre por uno normalizado para que no nos
volvamos locos cuando tengamos que asignarle cdigo desde VBA. Le
podemos llamar cmbReportes.
La propiedad para definir la lista es ListFillRange entonces ponemos la primera
celda de la lista dos puntos y la segunda.
Ya esta funcionando el combo ahora nos queda que al cambiar la seleccin se
modifique un Grfico.
Vamos a insertar un grafico basado en los datos de la hoja Datos mientras
grabamos una macro.

9.

Para comenzar a grabar la macro vamos a cliequear el circulo azul (Grabar


Macro).

10. Borrame como nombre de la macro:


11. Elegimos Este libro.

Pgina 76

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

12. Vamos al asistente de grficos:

13. Elegimos cdigo de barras

14. Siguiente y elegimos el rango de la hoja Datos. (para seleccin mltiple con
la tecla control)

15. Siguiente, escribimos el titulo y finalizamos

Pgina 77

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

16. Ya tenemos el grfico y los comandos en el ltimo modulo de este libro.


Podemos detener la grabacin.

Vamos a ver el cdigo:

Pgina 78

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

Primero vemos que se agrega un grafico con Charts.Add, pero nosotros


no queremos crear uno nuevo sino modificar el que ya creamos de
acuerdo con lo que el usuario elija del combo.
El nico comando que necesitaramos es el que esta seleccionado e ir
cambiando el rango de acuerdo se haba la eleccin.

Lo copiamos y lo llevamos a la hoja donde pusimos el combo.

Pgina 79

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

Uso de Objetos, propiedades y mtodos en cdigo Visual Basic


Tenemos que elegir el objeto con el cual queremos trabajar con el selector de la
izquierda y el evento donde queremos poner el cdigo con el selector de la
derecha.
Como queremos que al cambiar el combo ocurra el cambio en el grafico
elegimos el evento change.

Pegamos el cdigo dentro del evento Change:

Ahora tenemos que diferenciar el Source de acuerdo a la eleccin, para eso


usaremos la estructura select case de VB.con la propiedad text del combo
cmbReporte

Pgina 80

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

El problema que tenemos es que el la macro se genero asumiendo que el


ActiveChart era el que se acababa de crear pero para nosotros el objeto activo
sera el combo box.
Para hacerlo activo necesitamos saber el nombre. Para saberlo hay un pequeo
truco.
En la hoja de Excel donde esta el grfico eleg la barra de Dibujo y marca la
flechita blanca, ahora haciendo un clic en determinada parte del grafico aparece
el nombre.

Para ordenarnos mejor le podes cambiar el nombre:

Pgina 81

Excel nivel III Captulo 5

Objetos, Propiedades y Mtodos en VBA

Sabiendo el nombre ahora es mucho mas fcil volvemos al evento change


y escribimos la siguiente lnea para elegir el grafico.

Ahora al cambiar el combo cambia el grfico, nos quedara cambiar tambin el


titulo.

Bien, ya tenemos asociado el combo al evento y desde ah elegimos los datos


del grafico.

Pgina 82

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Trabajo con Mens Personalizados.

En este captulo aprenders:

Conceptos sobre Mens.


Creacin de una barra de men.
Creacin de un men.
Creacin de un tem de men.

Pgina 83

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Conceptos sobre Mens.


Los mens y barras de herramientas permiten dar instrucciones a Microsoft
Excel sobre lo que se desea hacer.
Un men muestra una lista de comandos. Al lado de algunos de estos comandos
aparece una imagen a la que se puede asociar el comando fcilmente. La
mayora de los mens estn situados en la barra de mens, que normalmente se
encuentra en la parte superior de la pantalla.
Una barra de herramientas puede contener botones con imgenes (la misma
imagen que se ve al lado del comando de men), mens o una combinacin de
ambos. Excel incluye numerosas barras de herramientas integradas que se
pueden mostrar y ocultar, segn sea preciso. De manera predeterminada, las
barras de herramientas integradas Estndar y Formato estn acopladas una al
lado de la otra debajo del men.
Podemos tener varias barras de herramientas pero un solo men.
La forma de eliminar la barra de mens de Excel es sustituirla por una barra de
mens personalizada. Cuando la aplicacin se cierre, bastara con eliminar la
barra de mens personalizada para que vuelva a aparecer la de Excel
Una barra de mens es simplemente una barra de comandos como una barra de
herramientas que se especifica como barra de mens.

Pgina 84

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Creacin de un men.
Existe una forma de poner una barra de men solo para nuestro libro sin
interferir con el resto de los usuarios.
Cuando abrimos nuestro libro o hoja lo creamos desde el cdigo y cuando nos
vamos lo borramos.
Vamos a crear un item en el men predeterminado de Excel que solo aparezca
cuando abrimos el libro del ejemplo.
Al final de este ejercicio tendramos que obtener algo asi:

1. Creamos un Modulo Bas con el nombre modBarraMenu en el proyecto de


un nuevo libro.
Te acordas no?. Botn derecho sobre el proyecto Insertar Modulo.
Despus doble clic para comenzar a escribir el codigo

2. Primero que todo vamos a crear un procedimiento dentro del mdulo y


luego definiremos dos variables que necesitamos.
Estas dos variables son variables de objetos esto significa que no se
cargan con datos sino que se setean con un objeto determinado, existen
muchas operaciones en VBA que se hacen de esta forma. Por ejemplo si

Pgina 85

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

queremos incorporar los objetos de Word en Excel no podemos


directamente usarlos tenemos que primero instanciar una variable con
ellos y a partir de ah usar la variable como si fuera el objeto.
En este caso mnuMenu hereda todas las propiedades y metodos de
CommandBarControl que es el objeto que nos permite crear barritas.

3. Vamos a setear la variable porque hasta no usar el comando set es como


si estuviese vaca.
Ahora mnuMenu es el men por defecto de Excel.

El comando with sirve solo para economizar cdigo y no tener que


estar repitiendo mnuMenu en todas las lineas de abajo
Agregamos un nuevo men y definimos un tag, esto nos va a servir para
poder borrar el men al salir del libro.

4. Luego agregamos el resto de los men y definimos las acciones para


cada item.
Para evitar que el nos de un error al intentar cargar el men que puede ya
estar creado agregamos un procedimiento para eliminarlo antes de
crearlo
A continuacin el cdigo completo:

Pgina 86

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Sub proCrearMenu()

Dim mnuMenu As CommandBarControl


Dim mnuSubMenu As CommandBarControl
' Borrar el men si ya existe
proBorrarMenu
' * Crea un nuevo men en la barra existente *
' instancia la variable como el men activo
Set mnuMenu =
Application.CommandBars(1).Controls.Add(msoControlPopup, , , ,
True)
' Agrega el men al final
With mnuMenu
.Caption = "&Menu Personal"
.Tag = "MiTag"
.BeginGroup = False
End With
' Por si no encuentra el men... Se va del procedimiento
If mnuMenu Is Nothing Then Exit Sub
' Agrega primer item
With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Primer Elemento"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
End With
' Agrega segundo item
With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Segundo Elemento"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
End With
' Agrega tercer item
With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Tercer Elemento"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
End With
' Agrega un submenu
Set mnuSubMenu = mnuMenu.Controls.Add(msoControlPopup, 1, , ,
True)
With mnuSubMenu
.Caption = "&Primer Submenu"
.Tag = "SubMenu1"
.BeginGroup = True
End With
' Agrega un item al submenu

Pgina 87

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

With mnuSubMenu.Controls.Add(msoControlButton, 1, , , True)


.Caption = "&Primer Item del submenu"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
.Style = msoButtonIconAndCaption
.FaceId = 71
.State = msoButtonDown ' or msoButtonUp
End With
' Agrega un item al submenu
With mnuSubMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Segundo Item del submenu"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
.Style = msoButtonIconAndCaption
.FaceId = 72
.State = msoButtonDown ' or msoButtonUp
End With

' Agrega un item al menu


With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Borrar este men"
.OnAction = ThisWorkbook.Name & "!proBorrarMenu"
.Style = msoButtonIconAndCaption
.FaceId = 463
.BeginGroup = True
End With
' limpia las variables de objeto de la memoria
Set mnuSubMenu = Nothing
Set mnuMenu = Nothing
End Sub

5. Cdigo de los procedimientos de borrado y el que pusimos como accin


en los items

Pgina 88

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

6. Ahora solo queda agregar en el evento Open del libro el nombre del
procedimiento.

7. Por ultimo al salir del libro que se borre el item para que no se vea al abrir
otro libro

Pgina 89

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Creacin de una barra de men.


Con solo cambiar unas lineas podemos usar el mismo cdigo para hacer
desaparecer el men y crear uno nuevo, y al salir que reaparezca el
original.
Tenemos que agregar una variable mas para trabajar con el objeto CommandBar
Luego setearemos la barra no con la primer barrita como hicimos antes sino que
con una nueva con el nombre MiBarraMenu.

Para borrar tambin tenemos que hacer cambios

Pgina 90

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Procedimiento para crear el Nuevo men.


Sub proCrearMenuUnico()
' *******************************************************
' * Este procedimiento sirve para crear un nuevo men *
' * Autor: Eduardo Silva
*
' *******************************************************
Dim cbrBarra As CommandBar
Dim mnuMenu As CommandBarControl
Dim mnuSubMenu As CommandBarControl

' Borrar el men si ya existe


proBorrarMenuUnico
Set cbrBarra = Application.CommandBars.Add("MiBarraMenu",
msoBarTop, True, True)
Set mnuMenu = cbrBarra.Controls.Add(msoControlPopup, , , , True)
' * Crea un nuevo men en la barra existente *
' ' instancia la variable como el men activo
' Set mnuMenu =
Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
' Agrega el men al final
With mnuMenu
.Caption = "&Menu Personal"
.Tag = "MiTag"
.BeginGroup = False
End With
' Por si no encuentra el men... Se va del procedimiento
If mnuMenu Is Nothing Then Exit Sub
' Agrega primer item
With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Primer Elemento"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
End With
' Agrega segundo item
With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Segundo Elemento"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
End With
' Agrega tercer item
With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Tercer Elemento"
.OnAction = ThisWorkbook.Name & "!proIriaMacro"
End With

Pgina 91

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

' Agrega un submenu


Set mnuSubMenu = mnuMenu.Controls.Add(msoControlPopup, 1, , , True)
With mnuSubMenu
.Caption = "&Primer Submenu"
.Tag = "SubMenu1"
.BeginGroup = True
End With
' Agrega un item al submenu
With mnuSubMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Primer Item del submenu"
.OnAction = ThisWorkbook.Name & "!proIriaMacrounico"
.Style = msoButtonIconAndCaption
.FaceId = 71
.State = msoButtonDown ' or msoButtonUp
End With
' Agrega un item al submenu
With mnuSubMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Segundo Item del submenu"
.OnAction = ThisWorkbook.Name & "!proIriaMacrounico"
.Style = msoButtonIconAndCaption
.FaceId = 72
.State = msoButtonDown ' or msoButtonUp
End With

' Agrega un item al menu


With mnuMenu.Controls.Add(msoControlButton, 1, , , True)
.Caption = "&Borrar este men"
.OnAction = ThisWorkbook.Name & "!proBorrarMenuunico"
.Style = msoButtonIconAndCaption
.FaceId = 463
.BeginGroup = True
End With
' Muestra el men creado
cbrBarra.Visible = True
' limpia las variables de objeto de la memoria
Set mnuSubMenu = Nothing
Set mnuMenu = Nothing
Set cbrBarra = Nothing
End Sub

Procedimiento para eliminar


Sub proBorrarMenuUnico()
' Si ocurre un error continua
On Error Resume Next

Pgina 92

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Application.CommandBars("MiBarraMenu").Delete
' Vuelve a manejar los errores
On Error GoTo 0
End Sub

Pgina 93

Excel nivel III Captulo 6

Trabajo con Mens Personalizados

Grabar la barra de herramientas.


Para asegurarse de que una barra de herramientas personalizada estar
disponible en un libro determinado, podes asignarle la barra de herramientas al
libro.
En personalizar eleg Adjuntar.

Copia tu barra de men

Guard el libro despus de asignarle una barra de herramientas.

Pgina 94

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Trabajando con cdigo Visual Basic en procedimientos.

En este Capitulo aperenderas:


Utilizacin de la ventana local.
Definicin de constantes.
Estructuras de control en Visual Basic.

Pgina 95

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Utilizacin de la ventana local.


La ventana Inmediato muestra la informacin que resulta de las instrucciones de
depuracin en el cdigo o comandos escritos directamente en la ventana.
En algunos casos podemos querer modificar el valor de una variable o saber
cuanto vale determinada propiedad sin detener el depurador.
Para mostrar la ventana Inmediato
En el men Ver, elij ventana Inmediato (CTRL+G).

Por ejemplo estamos corriendo un procedimiento y queremos saber como se


llama el grafico activo porque nos esta dando error al invocarlo.
Escribimos el signo de interrogacin y la propiedad, luego enter.

Pgina 96

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Utiliza la ventana Inmediato para:


Probar cdigo escrito nuevo o problemtico.
Consultar o cambiar el valor de una variable mientras ejecuta una
aplicacin. Mientras se detiene la ejecucin, asigna un nuevo valor a la
variable como lo haras en cdigo.
Consultar o cambiar un valor de propiedad mientras ejecuta una
aplicacin.
Llamar a procedimientos como lo hara en cdigo.
Ver la salida de la depuracin mientras ejecuta una aplicacin.
Las instrucciones de la ventana Inmediato se ejecutan en un contexto esto es,
como si se escribieran en un mdulo especfico.
Si necesita ayuda en la sintaxis de funciones, instrucciones, propiedades o
mtodos mientras trabajas en la ventana Inmediato, selecciona la palabra clave,
el nombre de la propiedad o el nombre del mtodo y presiona F1.

Pgina 97

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Definicin de constantes.
Una constante es elemento con nombre que mantiene un valor constante a
travs de la ejecucin de un programa.
Las constantes pueden ser cadenas o literales numricos, otras constantes o
cualquier combinacin que incluya operadores aritmticos o lgicos exceptuando
Is y la exponenciacin.
Cada aplicacin principal puede definir su propio conjunto de constantes. El
usuario puede definir constantes adicionales con la instruccin Const.
Por ejemplo podemos crear una constante con el nombre del usuario y usarla en
el sistema, si queremos usar el sistema para otro usuario solo cambiamos el
nombre en un solo lugar.

Puede utilizar constantes en cualquier lugar del cdigo en lugar de valores


reales.
El cdigo puede contener valores constantes de uso frecuente, o puede
depender de ciertos nmeros difciles de recordar o con un significado oscuro.
Puedes hacer que tu cdigo sea de ms fcil lectura y mantenimiento empleando
constantes.
Una constante es un nombre con significado que reemplaza a un nmero o
cadena de texto que no va a sufrir cambios. No es posible modificar una
constante, ni asignarle un nuevo valor, como a una variable.
Hay tres tipos de constantes:
Constantes intrnsecas o constantes definidas por el sistema, que son
proporcionadas por las aplicaciones y controles. Otras aplicaciones que
proporcionan bibliotecas de objetos, como Microsoft Access, Microsoft Excel,
Microsoft Project , y Microsoft Word, tambin proporcionan una lista de
constantes que se pueden utilizar con sus objetos, mtodos y propiedades. En el
Examinador de objetos es posible obtener una lista de las constantes
proporcionadas por cada biblioteca de objetos individual
Las constantes de Visual Basic aparecen relacionadas en la biblioteca de Visual
Basic for Applications y en la biblioteca Data Access Object (DAO).
Visual Basic sigue reconociendo constantes de aplicaciones creadas con
versiones anteriores de Visual Basic o Visual Basic for Applications. Es posible
actualizar las constantes para utilizar slo las que aparecen en el Examinador de
objetos. Las constantes que aparecen en el Examinador de objetos no tiene que
declararse en su aplicacin.

Pgina 98

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Constantes simblicas o definidas por el usuario, se declaran mediante la


instruccin Const.
Constantes de compilacin condicional que se declaran empleando la instruccin
#Const.
En versiones anteriores de Visual Basic, los nombres de constantes se
representaban normalmente en maysculas y con guiones de subrayado. Por
ejemplo:
MOSAICO_HORIZONTAL
Las constantes intrnsecas proporcionadas por todos los objetos tienen nombres
en maysculas y minsculas, con un prefijo de 2 caracteres que indica la
biblioteca de objetos que define la constante. Las constantes de la biblioteca de
objetos Visual Basic for Applications tienen el prefijo "vb" y las constantes de la
biblioteca de objetos Microsoft Excel llevan el prefijo "xl". Los siguientes ejemplos
muestran las variaciones entre los prefijos de los controles, en funcin de la
biblioteca de tipos.
vbTileHorizontal
xlDialogBorder
Al declarar una constante, se puede asignar a un valor un nombre que tenga
algn significado apropiado.
La instruccin Const se utiliza para declarar una constante y darle valor. Una
constante no puede modificarse o cambiar de valor una vez que ha sido
declarada.
Se puede declarar una constante dentro de un procedimiento o al principio de un
mdulo, en la seccin de Declarations. Las constantes a nivel de mdulo son
privadas, a menos que se especifique lo contrario. Para declarar una constante
pblica a nivel de mdulo, la instruccin Const debe ir precedida por la palabra
clave Public.
Se puede declarar explcitamente una constante como privada colocando la
palabra clave Private antes de la instruccin Const para facilitar la lectura y
comprensin del cdigo.
El siguiente ejemplo declara la constante Public EdadCon como un Integer y le
asigna el valor 34.

Las constantes se pueden declarar de uno de los siguientes tipos de


datos: Boolean, Byte, Integer, Long, Currency, Single, Double, Date,
String, o Variant. Dado que ya se conoce el valor de una constante, es
muy fcil elegir el tipo de datos en la instruccin Const.

Pgina 99

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

En una sola instruccin se pueden declarar varias constantes. Para especificar


un tipo de datos, debe incluirse el tipo de datos para cada constante. En la
siguiente instruccin se declaran como Integer las constantes EdadCon y
SalarioCon.

Pgina 100

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Estructuras de control en Visual Basic.


Las estructuras de control en VB no son distintas a las de cualquier lenguaje de
programacin, ya estuvimos viendo algunas pero vamos a verlas en detalle en
este capitulo
Muchas veces tenemos que tomar una decisin acerca de determinado valor de
hecho programar es comparar, para eso existen tres tipos de estructuras
Selectivas o Condicionales.

Condicional Simple.If / Then /End If


If <condicin> then
<bloque de instrucciones>
End If
Ejemplo:
El usuario elige una opcin si eligi vbYes enva entra en el If y
enva el mail

Condicional Doble. If / Then / Else / End If


If <condicin> then
<bloque de instrucciones>
Else
<bloque de instrucciones>
End If
Ejemplo:
El usuario elige una opcin si eligio vbYes envia el mail sino
muestra un mensaje

Pgina 101

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Condicional Mltiple. Select Case / Case / Case Else / End Select


Cuando tenemos muchas opciones queda mas claro usar case en
vez de if
Select Case <Variable>
Case 0
<bloque de instrucciones>
Case 1
<bloque de instrucciones>
Case 2
<bloque de instrucciones>
Case N
<bloque de instrucciones>
Case Else
<bloque de instrucciones>
End Select

Ejemplo:
Esta funcin tiene como parmetro de entrada un Integer que representa el
numero de mes y defuelve el nombre del mes

Pgina 102

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Estructura Repetitiva.. For / [Step] / Next


Cuando sabemos la cantidad de veces que queremos repetir
determinado codigo usamos For next
For <Variable> = <ValorInicial> To <ValorFinal> [
Step <valor step> ]
<bloque de instrucciones>
Next <Variable>
Ejemplo:
Queremos completar una serie de celdas a partir de un dato que escribe el
usuario

Pgina 103

Excel nivel III Captulo 7

Trabajando con cdigo V B en Procedimientos

Estructuras Repetitivas con condicion. Do While / Loop

Do While <condicin>
<bloque de instrucciones>
Loop
Ejemplo:
Enva un mail a cada uno de los destinatarios de la hoja1 hasta que encuentre el
primero vaco.

Tambin podemos escribirlo al revs. Do / Loop Until


Do
<bloque de instrucciones>
Loop Until <condicin>

Pgina 104

Excel nivel III Captulo 8

Trabajando con Custom Form

Trabajando con Custom Form.

En este captulo aprenderas:

Desarrollo de aplicaciones con boxes de dilogo.


Visualizacin de informacin, utilizando la funcin Msgbox.
Creacin de un box de dilogo.
Nuevos formularios modales y no modales.
Visualizacin de un box de dilogo personalizado.
Obteniendo informacin desde un box de dilogo personalizado.
Ocultando un box de dilogo.

Pgina 105

Excel nivel III Captulo 8

Trabajando con Custom Form

Desarrollo de aplicaciones con boxes de dilogo.


Cuando queremos facilitar la utilizacin de Excel para usuarios inexpertos o para
automatizar determinados procesos de carga podemos usar Ventanas de
Dialogo o Cuadros de Dialogo o Boxes de Dialogo (como lo queramos llamar)
En el capitulo 2 vimos el diseador de Formularios con el que podemos crear
ventanas con la informacin para el usuario, pero hay veces que necesitamos
tan solo un dato concreto y no queremos llenar el libro de formularios en ese
caso usamos las funciones MsgBox para mostrar un mensaje e InputBox para
obtener un dato del usuario.

Pgina 106

Excel nivel III Captulo 8

Trabajando con Custom Form

Visualizacin de informacin, utilizando la funcin Msgbox.


MsgBox muestra un mensaje en un cuadro de dilogo, espera a que el usuario
haga clic en un botn y devuelve un tipo Integer correspondiente al botn elegido
por el usuario.
La sintaxis es la siguiente:
MsgBox(prompt[, buttons][, title][, helpfile, context])
Por ejemplo:

Que al ejecutarse muestra el siguiente mensaje:

Los parmetros son los siguientes.


Parte

Descripcin

prompt

Requerido. Expresin de cadena que representa el prompt en el cuadro de


dilogo. La longitud mxima de prompt es de aproximadamente 1024
caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de
ms de una lnea, puede separarlos utilizando un carcter de retorno de carro
(Chr(13)) o un carcter de avance de lnea (Chr(10)), o una combinacin
de caracteres de retorno de carro avance de lnea (Chr(13) y Chr(10))
entre cada lnea y la siguiente.

buttons

Opcional. Expresin numrica que corresponde a la suma de los valores que


especifican el nmero y el tipo de los botones que se pretenden mostrar, el
estilo de icono que se va a utilizar, la identidad del botn predeterminado y
la modalidad del cuadro de mensajes. Si se omite este argumento, el valor
predeterminado para buttons es 0.

title

Opcional. Expresin de cadena que se muestra en la barra de ttulo del


cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre
de la aplicacin.

helpfile

Opcional. Expresin de cadena que identifica el archivo de Ayuda que se


utiliza para proporcionar ayuda interactiva en el cuadro de dilogo. Si se
especifica helpfile, tambin se debe especificar context.

Pgina 107

Excel nivel III Captulo 8

Trabajando con Custom Form

Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda


asignado por el autor al tema de Ayuda correspondiente. Si se especifica
context, tambin se debe especificar helpfile.

context

Estos son los argumentos para el tipo de cuadro:


Constante

Valor

Descripcin

VbOKOnly

Muestra solamente el botn Aceptar.

VbOKCancel

Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore

Muestra los botones Anular, Reintentar e


Ignorar.

VbYesNoCancel

Muestra los botones S, No y Cancelar.

VbYesNo

Muestra los botones S y No.

VbRetryCancel

Muestra los botones Reintentar y


Cancelar.

VbCritical

16

Muestra el icono de mensaje crtico.

VbQuestion

32

Muestra el icono de pregunta de


advertencia.

VbExclamation

48

Muestra el icono de mensaje de


advertencia.

VbInformation

64

Muestra el icono de mensaje de


informacin.

VbDefaultButton1

El primer botn es el predeterminado.

VbDefaultButton2

256

El segundo botn es el predeterminado.

VbDefaultButton3

512

El tercer botn es el predeterminado.

VbDefaultButton4

768

El cuarto botn es el predeterminado.

VbApplicationModal

Aplicacin modal; el usuario debe


responder al cuadro de mensajes antes de
poder seguir trabajando en la aplicacin
actual.

VbSystemModal

4096

Sistema modal; se suspenden todas las


aplicaciones hasta que el usuario responda
al cuadro de mensajes.

VbMsgBoxHelpButton

16384

Agrega el botn Ayuda al cuadro de


mensaje.

VbMsgBoxSetForeground 65536

Especifica la ventana del cuadro de mensaje


como la ventana de primer plano.

Pgina 108

Excel nivel III Captulo 8

Trabajando con Custom Form

VbMsgBoxRight

524288

El texto se alnea a la derecha.

VbMsgBoxRtlReading

1048576

Especifica que el texto debe aparecer para


ser ledo de derecha a izquierda en sistemas
hebreo y rabe.

El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones


mostrados en el cuadro de dilogo
El segundo grupo (16, 32, 48, 64) describe el estilo del icono
El tercer grupo (0, 256, 512) determina el botn predeterminado
El cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes.
Cuando se suman nmeros para obtener el valor final del argumento buttons, se
utiliza solamente un nmero de cada grupo.
Al usuario clikear en los distintos botones se obtienen los siguientes valores
Constante

Valor

Descripcin

vbOK

Aceptar

vbCancel

Cancelar

vbAbort

Anular

vbRetry

Reintentar

vbIgnore

Ignorar

vbYes

vbNo

No

Si queremos usar la funcin para una decisin determinada podemos usar la


opcin yes/no de la siguiente forma

Cuando cargamos una variable con la respuesta los parmetros van entre
parentesis

Pgina 109

Excel nivel III Captulo 8

Trabajando con Custom Form

Al elegir Si intRespuesta vale 6 que es lo mismo que vale la constante que


representa ese valor vbYes.
Si quers omitir algn argumento de posicin, tens que incluir el delimitador de
coma correspondiente.

Pgina 110

Excel nivel III Captulo 8

Trabajando con Custom Form

Creacin de un box de dilogo.


La funcin InputBox es similar la diferencia principal radica en que el usuario
puede ingresar datos.
Muestra un mensaje en un cuadro de dilogo, espera que el usuario escriba un
texto o haga clic en un botn y devuelve un tipo String con el contenido del
cuadro de texto.
en un botn y devuelve un tipo Integer correspondiente al botn elegido por el
usuario.
La sintaxis es la siguiente:

InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context]))


Por ejemplo:

Que al ejecutarse muestra el siguiente mensaje:

}
Si nos fijamos en la variable vemos que vale Pepe

Pgina 111

Excel nivel III Captulo 8

Trabajando con Custom Form

Los parmetros son los siguientes.

Parte

Descripcin

prompt

Requerido. Expresin de cadena que se muestra como mensaje en el


cuadro de dilogo. La longitud mxima de prompt es de
aproximadamente 1024 caracteres, segn el ancho de los caracteres
utilizados. Si prompt consta de ms de una lnea, puede separarlos
utilizando un carcter de retorno de carro (Chr(13)), un carcter de
avance de lnea (Chr(10)) o una combinacin de los caracteres de
retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada
lnea y la siguiente.

title

Opcional. Expresin de cadena que se muestra en la barra de ttulo


del cuadro de dilogo. Si omite title, en la barra de ttulo se coloca el
nombre de la aplicacin.

default

Opcional. Expresin de cadena que se muestra en el cuadro de texto


como respuesta predeterminada cuando no se suministra una cadena.
Si omite default, se muestra el cuadro de texto vaco.

xpos

Opcional. Expresin numrica que especifica, en twips, la distancia


en sentido horizontal entre el borde izquierdo del cuadro de dilogo y
el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de
dilogo se centra horizontalmente.

ypos

Opcional. Expresin numrica que especifica, en twips, la distancia


en sentido vertical entre el borde superior del cuadro de dilogo y el
borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo
se coloca a aproximadamente un tercio de la altura de la pantalla,
desde el borde superior de la misma.

helpfile

Opcional. Expresin de cadena que identifica el archivo de Ayuda


que se utilizar para proporcionar ayuda interactiva para el cuadro de
dilogo. Si se especifica helpfile, tambin deber especificarse
context.

context

Opcional. Expresin numrica que es el nmero de contexto de


Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se
especifica context, tambin deber especificarse helpfile.

Si el usuario hace clic en Aceptar o presiona Entrar , la funcin InputBox


devuelve lo que haya en el cuadro de texto. Si el usuario hace clic en Cancelar,
la funcin devuelve una cadena de caracteres de longitud cero ("").

Pgina 112

Excel nivel III Captulo 8

Trabajando con Custom Form

Visualizacin de un box de dilogo personalizado.


Para crear un cuadro de dialogo personalizado vamos a crear un formulario
desde VBA.
Imaginemos que queremos automatizar un proceso de carga de entrevistas, y
que al abrir un libro determinado el usuario escriba sus datos y distintos Cuadros
de Dialogo lo vayan guiando por la entrevista.
Creamos tres hojas en un libro nuevo, una de presentacin otra de Clientes y
otra donde ponemos la entrevista.

En el evento open del libro escribimos el cdigo para saber quien es el que esta
entrando
Antes que nada ocultamos las barras para que el usuario no pueda modificar
cosas del men y se concentre en la tarea.
Al final ejecutamos el formulario FrmCliente para que carge los datos personales

Pgina 113

Excel nivel III Captulo 8

Trabajando con Custom Form

El formulario frmCliente lo creamos con los siguientes controles:


Dos etiquetas, dos cuadros de texto y un botn

Pgina 114

Excel nivel III Captulo 8

Trabajando con Custom Form

En el evento clic del botn de comando tenemos que agregar el cdigo para que
guarde el contenido de los cuadros de texto en la hoja cliente que creamos
anteriormente.
Es sencillo vamos a la hoja clientes.
Vamos a una celda de abajo donde no halla datos
Subimos hasta el primer dato
Bajamos una fila
Empezamos a pegar los datos
Llamamos al siguiente form.

Veamos la hoja de clientes si resulto

Ahora vamos al formulario frmEvaluador


Al entrar al formulario tiene que ir a buscar la primer pregunta.
En la etiqueta de arriba va a ir a parar la pregunta
Tenemos 5 posibles respuestas
Al aceptar el formulario deberia ir a buscar la siguiente pregunta

Pgina 115

Excel nivel III Captulo 8

Trabajando con Custom Form

Definimos algunas variables modulares para controlar los datos con la respuesta
correcta

Ahora en el evento activate del formulario escribimos el siguiente codigo

El procedimiento proDefineInterface es el que visualiza u oculta los botones de


opcin de las posibles respuestas de acuerdo con la cantidad de respuestas de
la pregunta actual.

Pgina 116

Excel nivel III Captulo 8

Trabajando con Custom Form

Al aceptar se posiciona en la siguiente pregunta hasta llegar al final.

Pgina 117

Excel nivel III Captulo 8

Trabajando con Custom Form

Nuevos formularios modales y no modales.


En Excel 2000 existen dos formas de abrir un formulario con la orden Show.
Modal o No Modal cuando usamos Modal obligamos al usuario a resolver el
formulario antes de poder hacer otra cosa. Cuando usamos no modal el usuario
puede cambiar el foco a otro objeto.
Como en la versin anterior de Excel no estaba esta opcin nos daria un error al
intentar exportarlo al 97.

Pgina 118

Excel nivel III Captulo 8

Trabajando con Custom Form

Ocultando un box de dilogo.


Cuando tenemos un formulario muy cargado de controles podemos querer cargar en
memoria el formulario para que no tarde tanto tiempo en mostrarse o bien porque no
queda estetica la carga paulatina de los controles.
Existen varios comandos en VBA que estan relacionados.
Show
Load
Unload
Hide
Con Load cargamos el formulario en memoria pero no es visible hasta que no ejecutamos
show.

Si usamos Show sin antes usar Load el formulario se carga y se muestra.

Si queremos ocultar el formulario pero mantenerlo en memoria usamos Hide.

Si queremos dejar de usar un formulario usamos Unload.Me o el nombre del formulario.

El comando me representa el formulario actual.

Pgina 119

You might also like