Sei sulla pagina 1di 86

NDICE

NDICE...............................................................................................................................................................1 INTRODUCCIN........................................................................................................................................... 2 1. MACRO........................................................................................................................................................3 1.1. CONCEPTO DE MACRO...................................................................................................................3 1.2. GRABACIN DE MACROS...............................................................................................................3 1.3. USO DE REFERENCIAS ABSOLUTAS.......................................................................................... 4 1.4. ADMINISTRAR LAS MACROS.........................................................................................................5 1.4.1. CUADRO DE DILOGO DE MACROS..................................................................................6 1.4.2. EJECUTAR UNA MACRO........................................................................................................7 1.4.3. ELIMINAR UNA MACRO..........................................................................................................7 1.4.4. UBICACIN Y OPCIONES.......................................................................................................8 1.5. EDITAR EL CDIGO DE LAS MACROS.....................................................................................14 1.5.1. INTRODUCCIN AL ENTORNO DE VISUAL BASIC PARA APLICACIONES (VBA) ..................................................................................................................................................................15 1.5.2. EL MODELO DE OBJETOS DE VBA: MTODOS Y PROPIEDADES....................... 19 1.5.3. LOS MDULOS, LOS PROCEDIMIENTOS Y LAS PALABRAS RESERVADAS.........27 1.5.4. CONCEPTOS DE PROGRAMACIN ESTRUCTURADA.................................................33 1.5.5. INSERCIN DE CDIGO EN UNA MACRO EXISTENTE..............................................66 2. FUNCIONES PERSONALIZADAS..................................................................................................69 2.1. CONCEPTO DE FUNCIN DEFINIDA POR EL USUARIO (FDU)......................................... 69 2.2. DISEO DE UNA FDU.........................................................................................................................70 2.2.1. NOMBRE Y ARGUMENTOS..................................................................................................70 2.2.2. FUNCIONES DISPONIBLES EN VBA..................................................................................70 2.3. USO DE UNA FDU........................................................................................................................... 72 2.3.1. FLEXIBILIDAD Y ADAPTACIN...........................................................................................72 2.4. DEPURACIN....................................................................................................................................76 BIBLIOGRAFIA............................................................................................................................................82

INTRODUCCIN
Este manual de Macros con Excel para Office XP tiene como propsito auxiliarlo a utilizar de una manera mas productiva y eficiente la Hoja de Calculo de Excel, que aunque en estricto sentido , no podemos considerar los procedimientos descritos en este manual como indispensables para la realizacin de sus procedimientos con la Hoja, stos si le permitirn optimizar el manejo de sus datos automatizando los procesos que intervienen en su desarrollo y ahorrarse tiempo y esfuerzo. Con el texto, encontrar una serie de ejercicios sencillos, los cuales son sumamente ilustrativos y convenientes para que usted se vaya ejercitando en el tema que le corresponda, facilitando as el proceso de enseanza aprendizaje dando un mayor dominio y comprensin de los temas expuestos. Hay algunas convenciones tipogrficas para estandarizar y facilitar la identificacin de algunos elementos a que se hace referencia, a continuacin se sealan cules son estas convenciones: Presentaci n Botn Seleccin Empleo Muestra

Cuando se mencione el empleo de botones, el Aceptar texto que lo identifica se presenta subrayado Cuando se requiera que se efecte una Archivo | determinada seleccin de la barra de comandos o en algn men, podr reconocerlo Abrir... por su presentacin en letra tipo Times New Roman en cursiva negrita. Las diferentes secciones que sean necesarias se separan una de otra con una pipe ( | ); en caso del ejemplo, este hace referencia a la accin de hacer clic sobre el men Archivo y a continuacin hacer otro segundo clic sobre la opcin Abrir... Esta misma convencin tipogrfica se emplea para indicar el nombre de los recuadros de opciones dentro de los cuadros de dilogo. Esta caracterstica se emplea para resaltar puntos o elementos importantes a los que hay que presentar atencin tales como nombres de cuadros de dilogo, identificacin de celdas, nombres de funcin, etc. Se utilizar para distinguir el Texto que deba introducirse en los cuadros de texto o en la hoja de clculo Se utilizar negrita y subrayado para indicar que debe oprimirse una tecla o combinacin de

Elemento s

Cuadro de dilogo de Macro


Mi_macr o Ctrl+A

Texto Teclas

teclas.

1. Macro
1.1. CONCEPTO DE MACRO
Una macro son un conjunto de instrucciones que sirven para automatizar procesos. Refirindonos a Excel, supongamos que realizamos frecuentemente la accin de seleccionar un rango para aplicarle negrita, cambio de fuente y centrado. En lugar de hacer estas acciones manualmente, se puede elaborar una macro e invocarla para que ejecute los tres procesos automticamente. As pues, una macro es una secuencia de instituciones que le indican a Excel qu acciones debe efectuar. Las instrucciones se escriben en el lenguaje de programacin Visual Basic para Aplicaciones (VBA).

1.2. GRABACIN DE MACROS


Hay a nuestra disposicin dos formas de de crear una macro: La primera es sumamente poderosa, pero de uso menos frecuente porque se deben tener conocimientos de el lenguaje de programacin Visual Basic para Aplicaciones para escribir paso a paso las instrucciones del proceso que deseamos automatizar. La segunda forma para crear macros es mas usual y fcil que la anterior y consiste en apoyarse en Excel especificndole que usted va a ejecutar una serie de pasos que desea incluir en la macro, y que debe recordar stos, para reproducirlos posteriormente cuando se le soliciten. Esta segunda forma tiene dos ventajas; no se requiere de ningn conocimiento adicional a Excel por parte del usuario. Es fcil y rpida de aprender para aquellas personas que no conozcan o programen con fluidez en Visual Basic para Aplicaciones. Incluso los expertos en (VBA) hacen uso frecuente de esta forma para as evitarse escribir mltiples secuencias de instrucciones, o para conocer algn aspecto del lenguaje que no conocen.

Para la segunda forma Excel tiene incorporada una herramienta denominada grabadora de macros que convierte automticamente las acciones efectuadas por el usuario en instrucciones del lenguaje de programacin Visual Basic para Aplicaciones, por tal motivo no es necesario tener conocimientos de programacin para crear macros. Es importante que antes de iniciar la grabacin de un macro se tengan perfectamente definidas las acciones a desarrollar. Una vez activada la grabadora de macros, todas las operaciones que se efecten sern grabadas.

Para poner en marcha la grabacin de una nueva macro utilice la opcin

Herramientas | Macros | Grabar nueva macro...


En el cuadro de dilogo que aparece, similar al de la figura 1 , introduciremos un ttulo o nombre para la macro, una combinacin de teclas para activarla y un comentario o descripcin. En realidad todos son parmetros opcionales pudiendo omitirse y dejar los valores que aparecen por defecto, aunque no es lo mas conveniente.

Figura 1. Inicio de la grabacin de una macro

1.3. USO DE REFERENCIAS ABSOLUTAS.


Excel dispone de dos mtodos de grabacin de macros: con referencias relativas y con referencias absolutas. El mtodo utilizado de referencias relativas se utiliza cuando se quiere que la macro pueda ser utilizada en cualquier rango o parte de la hoja de clculo. Cuando se ejecuta una macro Las macros grabadas con referencia absoluta operan invariablemente sobre las mismas celdas, independientemente de cul sea la celda activa o el rango seleccionado en el momento en que se ejecuta la macro.

Cuando estamos grabando la macro, ver aparecer una nueva barra de herramientas, en este caso conteniendo tan slo dos botones. El de la izquierda, segn puede verse en la figura 2 . detendr la grabacin, poniendo fin a la creacin de la macro. El de la derecha alternar entre el uso de referencias relativas modo por defecto, y referencias absolutas. Al pulsar dicho botn las referencias introducidas en la macro sern absolutas y , por tanto, al reproducirse siempre se ejecutarn sobre las mismas celdas.

Figura 2. Barra de herramientas de Detener Grabacin para macros

1.4. ADMINISTRAR LAS MACROS


Primero necesitamos crear la macro que pretendemos administrar. En el siguiente ejemplo se van a grabar una macro muy sencilla que cambia la fuente y el color de la celda seleccionada. 1. Abra un libro nuevo. En la celda A1, introduzca su nombre; en la B1 su apellido; en la C1, la ciudad donde vive; y en la D1, el nombre de su pas. Esto le proporciona algunos datos para trabajar con el ejemplo. 2. Seleccione la celda o rango a la que se va a dar formato, en nuestro ejemplo la celda A1.

3. Seleccione Herramientas | Macros | Grabar nueva macro... a continuacin se desplegar el cuadro de dilogo Grabar Macro, como se muestra en la
figura 3 .

Figura 3. El cuadro de dilogo Grabar macro permite dar un nombre a la macro que esta prximo a grabar.

1. En

el cuadro de texto Nombre de la macro introduzca Formato_de_celda ,observe que para separar las palabras se usaron guiones de subrayado, esto se debe a que Excel no permite que se utilicen espacios para nombrar macros, vea la figura 4 .

Figura 4. En el cuadro de texto Nombre de la macro es importante nombrar la macro sin espacios, para esto puede utilizar guiones de subrayado.

1. Active la opcin Mtodo abreviado e introduzca la

letra a en el cuadro de edicin que se ubica a la derecha de CTRL+. De esta manera, para ejecutar la macro slo requerir de oprimir la combinacin de tecla CTRL+a.

2. Ejecute un clic en Aceptar. 3. Excel presenta en la barra de estado el mensaje Grabando y coloca sobre
la pantalla el botn Detener Grabacin, ver figura 5 . A partir de este momento todas las acciones que se efecten sern registradas por la grabadora de macros.

Figura 5. Barra de herramientas de Detener grabacin, con su botn Detener grabacin

1. Seleccione Formato | Celdas y se desplegar el cuadro de dilogo Formato de Celdas. Seleccione la ficha Fuente.
2. Establezca a 16 puntos el tamao de la fuente y su color a rojo. Haga clic en Aceptar. 3. Haga clic en el botn Detener grabacin de la barra de herramientas. Con esto finaliza la sesin de grabacin de la macro. Despus de que haya grabado la macro podr ejecutarla: Seleccione el conjunto de celdas de A1 a D1, esto es, seleccionar el rango de celdas de A1:D1 y utilice el mtodo abreviado CTRL + a. y observe los resultados.
1.4.1. CUADRO DE DILOGO DE MACROS

Ha creado su primera macro en un libro de Excel. Lgicamente puede crear todas las que necesite. Las macros por defecto se almacenan en el libro que est abierto en ese momento, aunque es posible alojarlas en un libro nuevo o un libro de macros

personal, si es que son macros cuyo propsito pueda extenderse a otros documentos.

Las macros no solo pueden crearse y ejecutarse o reproducirse con los pasos que ya conocemos, sino tambin pueden eliminarse y modificarse. Todas estas operaciones, que podemos considerar de administracin, las efectuaremos desde el cuadro de dilogo que aparece en la figura 6 . Para abrirlo utilice la opcin Herramientas | Macro | Macros...

Figura 6. Cuadro de dilogo Macro para administrar las macros. Actualmente tan solo aparece en la lista una macro, la que hemos creado previamente.
1.4.2. EJECUTAR UNA MACRO

Para ejecutar la macro que hemos creado previamente solo tenemos que usar el botn de Ejecutar . Esta es otra forma de ejecutar la macro adems de la del mtodo abreviado que anteriormente aprendimos. Siga los siguientes pasos para ejemplificar su uso: 1. Seleccione el conjunto de celdas de A1 a D1, esto es, sombree el rango de celdas de A1:D1 y utilice el mtodo abreviado CTRL + a. y observe los resultados.

2.

Para abrir el cuadro de dilogo Macros utilice la opcin

Herramientas |

Macro | Macros... 3. Seleccione la macro Formato_de_celda de la lista Nombre de la Macro


4. De clic al botn Ejecutar
1.4.3. ELIMINAR UNA MACRO.

Para eliminar la macro que hemos creado previamente solo tenemos que usar el botn de Eliminar .Siga los siguientes pasos para ejemplificar su uso:

1. Para abrir el cuadro de dilogo Macros utilice la opcin Macro | Macros...


3. De clic al botn Eliminar

Herramientas |

2. Seleccione la macro Formato_de_celda de la lista Nombre de la Macro. Ya no podemos recuperar la macro, a menos que hayamos previamente guardado el libro de trabajo.

1.4.4. UBICACIN Y OPCIONES.

Cuando cre su primera macro, acept la ubicacin predeterminada. Como se haba mencionado hay tres posibles lugares para guardar una macro: Este libro Libro nuevo Libro de macros personal

CREACIN DE UN LIBRO DE MACROS PERSONAL


Cuando se elige la opcin Este libro la macro se guarda en el libro actual. Esto significa que la macro estar disponible solamente cuando ste abierto ste libro. Tambin se tiene la opcin de guardar su macro en un libro nuevo. Si selecciona sta opcin , el nuevo libro se crear automticamente. La opcin final es guardar la macro en el libro de macros personal. Un libro de macros personal es un libro especial oculto que se reserva slo para las macros. La primera vez que elige guardar una macro en este libro, se crea un archivo nuevo llamado PERSONAL.XLS. Despus de que el archivo ha sido creado, se abrir automticamente cuando inicie Excel. Debido a que el libro de macros personal est abierto en todo momento, cualquier macro que guarde ah siempre estar disponible. Esto significa que si crea una macro que sea lo bastante general para ser usada por mltiples libros, necesitar guardarla en el libro de macros personal Para guardar una macro en el libro de macros personal es bsicamente lo mismo que guardar una macro con la opcin Este libro. Solo tiene que realizar los siguientes pasos.

1. Seleccione opcin

Herramientas | Macro | Grabar nueva macro. .

Para

desplegar el cuadro de dilogo Grabar macro. 2. Introduzca TextoFormateado en el cuadro de texto Nombre de la macro, ver figura 7. 3. Seleccione Libro de Macros personal en la lista desplegable macro en. 4. Haga clic en Aceptar. Ahora esta en modo de grabacin. 5. Ahora seleccionaremos formatos de la barra de herramientas de formato para grabar algo en la macro. Haga clic en el botn Cursiva de la barra de herramientas. Guardar

6. Haga clic en el botn Subrayado de la barra de herramientas Formato. 7. Detenga la grabacin de la macro.

Figura 7. Grabacin de una macro en un libro de macros personal.

UTILIZANDO UNA MACRO DEL LIBRO DE MACROS PERSONAL


Ya que haya guardado la macro en el libro de macros personal, podr utilizarla con cualquier libro. Para ello, de los siguientes pasos: 1. Cierre todos los libros. De esta forma sabr que todas las macros que utilice se guardarn en el libro de macros personal. 2. Abra un libro nuevo. 3. En la celda A1, introduzca su nombre. 4. Seleccione la celda A1.

5. Seleccione Herramientas | Macro | Macros..... A continuacin se desplegar el cuadro de dilogo Macro y ver que la macro TextoFormateado se lista
como PERSONAL.XLS!TextoFormateado, ver figura 8 . 6. Seleccione la macro TextoFormateado y haga clic en Ejecutar. de la celda que seleccion ahora est en cursivas y subrayado. El texto

Figura 8. Cuadro de dilogo Macro presentando la macro TextoFormateado del libro de macros personal

EDITANDO UNA MACRO DEL LIBRO DE MACROS PERSONAL


Para la edicin de una macro que forma parte del libro de macros personal, se maneja de forma diferente a la edicin de una macro de otros libros. El libro de macros personal es un libro oculto y se debe mostrar antes de poder editar su contenido. Para mostrar el libro de macros personal y editar una de sus macros, siga los siguientes pasos:

1. Seleccione Ventana | Mostrar... y se desplegar el cuadro de dilogo que


se muestra en la figura 9 .

Figura 9. Cuadro de dilogo Mostrar


1. Seleccione PERSONAL.XLS y haga clic en Aceptar. El libro de macros personal se muestra y ahora es el libro activo. Vea la barra de ttulo de la ventana del libro actual. Dice Personal.

2. Seleccione Herramientas | Macro | Macros..... y se desplegar el cuadro de


dilogo correspondiente. 3. Seleccione TextoFormateado y haga clic en Modificar. Aparecer la ventana del Editor de Microsoft de Visual Basic, ver figura 10 . 4. Haga los cambios que desee a su macro y cierre la ventana del Editor de Microsoft Visual Basic

Figura 10. Ventana de Microsoft Visual Basic para Aplicaciones.

VISTA DE CDIGO GRABADO


Si observa el recuadro grande ubicado al lado derecho de la figura 10 , el texto que ah aparece es el cdigo de Visual Basic que fue generado por Excel con base en el procedimiento que usted le enseo y contiene las indicaciones ( comandos ) correspondientes a las acciones ejecutadas anteriormente y que a continuacin se reproduce:

Sub TextoFormateado() ' ' TextoFormateado Macro ' Macro grabada el 03/06/2002 por Oscar A. Glz. B ' ' Acceso directo: CTRL+t ' Selection.Font.Italic = True Selection.Font.Underline = xlUnderlineStyleSingle End Sub
Nota:
El cdigo generado en su computadora puede diferir del mostrado en este texto ya que no sera nada extrao que usted hubiese efectuado algunas de estas acciones en otro orden o llevado a cabo otras adicionales .

Como usted puede apreciar, si usted hubiese introducido todo ste cdigo por medio del teclado le habra tomado ms tiempo del que consumi en el proceso de la grabacin de la macro, adicionalmente al hecho de que hubiese tenido que saber programar en Visual Basic. Por el momento para el lector que desconozca este lenguaje, el cdigo anterior puede parecerle algo sumamente complejo, sin embargo cuando se discuta ste ver que es sumamente lgico y no tan difcil de comprender como aparenta ser en un principio.

COMO MODIFICAR EL CDIGO


Sucede a veces que las macros fallan cuando hay errores en stas. Cuando la serie de pasos grabados por el grabador de macros son pocos es conveniente borrarla y crearla de nuevo, pero a veces no es prctico cuando son muchos los pasos grabados y pocos los errores, entonces se hace necesario corregir el cdigo de Visual Basic, para ello entre al Editor de Visual Basic en la forma descrita anteriormente cuando trato de Editar el cdigo de las macros . Observe las lneas del cdigo de la macro que se reproducen a continuacin para proceder a analizarlas y comprenderlas.

1: 2: 3: 4: 5: 6: 7: 8:

Sub TextoFormateado() ' ' TextoFormateado Macro ' Macro grabada el 03/06/2002 por Oscar A. Glz. B ' ' Acceso directo: CTRL+t ' Selection.Font.Italic = True

9: 10:

Selection.Font.Underline = xlUnderlineStyleSingle End Sub

La lnea 1 el la identificacin de su macro y contiene el nombre que le asign a sta precedido por la palabra Sub, los renglones 2 al 7 que comienzan con un apstrofo ' son simplemente comentarios. A continuacin en la lnea 8 dice Selection.Font.Italic = True lo cual indica que el texto de la celda o rango que se encuentre previamente seleccionado ser formateado con letra tipo cursiva o itlica El texto de la lnea 9 , Selection.Font.Underline = xlUnderlineStyleSingle le indica que el texto de la celda o rango que se encuentre previamente seleccionado ser subrayado. El texto de la lnea 10, End Sub es un indicativo de que ese fragmento o subrutina de cdigo terminado. Como se puede apreciar, en algunos casos con un poco de conocimiento del idioma ingls y algo de atencin de su parte, es posible comprender el cdigo que se gener para la macro y tal vez hasta hacer algunos cambios a ste. Suponga ahora que se equivoc al momento de ejecutar las acciones para grabar e procedimiento y que deseaba que la letra fuera de tipo Times New Roman de tamao 16 de color verde, itlica y que no estuviera subrayada. Aqu puede optar por volver a generar la macro, sin embargo ya que ha comprendido que hacen algunas lneas de cdigo, puede proceder a modificarlas en lo posible haciendo lo siguiente: Modifique la lnea 9 el texto, Selection.Font.Underline = xlUnderlineStyleSingle que le indica que el texto de la celda o rango que se encuentre previamente seleccionado ser subrayado para que no lo subraye, ahora su cdigo deber decir: Selection.Font.Underline = xlUnderlineStyleNone Agregue las siguientes lneas despus de la lnea 9 y antes del fin de la subrutina Fin Sub : Selection.Font.Name = "Times New Roman" Selection.Font.Size = 16 Selection.Font.ColorIndex = 4

El cdigo resultante debe estar como se ve a continuacin: 1. 2. 3. 4. 5. 6. 7. 8. 9. Sub TextoFormateado() ' ' TextoFormateado Macro ' Macro grabada el 03/06/2002 por Oscar A. Glz. B ' ' Acceso directo: CTRL+t ' Selection.Font.Italic = True Selection.Font.Underline = xlUnderlineStyleNone

10.Selection.Font.Name = "Times New Roman" 11.Selection.Font.Size = 16 12.Selection.Font.ColorIndex = 4 13. End Sub El objetivo de la lnea 10 es utilizar la propiedad Name del objeto Font para establecer el tipo de letra Times New Roman . En la lnea 11 se utiliza la propiedad Size para establecer un tamao de letra de 16 . En la lnea 12 le asigna a la propiedad ColorIndex del objeto Font el color 4 que corresponde al Verde. Por el momento no se preocupe de no saber las propiedades del objeto Font, ya que con la ayuda del Editor de Visual Basic para Aplicaciones usted puede revisar las propiedades del objeto Font, adems de que es un tema que abordaremos ms adelante. Guarde la macro con el comando Archivo | Guardar PERSONAL.XLS para que las modificaciones hechas en el cdigo se registren en el libro de macros personal. Ahora pruebe su macro; Escriba su nombre en la celda A1 de un nuevo libro de trabajo de trabajo y de formato a la celda A1, utilizando el Acceso directo CTRL+t o ejecutndola como se vio previamente con el comando Herramientas | Macro | Macros..... A continuacin se desplegar el cuadro de dilogo Macro y ver que la macro TextoFormateado aparece en la lista. Seleccione la macro TextoFormateado y haga clic en Ejecutar. El texto de la celda que seleccion ahora est en cursivas, tipo Times New Roman de tamao 16 de color verde y sin subrayar.

LIMITACIONES DEL GRABADOR DE MACROS


Muchos de los procesos de Excel que usted necesita automatizar, pueden lograrse mediante la grabacin de sus acciones. Pero el grabador de macros tiene sus limitaciones. Entre las cosas que no puede realizar mediante el grabador de macros se encuentran: Pedir informacin a un usuario mientras se esta ejecutando la macro. Ejecutar diferentes acciones basadas en los datos proporcionados por el usuario o en el valor de las celdas Desplegar cuadros de dialogo de Excel, por ejemplo el cuadro de dilogo de Guardar como. Desplegar y emplear formularios personalizados.

Estas limitaciones son solo algunas de las razones por las que necesitar crear su propio cdigo de VBA.

1.5. EDITAR EL CDIGO DE LAS MACROS.


La edicin del cdigo de las macros se hace mediante el editor de Visual Basic el cual consta de una serie de elementos los cuales iremos viendo para que podemos utilizarlos. Al abrir este editor, pulsando Alt+F11 y suponiendo que estbamos en un libro nuevo, nos encontraremos con una ventana como la de la figura 11 . En ella distinguiremos, en la parte superior, el men de

opciones y una barra de herramientas. A la izquierda y en la parte superior tenemos la ventana de proyectos, y en la parte inferior la ventana de propiedades. El resto del espacio est libre y en l suelen
aparecer el editor de cdigo, el examinador de objetos y otras ventanas auxiliares.

Figura 11. El editor de Visual Basic para Aplicaciones.


1.5.1. INTRODUCCIN AL ENTORNO DE VISUAL BASIC PARA APLICACIONES (VBA)

Como cualquier lenguaje de programacin el Visual Basic para Aplicaciones tiene una herramienta de desarrollo integrada de mens, ventanas, barras de herramientas, editor, interprete, depurador, etc. y que usaremos para crear macros y funciones, mdulos, subrutinas , generalmente simples y asociadas a un determinado libro de trabajo de Excel. Entre los elementos ms sobresalientes de ste entorno se encuentran las barras de herramientas, la Ayuda en lnea y el Examinador de Objetos. La barra de herramientas Estndar, ver figura 12 , se encuentra divida en tipos de comandos.

Figura 12. Barra de herramientas Estndar. La primera seccin de botones, ver la figura 13, se relaciona con los libros; por medio de los botones puede regresar a Excel, agregar elementos al proyecto actual y guardar su trabajo.

Figura 13. Botones Ver Microsoft Excel, Insertar UserForm y Guardar de la barra de herramientas Estndar del Entorno de Visual Basic para Aplicaciones.

Ver Microsoft Excel. Alterna entre la aplicacin principal y el


documento de Visual Basic activo. Inserta una forma para usuario para crear un formulario por ejemplo.

Insertar UserForm.

Guardar. Guarda el documento principal, incluidos el proyecto y todos sus componentes: formularios y mdulos.

La siguiente seccin de botones, ver figura 14, se relaciona con las funciones de edicin. Estos botones se utilizan para copiar, cortar y pegar texto. En sta seccin tambin hay un botn para buscar texto. Figura 14. Botones Cortar, Copiar, Pegar y Buscar de la barra de herramientas Estndar del Entorno de Visual Basic para Aplicaciones.

Cortar.
Portapapeles.

Quita el control o texto seleccionado y lo coloca en el

Copiar.
Portapapeles.

Copia

el

control

texto

seleccionado

en

el

Pegar. Inserta el contenido del Portapapeles en la ubicacin actual del cursor. Buscar. Abre el cuadro de dilogo Buscar y busca el texto especificado en el cuadro Buscar.
tiene dos

La tercera seccin de la barra de herramientas, vea la figura 15, botones, Deshacer y Rehacer.

Figura 15. Botones Deshacer y Rehacer de la barra de herramientas Estndar del Entorno de Visual Basic para Aplicaciones.

Deshacer. Deshace la ltima accin de edicin. Rehacer. Restaura las ltimas acciones descartadas de edicin
de texto si no se han realizado otras acciones desde la ltima operacin de Deshacer.

Luego vienen los botones que tienen funciones de prueba y error, vea figura 16. Los primeros tres botones de esta seccin permiten ejecutar, interrumpir y restablecer la ejecucin de un procedimiento. El ltimo botn de esta seccin pone al formulario en modo de diseo. Figura 16. Botones Ejecutar Sub/UserForm, Interrumpir, Restablecer y Modo de diseo de la barra de herramientas Estndar del Entorno de Visual Basic para Aplicaciones.

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

La siguiente seccin , vea figura 17, de la barra de herramientas Estndar se emplea para ver las diferentes secciones del Editor de Visual Basic. Estos botones le permiten desplegar el Explorador de proyectos, la ventana Propiedades, el Examinador de objetos y el Cuadro de herramientas. Figura 17. Botones Explorador de proyectos, Ventana de Propiedades, Examinador de Objetos y Cuadro de herramientas de la barra de herramientas Estndar del Entorno de Visual Basic para Aplicaciones.

Abre el Explorador de proyectos que muestra una lista jerrquica de los proyectos abiertos actualmente y su contenido. Abre la ventana de Propiedades para que puedan verse las propiedades del control seleccionado.

Explorador de proyectos.

Ventana de Propiedades.

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.

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. Finalmente est el botn de Ayuda de Microsoft Visual Basic, vea figura 18 . Este botn funciona del mismo modo que el botn de Ayuda que ha visto a travs de las aplicaciones de Microsoft.

Cuadro de herramientas.

Figura 18. Botn Ayuda de Microsoft Visual Basic de la barra de herramientas Estndar del Entorno de Visual Basic para Aplicaciones.

Otra herramienta til del Ambiente de Visual Basic para Aplicaciones es la barra de herramientas de Edicin , ver figura 19. Los botones de sta barra afectan y aumentan el entorno de desarrollo de Visual Basic.

Figura 19. Barra de herramientas de Edicin. Los botones que se encuentran en la barra de herramientas de Edicin son:

Lista de propiedades y mtodos: Al hacer clic en ste botn se muestra una lista de propiedades y mtodos aplicables al objeto sobre el que se localiza el cursor. Lista de constantes:
que aplican al argumento actual. Despliega las constantes del sistema

Informacin rpida:
rpida que proporciona seleccionado.

Despliega el cuadro de informacin informacin de sintaxis del elemento

Informacin de parmetros: Muestra informacin sobre los


parmetros de la instruccin seleccionada.

Palabra completa: Termina de escribir la palabra que usted ha comenzado, una vez que cuenta con los caracteres suficientes para identificarla. Sangra derecha: Desplaza a la derecha el texto seleccionado. Sangra
seleccionado.

izquierda:

Desplaza

la

izquierda

el

texto

Alternar punto de interrupcin: Coloca un punto de interrupcin en la lnea de cdigo seleccionada. ( un punto de interrupcin es una de las operaciones que se pueden realizar para depurar el cdigo ) Bloque de comentarios: Convierte el texto seleccionado en
un comentario. Esto se emplea durante la fase de depuracin y prueba

del desarrollo de la aplicacin con objeto de saltarse segmentos de cdigo.

Bloque sin comentarios: Devuelve el texto seleccionado a


cdigo.

Alternar marcador: Crea un marcador de posicin en la lnea


actual. Un marcador de posicin es una seal que usted puede poner en una lnea de cdigo para una fcil referencia.

Marcador siguiente: Se desplaza al marcador siguiente. Marcador anterior: Se desplaza al marcador anterior. Borrar todos los marcadores: Borra todos los marcadores
del texto.
1.5.2. EL MODELO DE OBJETOS DE VBA: MTODOS Y PROPIEDADES

A la hora de trabajar con macros en excel, deben tenerse claros ciertos conceptos de lo que se llama programacin orientada a objetos (POO). No nos extenderemos demasiado sobre la POO, pero si definiremos a continuacin los conceptos de Objeto, Mtodos y Propiedades.

Objeto.
Cuando en el mundo real nos referimos a objeto significa que hablamos de algo ms o menos abstracto que puede ser cualquier cosa. Si decidimos concretar un poco ms podemos referirnos a objetos coche, objetos silla, objetos casa, etc. En POO, la generalizacin (o definicin) de un objeto se llama Clase, as la clase coche sera como la representante de todos los coches del mundo, mientras que un objeto coche seria un coche en concreto. De momento, no definiremos ni estudiaremos las clases sino que nos concentraremos en los objetos, pero tenga en cuenta pero que cualquier objeto est definido por una clase.

Figura 20. La clase coche y los objetos coche creados a partir de la clase.

Cuando decimos que la clase coche representa a todos los coches del mundo significa que define como es un coche, cualquier coche, ver figura 20. Dicho de otra forma y para aproximarnos a la definicin informtica, la clase coche define algo que tiene cuatro ruedas, un motor, un chasis,... entonces, cualquier objeto real de cuatro ruedas, un motor, un chasis,... es un objeto de la clase coche.

Mtodos.
La mayora de objetos tienen comportamientos o realizan acciones, por ejemplo, una accin evidente de un objeto coche es el de moverse o lo que es lo mismo, trasladarse de un punto inicial a un punto final. Cualquier proceso que implica una accin o pauta de comportamiento por parte de un objeto se define en su clase para que luego pueda manifestarse en cualquiera de sus objetos. As, en la clase coche se definiran en el mtodo mover todos los procesos necesarios para llevarlo a cabo (los procesos para desplazar de un punto inicial a un punto final), luego cada objeto de la clase coche simplemente tendra que invocar este mtodo para trasladarse de un punto inicial a un punto final, cualesquiera que fueran esos puntos.

Propiedades.
Cualquier objeto tiene caractersticas o propiedades como por ejemplo el color, la forma, peso, medidas, etc. Estas propiedades se definen en la clase y luego se particularizan en cada objeto. As, en la clase coche se podran definir las propiedades Color, Ancho y Largo , luego al definir un objeto concreto como coche ya se particularizaran estas propiedades a, por ejemplo, Color = Rojo, Ancho = 2 metros y Largo =3,5 metros. Repasemos a continuacin todos estos conceptos pero ahora desde el punto de vista de algunos de los objetos que nos encontraremos en Excel como WorkSheet (Objeto hoja de clculo) o Range (Objeto casilla o rango de casillas). Un objeto Range est definido por una clase donde se definen sus propiedades, recordemos que una propiedad es una caracterstica, modificable o no, de un objeto. Entre las propiedades de un objeto Range estn Value , que contiene el valor de la casilla , Column y Row que contienen respectivamente la fila y la columna de la casilla, Font que contiene la fuente de los caracteres que muestra la casilla, etc. Como objeto, tambin tiene mtodos, recordemos que los mtodos sirven llevar a cabo una accin sobre un objeto. Por ejemplo el mtodo Activate, hace activa una celda determinada, Clear, borra el contenido de una celda o rango de celdas, Copy, copia el contenido de la celda o rango de celdas en el portapapeles.

Conjuntos. Un conjunto es una coleccin de objetos del mismo tipo, para los que conozcan algn lenguaje de programacin es un array de objetos. Por ejemplo, dentro de un libro de trabajo puede existir ms de una hoja ( WorkSheet), todas las hojas de un libro de trabajo forman un conjunto, el conjunto WorkSheets. Cada elemento individual de un conjunto se referencia por un ndice, de esta forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarn por WorkSheets(1), WorkSheets(2) y WorkSheets(3).

Objetos de Objetos.
Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el coche, una de las propiedades del coche es el motor, y el motor es un objeto con propiedades como cubicaje, caballos, nmero de vlvulas, etc. y mtodos, como aumentar_revoluciones, coger_combustible, mover_pistones, etc. En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range tiene la propiedad Font que es tambin un objeto y Font tiene la propiedad Bold (negrita). Tenga esto muy presente ya que utilizaremos frecuentemente Propiedades de un objeto que sern tambin Objetos. Dicho de otra forma, hay propiedades que devuelven objetos, por ejemplo, la propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range. Programacin Orientada a Objetos o Programacin Basada en Objetos. Hay una sutil diferencia entre las definiciones del ttulo. Programacin Orientada a Objetos, significa que el programador trabaja con objetos fabricados por l mismo, es decir, el programador es quien implementa las clases para luego crear objetos a partir de ellas. Lo que haremos nosotros, por el momento, ser utilizar objetos ya definidos por la aplicacin Excel (WorkSheets, Range,...) sin implementar ni ninguno de nuevo, por lo que en nuestro caso es ms correcto hablar de programacin basada en objetos. Observe que esta es una de las grandes ventajas de la POO, utilizar objetos definidos por alguien sin tener que conocer nada sobre su implementacin, slo debemos conocer sus propiedades y mtodos y utilizarlos de forma correcta. Bueno, despus de esta extensa pero necesaria introduccin pasemos ya a hacer alguna cosa en Excel. No es necesario que se aprenda lo anterior al pie de la letra y tampoco es necesario que lo comprenda al cien por cien, slo tngalo presente para las definiciones que vienen a continuacin y ver como va asimilando los conceptos de Objeto, propiedades, mtodos, etc. El modelo de objetos de Excel. Ver el modelo de objetos de Excel es una de las primeras cosas que debe hacer al empezar a programar en Excel por medio de VBA. Excel tiene mas de 100 objetos en su modelo, pero no piense que hay que aprendrselos todos. El usuario promedio trabajar con 20 o menos objetos al programar. Para ver una lista de los objetos de Excel, haga lo siguiente: 1. Cierre todos los libros abiertos para que pueda tener un entorno despejado.

2. Abra un libro nuevo. 3. Oprima Alt+F11 para abrir el Editor de Visual Basic. 4. Oprima F1 para invocar a la Ayuda. 5. Introduzca la pregunta, Qu es un objeto? 6. Oprima Entrar. Haga doble clic en el tema Objetos de Microsoft Excel. Se desplegar el diagrama detallado del modelo de objetos, vea la figura 21 .

Figura 21. La ayuda en lnea le permite conocer el modelo de objetos de Excel. 7. Haga clic en la flecha derecha de Worksheets. sta expande el nivel del modelo de objetos, vea figura 22.

Figura 22. Como puede ver, un gran nmero de objetos estn contenidos dentro del objeto Worksheet.

Al observar este modelo, ver figura 22 , podr observar que el objeto Aplication est en la parte superior de la jerarqua porque ste contiene todos los otros objetos de Excel. El siguiente objeto que debe observar en la jerarqua es Workbook, el cual es equivalente a un libro de trabajo o archivo Excel. Una vez familiarizado con el entorno de Excel puede darse cuenta que dentro de un libro hay varias hojas de clculo y que las hojas de clculo, entre otros objetos, contienen rangos. No se sorprenda si ahora ya conoce cuatro de los cinco objetos ms utilizados en Excel en la programacin de VBA. Los cinco objetos ms empleados en Excel Aunque existen ms de 100 objetos en el modelo de objetos de Excel, casi siempre utilizar los cinco objetos siguientes: Aplication ( aplicacin ) Workbook ( libro de trabajo ) Worksheet ( hoja de clculo ) Range ( rango ) Chart ( grfico )

Jerarqua de objetos. Al observar el modelo de objetos se dar cuenta que tiene forma de un grfico por jerarquas. Application est en la parte superior de la jerarqua. Debajo del objeto Application encontrar, entre otros objetos a Workbook. De acuerdo con la terminologa del paradigma de la Programacin Orientada a Objetos , el objeto Workbook esta contenido dentro de Aplication. De la misma manera, el objeto Worksheet est contenido en el objeto Workbook, y as sucesivamente. Contencin significa que los objetos pueden estar dentro de otros objetos. Hacer referencia a los objetos en el cdigo. El concepto de contencin entra en accin cuando usted hace referencia a los objetos en el cdigo. Para calificar completamente al nombre del objeto en el cdigo debe atravesar por toda el camino o ruta de la jerarqua del modelo de objetos, as por ejemplo, para referirse al rango A1 en la Hoja1 del Libro1, debera emplear el siguiente cdigo: Application.Workbooks(Libro1).Worksheets(Hoja1).Range(A1) En realidad se puede omitir la referencia Application en la mayora de los casos ( una excepcin es Application.Inputbox ) Tambin puede hacer referencia al rango A1 por medio del siguiente cdigo: Workbooks(Libro1).Worksheets(Hoja1).Range(A1) No siempre tendr que utilizar el nombre completo del cdigo de un objeto en el cdigo. En algunos casos, como se ha activado una hoja de clculo en el cdigo, lo puede lograr con una referencia ms corta: Range(A1)

Conforme se vaya familiarizando en el uso de los objetos usted aprender que tanto tiene que calificar a los objetos. Para distinguir un objeto de otro objeto con el mismo nombre, es necesario que lo califique. Por ejemplo podra tener dos libros abiertos, cada uno con una hoja de clculo llamada Hoja1. En ste caso debera darles un nombre completo para evitar ambigedades. Application.Workbooks(Libro1).Worksheets(Hoja1).Range(A1) Application.Workbooks(Libro2).Worksheets(Hoja1).Range(A1) Para trabajar con los objetos en el cdigo Cuando se trabaje con objetos en el cdigo, se recomienda hacer algo como lo siguiente: Establecer las propiedades de un objeto. Obtener las propiedades de un objeto Ejecutar los mtodos de un objeto.

Como trabajar con las propiedades Para establecer las propiedades de un objeto, utilice la siguiente sintaxis: Objeto.Nombredelapropiedad = valor Donde: Objeto Nombredelapropiedad Valor es el nombre del objeto. es el nombre de la propiedad que se cambi. se refiere al valor que se le asign a la propiedad.

El nombre del objeto est separado de la propiedad por un punto. Por ejemplo, para establecer la propiedad Value del objeto Range, utilice el siguiente cdigo: Range(A1).Value = 100 Para obtener el valor de las propiedades del objeto es semejante a establecer la propiedad. La sintaxis bsica es: NombreVariable = Objeto.Nombredelapropiedad En esta sintaxis se lee el valor de la propiedad del objeto en una variable u otro contenedor, tal como otra propiedad. Si desea obtener la propiedad Value de un rango, utilice el siguiente cdigo: Dim sngValor As Single sngValor = Range(A1).Value Puede emplear el valor de la propiedad para muchas otras formas. Por ejemplo, puede desplegar dicho valor en un cuadro de mensaje por medio del siguiente cdigo: MsgBox El valor del rango es & Range.(A1).Value

Uso de los mtodos Para implementar los mtodos de un objeto se debe utilizar la siguiente sintaxis: Objeto.Mtodo Cuando ejecute el mtodo de un objeto, utilice un punto para separar el nombre del objeto del nombre del mtodo. Por ejemplo, para ejecutar el mtodo Open de un libro, puede usar el siguiente cdigo: Workbooks(Ejemplo de Macros de Excel).Open Los mtodos tienen argumentos que algunas veces son necesarios y otras, opcionales. Por ejemplo , el siguiente cdigo guarda un libro con el nombre de Seguridad Pblica: ThisWorkbook.SaveAs Filename:= Seguridad Pblica A los mtodos tambin se les conoce o se refieren a ellos como los procedimientos y funciones especficos del objeto. Esto explica el hecho de que algunos mtodos tengan argumentos. Incluso algunos mtodos pueden devolver un valor. Colecciones Una coleccin es un grupo de objetos similares. Workbooks es una coleccin. Worksheets es otra coleccin. Vea el siguiente ejemplo: Application.Workbooks(Libro1).Worksheets(Hoja1).Range(A1) El Libro1 es un elemento de la coleccin Workbooks. Observe que la mayora de las colecciones estn en plural. Tambin puede uno darse cuenta que no existe el objeto Ranges porque una de las cosas que puede hacer con una coleccin es agregarlo y no se pueden agregar ms rangos porque ya estn definidos y limitados por Excel. 1. Para ver algunas de las colecciones disponibles en Excel, siga estos pasos: 2. Restaure la ventana Ayuda de Microsoft Visual Basic 3. Seleccione la ficha Contenido 4. Haga clic en el libro Referencia de Visual Basic en Microsoft Excel para que despliegue sus temas. Bajo la pregunta Qu desea hacer? Escriba objetos de Microsoft Excel 5. En los temas encontrados seleccione Objetos de Microsoft Excel y, en el panel derecho, se desplegar el modelo de objetos de Microsoft Excel. 6. Desplcese a la parte inferior del tema Objetos de Microsoft Excel y ver que el modelo de objetos est codificado por colores. Los elementos en amarillo son objetos y colecciones. Los elementos en azul celeste solamente son objetos El diagrama del modelo de objetos es una herramienta til para entender e identificar las colecciones de Excel.

Mtodo Add Una caracterstica importante de las colecciones es la capacidad de aceptar lo que se les agregue, es decir, agregar es crear nuevos elementos en la coleccin. Para crear un elemento nuevo en una coleccin, utilice el mtodo Add. Por ejemplo, para agregar un libro nuevo, deber usar el siguiente cdigo: Workbooks.Add Este cdigo es equivalente a ir al men Archivo de Excel y agregar un libro nuevo. Para agregar una hoja de clculo nueva en un libro, debe emplear el siguiente cdigo: Worksheets.Add Propiedad Count Las colecciones soportan una propiedad muy til llamada Count. sta almacena el nmero de elementos en una coleccin. Si desea saber cuntas hojas de clculo hay en un libro, debe usar el siguiente cdigo: Dim CuentaLasHojas As Integer CuentaLasHojas = Worksheets.Count Usted podra utilizar sta propiedad cuando est creando una aplicacin que contiene una hoja de clculo para cada da de negocios de la semana hasta que el libro se complete. Si usa la propiedad Count, podra saber si el libro contiene siete hojas de clculo. En este caso podra emplear un cdigo similar a:

Sub CuentaLasHojas() Dim CuentaHojas As Integer Dim Aviso As String CuentaHojas = Worksheets.Count If CuentaHojas <> 7 Then Aviso = El libro tiene & CuentaHojas Aviso = Aviso & . Debe contener 7 hojas de clculo. MsgBox Aviso End If End Sub

1.5.3. LOS MDULOS, LOS PROCEDIMIENTOS Y LAS PALABRAS RESERVADAS

Mdulos
Un mdulo se define como una coleccin de procedimientos y declaraciones de VBA que se almacenan juntos como unidad. Existen dos tipos de mdulos; los mdulos estndar y los mdulos de clase. Los mdulos de clase de VBA le permiten construir sus propios objetos, ya que ellos contienen la definicin de un objeto. La mayor parte del trabajo que se realiza en las macros se lleva a cabo en un mdulo estndar ( o simplemente mdulo ). Cuando se graba una macro, automticamente se crear un mdulo, si es que no existe alguno, aunque si lo prefiere puede agregar mdulos adicionales. A Excel y VBA les tiene sin cuidado donde se ubique su procedimiento o procedimientos, en tanto se ubiquen dentro de un libro abierto.

Procedimientos
Un procedimiento Sub es una serie de instrucciones Visual Basic, encerradas entre un par de instrucciones Sub y End Sub, que realizan acciones especficas pero no devuelven ningn valor. Un procedimiento Sub puede aceptar argumentos, como constantes, variables o expresiones que le pasa el procedimiento que ha efectuado la llamada. Si un procedimiento Sub no tiene argumentos, la instruccin Sub debe incluir un par de parntesis vaco. El objetivo de utilizar procedimientos es la antigua frmula del divide y vencers, es decir, con los procedimientos podremos tratar cada problema o tarea de forma ms o menos aislada de forma que construiremos el programa paso a paso evitando tener que resolver o controlar mltiples cosas a la vez. Cada tarea la realizar un procedimiento, si esta tarea implica la ejecucin de otras tareas, cada una se implementar y solucionar en su correspondiente procedimiento de manera que cada uno haga una cosa concreta. As, los diferentes pasos que se deben ejecutar para que un programa haga algo, quedaran bien definidos cada uno en su correspondiente procedimiento, si el programa falla, fallar a partir de un procedimiento y de esta forma podremos localizar el error ms rpidamente. Los procedimientos son tambin un eficaz mecanismo para evitar la repeticin de cdigo en un mismo programa e incluso en diferentes programas. Suponemos que habr intuido que hay muchas tareas que se repiten en casi todos los programas, veremos como los procedimientos que ejecutan estas tareas se pueden incluir en un mdulo de forma que este sea exportable a otros programas y de esta manera ganar tiempo que, como dice el tpico, es precioso.

Definir un procedimiento
Ya lo hemos hecho unas cuantas veces, pero ah va de nuevo.

Sub Nombre_Procedimento()
Sentencias

End Sub Llamar a un procedimiento.


Para llamar un procedimiento desde otro se utiliza la instruccin Call Nombre_Procedimiento.

Sub ProcesoUno
Sentencias.

Call ProcesoDos
Sentencias

End Sub
Las secuencias del procedimiento ProcesoUno se ejecutan hasta llegar a la lnea Call ProcesoDos, entonces se salta al procedimiento ProcesoDos, se ejecutan todas las sentencias de este procedimiento y el programa continua ejecutndose en el procedimiento ProcesoUno a partir de la sentencia que sigue a Call ProcesoDos.

Pasos para crear un procedimiento


1. Abra un libro nuevo Seleccione Herramientas | Macro | Editor de Visual Basic. Se abrir la ventana del Editor. En la parte izquierda del Editor de Visual Basic, debe haber una ventana del Explorador de proyectos ,vea figura 23 . Haga clic con el botn derecho del ratn en ThisWorkbook. Seleccione Insertar | Mdulo y un mdulo se agregar a su aplicacin.

Ventana del explorador de proyectos

Figura 23. La ventana del explorador de proyectos lleva un registro de los elementos que componen su aplicacin

2. Seleccione Insertar | Procedimiento. Se desplegar el cuadro de dilogo Agregar procedimiento, como se muestra en la figura 24 .

Figura 24. Cuadro de dilogo Agregar procedimiento sirve para crear nuevos procedimientos Sub y Function.

3. Introduzca MiprimerProcedimiento como nombre del procedimiento. En el rea Tipo, asegrese de que est seleccionado el botn de opcin
Procedimiento. Haga clic en Aceptar. Se ha creado un procedimiento nuevo dentro del mdulo, como se muestra en la figura 25.

Figura 25. El procedimiento insertado empieza con la sentencia Public Sub y termina con la instruccin Sub.

4. El punto de insercin ( cursor ) debe estar en la lnea blanca que se encuentra en el procedimiento. Oprima la tecla Tab y teclee lo
siguiente: MsgBox Hola a todos, este es mi primer procedimiento de macros con VBA. Cuando teclee MsBox aparecer un cuadro de dilogo para darle informacin acerca de ste comando. Esta caracterstica se llama Informacin rpida automtica. 5. Oprima Entrar. El procedimiento terminado se muestra en la figura 26. Nota: VBA tiene reglas para la nomenclatura de procedimientos Sub y El primer carcter debe ser una letra. Los nombres pueden contener letras, nmeros y guiones bajos. Los nombres no pueden contener espacios, exclamacin () o los caracteres @, &, $, #. El nmero mximo de caracteres es de 255. puntos, signos de

Function. Estas reglas son:

Cmo ejecutar el mdulo de la macro desde el Editor de VBA.


Despus de crear su procedimiento puede ejecutarlo inmediatamente. Hay varias maneras para que pueda ejecutar un procedimiento. Puede utilizar el men Ejecutar o el botn de la barra de herramientas Ejecutar Sub/UserForm u oprimir F5. Realice los siguientes pasos para ejecutar su procedimiento. 1. Haga clic en el botn Ejecutar Sub/UserForm de la barra de herramientas Estndar. El procedimiento se ejecutar y un mensaje se desplegar, vea figura 27.

Figura 26. Este procedimiento solo tiene tres lneas de cdigo o sentencias de VBA.

Figura 27. La nica lnea de cdigo dentro del procedimiento sirvi para desplegar ste mensaje.

Palabras reservadas
Las palabras reservadas o palabras clave son un conjunto bastante amplio de palabras que estn reservadas para el lenguaje de programacin de VBA, esto es, una palabra o un smbolo reconocido como parte del lenguaje de programacin; por ejemplo, una instruccin, un nombre de funcin o un operador. Como stas palabras estn ya reservadas, el usuario no puede hacer uso de ellas para nombrar un procedimiento, funcin, variable, etc. La lista de stas palabras las podemos encontrar con la ayuda del Editor de Visual Basic , vea figura 28. Siga los siguientes pasos para encontrar el tema de palabras clave: 1. Abra un libro nuevo Se abrir la ventana del Editor.

2. Seleccione Herramientas | Macro | Editor de Visual Basic . 6. Seleccione Ayuda | Ayuda de Microsoft Visual Basic F1

3. Seleccione la ficha de Contenido. De doble clic al icono del libro Referencia del lenguaje Visual Basic. Aparece otro subconjunto de libros, entre ellos esta el de palabras clave. De doble clic sobre el icono del libro palabras clave.

Figura 28. Con la ayuda de contenido del Editor de Visual Basic para Aplicaciones podemos conocer la palabras clave o palabras reservadas del lenguaje VBA.

1.5.4. CONCEPTOS DE PROGRAMACIN ESTRUCTURADA

En esta seccin veremos algunos conceptos tiles de la programacin estructurada que nos conviene conocer para escribir con mayor eficiencia programas de macros de Visual Basic para Aplicaciones. La programacin estructurada es: Un conjunto de mtodos y tcnicas para disear y escribir programas utilizando el mtodo cientfico y no solamente el mtodo de ensayo y error. La programacin es una actividad mental compleja que se divide en varias etapas y cuya finalidad es comprender con claridad el problema que va a resolverse o simularse en la computadora, y entender con detalle cual ser el procedimiento mediante el cual la computadora obtendr la solucin esperada

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. Con Visual Basic para Aplicaciones es posible determinar el tipo de dato que puede contener una variable en particular. Para ello cuenta con una instruccin que reserva el espacio en memoria para la variable y adems, si as se desea , puede definir el tipo de dato que contendr. Esta instruccin es Dim, que permite reservar el espacio en memoria para una variable si cumple con la sintaxis:

Dim

nombre_variable

Posteriormente le asignamos un valor a dicha variable

Variable = Valor
El valor puede ser un texto (que debe ir entre comillas), un nmero, una frmula, etc. Por ejemplo: Nombre = "Escriba su nombre" Cuenta = 12 Inters = 10000 * 24 * 30 / 36500 La instruccin Dim, adems de reservar el lugar en memoria para la variable, permite identificar el tipo de dato que contendr. Adems sirve para validar el ingreso de dato por parte del usuario. La sintaxis es la siguiente: Dim nombre_variable As Tipo_de_dato

Tipo de dato
El tipo de dato que define a una variable es una palabra reservada e identifica el tamao que tendr la variable en la memoria, limitando adems el ingreso del dato por parte del usuario o del programa. La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamao de almacenamiento y el intervalo. Algunos tipos de variables pueden ser identificados utilizando signos al final del nombre de la variable. Esto significa que la instruccin Dim puede escribirse sin incluir As tipo - de - dato. Por ejemplo, puede declarar una variable entera utilizando cualquiera de las dos siguientes opciones:

Dim Stock As Integer Variables de Objetos.


Una variable objeto sir ve para hacer referencia a un objeto, esto significa que podremos acceder a las propiedades de un objeto e invocar a sus mtodos a travs de la variable en lugar de hacerlo directamente a travs del objeto. Posiblemente no se utilice demasiado esta clase de variables (esta claro que esto depender de las preferencias del programador), pero hay casos en los que no hay ms remedio que utilizarlas , por ejemplo en estructuras For Each ... Next como veremos, o cuando sea necesario construir funciones que devuelvan rangos, referencias a hojas, etc. Para declarar una variable objeto se utiliza tambin la palabra Dim de la forma siguiente;

Dim Var_Objeto As Objeto Por Ejemplo Dim R As Range Dim Hoja As WorkSheet

Tipos de datos en Visual Basic para Excel .


Visual Basic para Excel).

(Tabla copiada de la ayuda en lnea de

Tipo de datos
Byte Boolean Integer Long (entero largo) Single (coma flotante/ precisin simple) Double (coma flotante/ precisin doble)

Tamao de almacenamiento
1 byte 2 bytes 2 bytes 4 bytes 0 a 255 True o False

Intervalo

-32,768 a 32,767 -2,147,483,648 a 2,147,483,647

4 bytes

-3,402823E38 a 1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos -1.79769313486231E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos -922.337.203.685.477,5808 a 922.337.203.685.477,5807 +/-79.228.162.514.264.337.593.543.950.335 sin punto decimal; +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el nmero ms pequeo distinto de cero es +/-0,0000000000000000000000000001 1 de enero de 100 a 31 de diciembre de 9999 Cualquier referencia a tipo Object Desde 0 a 2.000 millones

8 bytes

Currency (entero a escala) Decimal

8 bytes

14 bytes

Date Object String (longitud variable) String (longitud fija) Variant (con nmeros) Variant (con caracteres) Definido por el usuario (utilizando Type)

8 bytes 4 bytes 10 bytes + longitud de la cadena Longitud de la cadena

Desde 1 a 65.400 aproximadamente

16 bytes

Cualquier valor numrico hasta el intervalo de un tipo Double El mismo intervalo que para un tipo String de longitud variable El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.

22 bytes + longitud de la cadena Nmero requerido por los elementos

Para asignar un objeto a una variable debe utilizar la instruccin Set.

Set Variable_Objeto = Objeto Por Ejemplo


Set R= ActiveSheet.Range("A1:B10") Set Hoja = ActiveSheet Set Hoja = WorkSheets(1)

Veamos a continuacin un ejemplo de cmo utilizar este tipo de variables, Ejemplo de utilizacin de variables:
Algo muy simple, llenar el rango de A1 a B10 con la palabra "Hola" y despus poner negrita, observe como se asigna una variable objeto al objeto y luego como se trabaja con esa variable de la misma forma que trabajara directamente sobre el objeto.

1: Sub obj() 2: Dim R As Range 3: Set R = ActiveSheet.Range("A10:B15") 4: R.Value = "Hola" 5: R.Font.Bold = True 6: End Sub
Operadores y expresiones Las expresiones son frmulas construidas con combinaciones de constantes, variables, operadores, operandos y nombres de funciones especiales. Cada expresin al evaluarse toma un valor que se determina tomando en cuenta los tipos de las variables y constantes implicadas adems de la ejecucin de las operaciones indicadas por los operadores

Prioridad de los operadores Cuando hay varias operaciones en una misma expresin, cada parte de la misma se evala y se resuelve en un orden predeterminado segn la prioridad de los operadores. Cuando hay expresiones que contienen operadores de ms de una categora, se resuelven antes las que tienen operadores aritmticos, a continuacin las que tienen operadores de comparacin y por ltimo las de operadores lgicos. Los operadores de comparacin tienen todos la misma prioridad; es decir, se evalan de izquierda a derecha, en el orden en que aparecen. Los operadores lgicos y aritmticos se evalan en el siguiente orden de prioridad:

Tabla de prioridad de operadores (Tomado de la ayuda del editor de Visual Basic )

Aritmticos Negacin () Multiplicacin y divisin (*, /) Divisin de enteros (\) Mdulo aritmtico (Mod) Adicin y substraccin (+, ) Concatenacin de cadenas (&)

Comparacin Not And Or Xor Eqv Imp Desigualdad (<>) Menor que (<) Mayor que (>) Menor o igual que (<=) Mayor o igual que (>=) Like Is

Lgicos

Exponenciacin (^) Igualdad (=)

Cuando hay multiplicacin y divisin en la misma expresin, cada operacin se evala a medida que aparece, de izquierda a derecha. Del mismo modo, cuando se presentan adiciones y substracciones en una misma expresin, cada operacin se evala tal como aparecen de izquierda a derecha. Es posible usar parntesis para saltar el orden de preferencia y forzar que algunas partes de una expresin se evalen antes que otras. Las operaciones entre parntesis se realizan antes que las de fuera. Sin embargo, dentro de los parntesis, la precedencia de los operadores se mantiene. El operador de concatenacin de cadenas ( &) no es realmente un operador aritmtico, pero en orden de prioridad se encuentra a continuacin de todos los operadores aritmticos y antes que todos los operadores de comparacin. Las tablas que aparecen a continuacin son un resumen de los operadores de Visual Basic, se presentan con ejemplos para que el lector pueda verificarlos y as conocer stos operadores:

Resumen de operadores de Visual Basic para Aplicaciones (operadores aritmticos)

Tipo de Operadores Operadores aritmticos Descripcin: Operador ^ (potencia)

Operadores Uso Ejemplos

Operadores utilizados para ejecutar clculos matemticos.

Se utiliza para elevar un Dim MiValor nmero a la potencia MiValor = 2 ^ 2 ' Devuelve 4. del exponente MiValor = 3 ^ 3 ^ 3 ' Devuelve 19683. MiValor = (-5) ^ 3 ' Devuelve -125. Se utiliza para Dim MiValor multiplicar dos nmeros MiValor = 2 * 2 ' Devuelve 4. MiValor = 459.35 * 334.90 ' Devuelve Se utiliza para dividir dos nmeros y obtener un resultado de signo flotante. Se utiliza para dividir dos nmeros y obtener un resultado entero. Divide dos nmeros y devuelve slo el resto. Dim MiValor MiValor = 10 / 4 MiValor = 10 / 3 3.333333. 153836.315.

* (multiplicaci n) / (divisin) \ Mod (Mdulo)

' Devuelve 2.5. ' Devuelve

Dim MiValor MiValor = 11 \ 4 ' Devuelve 2. MiValor = 9 \ 3 ' Devuelve 3. MiValor = 100 \ 3 ' Devuelve 33. Dim MiResultado MiResultado = 10 Mod 5 Devuelve 0. MiResultado = 10 Mod 3 Devuelve 1. MiResultado = 12 Mod 4.3 Devuelve 0. MiResultado = 12.6 Mod 5 Devuelve 3. ' ' ' '

+ (Suma)

Se utiliza para sumar dos nmeros

Dim MiNmero, Var1, Var2 MiNmero = 2 + 2 ' Devuelve 4. MiNmero = 4257.04 + 98112 ' Devuelve 102369.04. Var1 = "34": Var2 = 6 ' Inicializa variables mezcladas. MiNmero = Var1 + Var2 ' Devuelve 40. Var1 = "34": Var2 = "6" ' Inicializa las variables con cadenas. MiNmero = Var1 + Var2 ' Devuelve "346" ' (concatenacin de cadenas).

(Resta)

Se utiliza para hallar la diferencia entre dos nmeros o para indicar el valor negativo de una expresin numrica.

Dim MiResultado MiResultado = 4 - 2 ' Devuelve 2. MiResultado = 459.35 - 334.90 ' Devuelve 124.45.

Resumen de operadores de Visual Basic para Aplicaciones (operadores de comparacin)

Tipo de Operadores
Operador True si expresin1 < expresin2 expresin1 <= expresin2 expresin1 > expresin2 expresin1 >= expresin2 expresin1 = expresin2

Operadores
False si expresin1 >= expresin2 expresin1 > expresin2, expresin1 <= expresin2 expresin1 < expresin2 expresin1 <> expresin2 Null si expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null

Operadores de comparacin Descripcin:

< (Menor que) , <= (Menor o igual que) > (Mayor que) >= (Mayor o igual que) = (Igual a)

Operadores utilizados para efectuar comparaciones

Resumen de operadores de Visual Basic para Aplicaciones (operadores de concatenacin)

Tipo de Operadores Operado Operadores r de concatenaci & n Descripcin:


Operadores utilizados para combinar cadenas de caracteres

Operadores Uso
Se utiliza para forzar la concatenacin de las cadenas de dos expresiones

Ejemplos
Dim MyStr MyStr = "Hola" & " mundo" ' Devuelve "Hola mundo". MyStr = "Prueba " & 123 & " Prueba" ' Devuelve "Prueba 123 Prueba".

se utiliza el operador + para sumar nmeros. El operador + puede utilizarse tambin para concatenar cadenas de caracteres pero, para evitar ambigedades, es mejor utilizar para ello el operador &.

Dim MiNmero, Var1, Var2 MiNmero = 2 + 2 ' Devuelve 4. MiNmero = 4257.04 + 98112 ' Devuelve 102369.04. Var1 = "34": Var2 = 6 ' Inicializa variables mezcladas. MiNmero = Var1 + Var2 ' Devuelve 40. Var1 = "34": Var2 = "6" ' Inicializa las variables con cadenas. MiNmero = Var1 + Var2 ' Devuelve "346" ' (concatenacin de cadenas).

Resumen de operadores de Visual Basic para Aplicaciones (operadores lgicos)

Tipo de Operadore s Operadore s lgicos Descripcin :


Operadores usados para realizar operaciones lgicas

Operadores

Operad or And

Uso
Se utiliza para efectuar una conjuncin lgica de dos expresiones

Ejemplos
Dim A, B, C, D, MiPrueba A = 10: B = 8: C = 6: D = Null ' Inicializa las variables. MiPrueba = A > B And B > C ' Devuelve True. MiPrueba = B > A And B > C ' Devuelve False. MiPrueba = A > B And B > D ' Devuelve Null. MiPrueba = A And B ' Devuelve 8 (comparacin bit a bit). Dim A, B, C, D, MiPrueba A = 10: B = 8: C = 6: D = Null ' Inicializa variable. MiPrueba = A > B Eqv B > C ' Devuelve True. MiPrueba = B > A Eqv B > C ' Devuelve False. MiPrueba = A > B Eqv B > D ' Devuelve Null. MiPrueba = A Eqv B ' Devuelve -3 (comparacin bit por bit). Dim A, B, C, D, MiPrueba A = 10: B = 8: C = 6: D = Null ' Inicializa variables. MiPrueba = A > B Imp B > C ' Devuelve True. MiPrueba = A > B Imp C > B ' Devuelve False. MiPrueba = B > A Imp C > B ' Devuelve True. MiPrueba = B > A Imp C > D ' Devuelve True. MiPrueba = C > D Imp B > A ' Devuelve Null. MiPrueba = B Imp A ' Devuelve -1 (comparacin bit por bit). Dim A, B, C, D, MiPrueba A = 10: B = 8: C = 6: D = Null ' Inicializa variables. MiPrueba = Not(A > B) ' Devuelve False. MiPrueba = Not(B > A) ' Devuelve True. MiPrueba = Not(C > D) ' DevuelveNull MiPrueba = Not A ' Devuelve -11 (comparacin bit por bit) Dim A, B, C, D, MiPrueba A = 10: B = 8: C = 6: D = Null ' Inicializa variables. MiPrueba = A > B Or B > C ' Devuelve True. MiPrueba = B > A Or B > C ' Devuelve True. MiPrueba = A > B Or B > D ' Devuelve True. MiPrueba = B > D Or B > A ' Devuelve Null. MiPrueba = A Or B ' Devuelve 10 (comparacin bit por bit). Dim A, B, C, D, MiPrueba A = 10: B = 8: C = 6: D = Null ' Inicializa variables. MiPrueba = A > B Xor B > C ' Devuelve False. MiPrueba = B > A Xor B > C ' Devuelve True. MiPrueba = B > A Xor C > B ' Devuelve False. MiPrueba = B > D Xor A > B ' Devuelve Null. MiPrueba = A Xor B ' Devuelve 2 (comparacin bit a bit).

Eqv

Se utiliza para efectuar una equivalencia lgica de dos expresiones

Imp

Se utiliza para efectuar una implicacin lgica de dos expresiones.

Not

Se utiliza para ejecutar una negacin lgica sobre una expresin.

Or

Se utiliza para ejecutar una disyuncin lgica sobre dos expresiones.

Xor

Se utiliza para realizar una exclusin lgica entre dos expresiones.

La Funcin InputBox.
Esta funcin es muy utilizada para introducir datos y muestra un cuadro de dilogo para que el usuario pueda teclear datos. Cuando se pulsa sobre Aceptar, los datos introducidos pasan a la variable a la que se ha igualado la funcin. Vea la lnea siguiente. Texto = InputBox("Introduzca el texto", "Entrada de datos"). Si en el cuadro que muestra InputBox pulsa sobre el botn Aceptar, los datos tecleados se guardarn el la variable Texto.

Sintaxis de InputBox. InputBox(Mensaje, Ttulo, Valor por defecto, Posicin horizontal, Posicin
Vertical, Archivo ayuda, Nmero de contexto para la ayuda). Mensaje : Es el mensaje que se muestra el cuadro. Si desea poner ms de una lnea ponga Chr(13) para cada nueva lnea, vea el ejemplo siguiente. Ttulo : Es el ttulo para el cuadro de InputBox. Es un parmetro opcional. Valor por defecto: Es el valor que mostrar por defecto el cuadro donde el usuario entra el valor. Es un parmetro opcional. Posicin Horizontal: La posicin X de la pantalla donde se mostrar el cuadro, concretamente es la posicin para la parte izquierda. Si se omite el cuadro se presenta horizontalmente centrado a la pantalla. Posicin Vertical: La posicin Y de la pantalla donde se mostrar el cuadro, concretamente es la posicin para la parte superior. Si se omite el cuadro se presenta verticalmente centrado a la pantalla. Archivo Ayuda: Es el archivo que contiene la ayuda para el cuadro. Es un parmetro opcional. Nmero de contexto para la ayuda: Nmero asignado que corresponde al identificador del archivo de ayuda, sirve para localizar el texto que se debe mostrar. Si se especifica este parmetro, debe especificarse obligatoriamente el parmetro Archivo Ayuda.

Ejemplo 1 de la funcin InputBox Sub IntroduceValor() Dim Texto As String


Introduce dato")

' Chr(13) sirve para que el mensaje se muestre en dos Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1", ActiveSheet.Range("A1").Value = Texto

End Sub

Este ejemplo tambin se puede hacer sin variables.

Sub IntruduceValorbis() End Sub


ActiveSheet.Range("A1").Value = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1", "Introduce dato")

Ejemplo 2 de la funcin InputBox


Repetiremos el ejemplo 1 de InpuBox, pero en lugar de introducir los valores sobre la casilla A1, haremos que el usuario pueda elegir la celda que quiera para introducir los datos, esto es, se le preguntar al usuario mediante un segundo Inputbox sobre que en que celda quiere introducir el valor del primer Inputbox. Sern necesarias dos variables, una para guardar la referencia de la celda que escoja el usuario y otra para guardar el valor.

Option Explicit Sub IntroducirValorCelda() Dim Celda As String Dim Texto As String
Celda = InputBox("En que celda quiere introducir el valor", "De la referencia") Texto = InputBox("Dame un texto " & Chr(13) & "Para la celda " & Celda , "Introduce dato") ActiveSheet.Range(Celda).Value = Texto

End Sub

La sentencia Option Explicit.


En Visual Basic no es necesario declarar las variables, por ejemplo, en el programa anterior se hubiera podido escribir sin las lneas

Dim Celda As String Dim Texto As String


A pesar de ello, es recomendable que siempre declare las variables que va a utilizar, de esta forma sabr cuales utiliza el procedimiento y que tipo de datos guarda cada una, piense que a medida que vaya aprendiendo, crear procedimientos cada vez ms complicados y que requerirn el uso de ms variables, si no declara las variables al principio del procedimiento ocurrirn dos cosas; Primero, las variables no declaradas son asumidas como tipo

Variant (este es un tipo de datos que puede almacenar cualquier valor,


nmero, fechas, texto, etc. pero tenga en cuenta que ocupa 20 Bytes y para guardar una referencia a una casilla, por ejemplo el sexo de alguien, etc. no son necesarios tantos bytes); Segundo, reducir considerablemente la legibilidad de sus procedimientos ya que las variables las utilizar a medida que las necesite, esto, a la larga complicar la correccin o modificacin del procedimiento. La sentencia Option Explicit al principio del mdulo fuerza a que se declaren todas las variables. Si al ejecutar el programa, se encuentra alguna variable sin declarar se producir un error y no se podr ejecutar el programa hasta que se declare. Si todava no se ha convencido sobre la conveniencia de declarar las variables y utilizar Option Explicit, pruebe el procedimiento siguiente, cpielo tal cual (Dato y Dado estn puestos adrede simulando que nos hemos equivocado al teclear).

Sub IntroduceValorSinExplicit() Dato = InputBox("De un End Sub

dato " & Chr(13) & "Para la celda A1", "Entrada de datos") ActiveSheet.Range("A1").Value = Dado

Observe que el programa no hace lo que se pretenda que hiciera. Efectivamente, Dato y Dado son dos variables diferentes, como no se ha declarado ninguna y ni se ha utilizado Option Explicit Visual Basic no da ningn tipo de error y ejecuta el programa. Pruebe el siguiente procedimiento e intente ejecutarlo.

Option Explicit Sub IntroduceValorConExplicit() Dim Dato As String Dato = InputBox("Introducir un dato " & Chr(13) & "Para la casilla A1",
"Entrada de dato") ActiveSheet.Range("A1").Value = Dado

End Sub
Observe que el programa no se ejecuta, al poner Option Explicit, as forzamos a que se declaren todas las variables. Visual Basic detecta que la variable Dado no ha sido declarada y as lo indica mostrando Error, entonces es cuando es ms fcil darnos cuenta del error que hemos cometido al teclear y cambiamos Dado por Dato. Ahora imagine que el error se produce en un programa de cientos de lneas que necesita otras tantas variables.

La funcin MsgBox.
Esta funcin muestra un mensaje en un cuadro de dilogo hasta que el usuario pulse un botn. La funcin devuelve un dato tipo Integer en funcin del botn pulsado por el usuario. A la hora de invocar est funcin, s e permiten diferentes tipos de botones.

Sintxis de MsgBox. MsgBox( Mensaje, Botones, Ttulo, Archivo de ayuda, contexto)

Mensaje : Obligatorio, es el mensaje que se muestra dentro del cuadro de dilogo. Botones : Opcional. Es un nmero o una suma de nmeros o constantes (vea tabla Valores para botones e Iconos), que sirve para mostrar determinados botones e iconos dentro del cuadro de dilogo. Si se omite este argumento asume valor 0 que corresponde a un nico Botn OK. Ttulo : Opcional. Es el texto que se mostrar en la barra del ttulo del cuadro de dilogo. Archivo de Ayuda : Opcional. Si ha asignado un texto de ayuda al cuadro de dilogo, aqu debe especificar el nombre del archivo de ayuda donde est el texto. Context: Opcional. Es el nmero que sirve para identificar el texto al tema de ayuda correspondiente que estar contenido en el archivo especificado en el parmetro Archivo de Ayuda.

Ejemplos de MsgBox. Sub Tal()


.' El cuadro Muestra los botones Si y No y un icono en forma de interrogante. Cuando se pulsa ' un botn, el valor lo recoge la variable X. En este caso los valores devueltos pueden ser 6 o 7 ' que corresponden respectivamente a las constantes VbYes y VbNo, observe la instruccin If de 'despus. X = MsgBox("Desea Continuar", vbYesNo + vbQuestion, "Opcin",,) ' Se ha pulsado sobre botn Si If X = vbYes Then ..... Else ' Se ha pulsado sobre botn No .....

End If
.....

End Sub

Tabla para botones e iconos del cuadro MsgBox.


de Microsoft Excel).

(Tabla copiada de la yuda

Constante
vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel VbYesNo vbRetryCancel vbCritical vbQuestion vbExclamation vbInformation vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 vbApplicationModal vbSystemModal vbMsgBoxHelpButton VbMsgBoxSetForegrou nd vbMsgBoxRight vbMsgBoxRtlReading

Valor
0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 4096 16384 65536

Descripcin
Slo el botn Aceptar (predeterminado) Los botones Aceptar y Cancelar Los botones Anular, Reintentar e Ignorar Los botones S, No y Cancelar. Los botones S y No Los botones Reintentar y Cancelar Mensaje crtico Consulta de advertencia Mensaje de advertencia Mensaje de informacin El primer botn es el predeterminado (predeterminado) El segundo botn es el predeterminado El tercer botn es el predeterminado El cuarto botn es el predeterminado Cuadro de mensajes de aplicacin modal (predeterminado) Cuadro de mensajes modal del sistema Agrega el botn Ayuda al cuadro de mensaje Especifica la ventana del cuadro de mensaje como la ventana de primer plano El texto se alinea a la derecha Especifica que el texto debe aparecer para leer de derecha a izquierda en sistemas hebreos y rabes

524288 104857 6

Nota Estas constantes las especifica Visual Basic para

Aplicaciones. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del cdigo en vez de sus valores reales.

Los valores que puede devolver la funcin MsgBox en funcin del botn que pulse el usuario se muestran en la tabla siguiente.
Tabla de valores que puede devolver MsgBox. (Tabla copiada del archivo de ayuda de Microsoft
VBA)

Constant e
vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo

Valo r
1 2 3 4 5 6 7

Descripcin
Botn Aceptar presionado Botn Cancelar presionado Botn Anular presionado Botn Reintentar presionado Botn Ignorar presionado Botn S presionado Botn No presionado

Algunas veces puede que le interese simplemente desplegar un cuadro MsgBox para mostrar un mensaje al usuario sin que se requiera recoger ningn valor. En este caso puede optar por la forma siguiente:

MsgBox Prompt:="Hola Buttons:=VbOkOnLy _ Title:="Mensaje"

usuaria,

Ha

acabado

el

proceso",

Lo que no puede hacer porque Visual Basic dara error es poner la primera forma sin igualarla a ninguna variable. Por ejemplo, la expresin siguiente es incorrecta,

MsgBox ("Hola usuario, Ha acabado el proceso", VbOkOnly, "Mensaje")


Seria correcto poner X= MsgBox ("Hola usuario, Ha acabado el proceso", VbOkOnly, "Mensaje") En este caso, aunque X reciba un valor, luego no se utiliza para nada, es decir simplemente se pone para que Visual Basic d error.

Teorema De La Programacin Estructurada.


Conocido tambin como el teorema de Bhm y Jacopini que dice:

Un programa (macro de Excel en Visual Basic para Aplicaciones) puede ser escrito utilizando nicamente tres tipos de estructuras de control de secuencia:

Secuencial:

Secuencial Selectiva (simple, doble y multiple) Repetitiva (for, while, repeat)

Ejemplo1 de estructura secuencial

Public Sub ConozcoSuNombre() Dim suNombre As String Dim suMensaje As Variant End Sub

suNombre = InputBox("Introduzca su nombre: ") suMensaje = MsgBox("Hola " & suNombre)

Aqu podemos ver que se definen dos variables, una de tipo cadena o String y otra de tipo Variant. La funcin InputBox servir para introducir por teclado el valor de la variable suNombre de tipo String, y la funcin MsgBox desplegar el mensaje. Note que & es el operador de concatenacin.

Selectiva: Aqu tenemos tres casos; la selectiva simple, doble y mltiple. Selectiva Simple:

Cuando el programa llega a la instruccin Si Condicin Entonces , se evala la condicin, si esta se cumple (es cierta), se ejecutan todas las sentencias que estn encerradas en el bloque, si no se cumple la condicin, se saltan estas sentencias. Esta estructura en Visual Basic tiene la sintaxis siguiente

If condicin Then
Sentncia1 Sentncia2 ... SentnciaN

End If

Ejemplo 1 de condicional simple


Entrar una cantidad que representa el precio de algo por el teclado con la instruccin InputBox y guardarlo en la celda A1 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A1) es superior a 1000, pedir descuento con otro InputBox y guardarlo en la casilla A2 de la hoja activa. Calcular en A3, el precio de A1 menos el descuento de A2.

Sub SelectivaSimple()

' Poner las casillas donde se guardan los valores 0. ActiveSheet.Range("A1").Value = 0 ActiveSheet.Range("A2").Value = 0 ActiveSheet.Range("A3").Value = 0 ActiveSheet.Range("A1").Value = Val(InputBox("Entrar el precio", "Entrar")) ' Si el valor de la casilla A1 es mayor que 1000, entonces, pedir descuento If ActiveSheet.Range("A1").Value > 1000 Then ActiveSheet.Range("A2").Value = Val(InputBox("Entrar Descuento", "Entrar"))

End If End Sub

ActiveSheet.Range("A3").Value = ActiveSheet.Range("A1").Value - _ ActiveSheet.Range("A2").Value

Ejemplo 2 de condicional simple con variables Sub SelectivaSimpleConVariables() Dim Precio As Integer Dim Descuento As Integer

Precio = 0 Descuento = 0 Precio = Val(InputBox("Entrar el precio", "Entrar")) ' Si el valor de la variable precio es mayor que 1000, entonces, pedir descuento If Precio > 1000 Then Descuento = Val(InputBox("Entrar Descuento", "Entrar"))

End If

ActiveSheet.Range("A1").Value = Precio ActiveSheet.Range("A2").Value = Descuento ActiveSheet.Range("A3").Value = Precio - Descuento

End Sub

Selectiva Doble:

En Visual Basic la instruccin Si Condicin Entonces ... Sino ... Fin Si se expresa con las instrucciones siguientes.

If Condicin Then
Sentncia1 Sentncia2 ... SentnciaN Sentncia1 Sentncia2 ... SentenciaN

Else

End If

Ejemplo 1 de selectiva doble if ... Then ... Else ... End If.
Entrar una cantidad que representa el precio de algo por el teclado con la instruccin InputBox y guardarlo en la celda A10 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A10) es superior a 5000, se aplica un descuento del 15% sino se aplica un descuento del 8%, el descuento se guarda en la casilla A11 de la hoja activa. Colocar en A12, el total descuento y en A13 el total menos el descuento.

Sub Selectiva_Else() Dim Precio As Single Dim Descuento As Single

Precio = 0 Precio = Val(InputBox("Introduzca el precio", "Entrar")) ' Si el valor de la variable precio es mayor que 5000, entonces, aplicar descuento del 15% If Precio > 5000 Then Descuento = Precio * (15 / 100) ActiveSheet.Range("A11").Value =15% Else ' Sino Aplicar descuento del 5% Descuento = Precio * (8/ 100) ActiveSheet.Range("A11").Value = 8%

End If

ActiveSheet.Range("A10").Value = Precio ActiveSheet.Range("A12").Value = Descuento ActiveSheet.Range("A13").Value = Precio - Descuento

End Sub

Selectiva Mltiple:

En Visual Basic la instruccin Caso ... hacer se expresa con las instrucciones siguientes; . Select Case y tiene la sintaxis siguiente:

Select Case Expresin Case valores : Instrucciones. Case valores : Instrucciones. .... Case valores: Instrucciones. Case Else Instrucciones en caso que no sean ninguno de los valores anteriores. End Select

Ejemplo1 de Selectiva Mltiple Select...Case


Dado dos nmeros reales en las celdas A1 y B1, y un operador en la celda C1, haga una calculadora simple que calcule la operacin indicada en la celda C1 y ponga el resultado en la celda D1

Sub Seleccion_MultipleUno() Dim Operador As String Dim Valor1 As Single, Valor2 As Single, Total As Single Valor1 = ActiveSheet.Range("A1").Value Valor2 = ActiveSheet.Range("B1").Value Operador = ActiveSheet.Range("C1").Value Select Case Operador Case "+" Total = Valor1 + Valor2 Case "-" Total = Valor1 - Valor2 Case "*" Total = Valor1 * Valor2 Case "/" Total = Valor1 / Valor2 Case Else Total = 0 End Select ActiveSheet.Range("D1").Value = Total End Sub

Ejemplo 2 de Selectiva Mltiple Select...Case


Programa que pide tres examenes de un alumno mediante la funcin InputBox. Los examenes van a parar respectivamente a las casillas E1, E2 y E3 de la hoja activa. El programa calcula la media y la deja en E4. Si el promedio est entre 0 y 2 deja en E5 el mensaje "Muy deficiente", si la nota es 3 deja en E5 el mensaje "Deficiente", si la nota es 4 deja "Insuficiente", si es 5 "Suficiente", si es 6 "Bien", si est entre 7 y 8 deja "Notable", si es mayor que 8 deja "Sobresaliente".

Sub Selectiva_multipleDos() Dim Examen1 As Integer, Examen2 As Integer, Examen3 As Integer Dim Promedio As Single Examen1 = Val(InputBox("De calificacin 1er. examen", "calificacin")) Examen2 = Val(InputBox("De calificacin 2do. examen", "calificacion")) Examen3 = Val(InputBox("De calificacin 3er. examen", "calificacion")) Promedio = (Examen1 + Examen2 + Examen3) / 3.0 ActiveSheet.Range("E1").Value = Examen1 ActiveSheet.Range("E2").Value = Examen2 ActiveSheet.Range("E3").Value = Examen3 ActiveSheet.Range("E4").Value = Promedio Select Case Promedio Case 0 To 2 ActiveSheet.Range("E5").Value = "Muy deficiente" Case 3 ActiveSheet.Range("E5").Value = "Deficiente" Case 4 ActiveSheet.Range("E5").Value = "Insuficiente" Case 5 ActiveSheet.Range("E5").Value = "Suficiente" Case 6 ActiveSheet.Range("E5").Value = "Bien" Case 7 To 8 ActiveSheet.Range("E5").Value = "Notable" Case >8 ActiveSheet.Range("E5").Value = "Sobresaliente" End Select End Sub

Repetitivas: Hay tres casos particulares, el ciclo while , el repeat y el for. Repetitiva (ciclo while):

Esta estructura repetitiva est controlada por una expresin lgica, la repeticin del bloque de sentencias depender de si se va cumpliendo la condicin de la expresin lgica. En Visual Basic la instruccin Mientras ... hacer se expresa con las instrucciones siguientes; . Do ... While y tiene la sintaxis siguiente:

Do While (se cumpla la condicin)


Sentencia1 Sentencia2 .... Sentencia N

Loop

Ejemplo 1 de la estructura repetitiva Do While


Para el ejemplo haremos una base de datos donde utilizaremos los campos siguientes; Nombre, Ciudad, Edad, Fecha. Ponga estos ttulos en el rango A1:D1 de la Hoja1 (En A1 ponga Nombre, en B1 ponga Ciudad, en C1 ponga Edad y en D1 Fecha), observe que los datos se empezarn a introducir a partir de la celda A2. Para introducir los registros en la base de datos, cada campo se introduce con InputBox. El programa va pidiendo datos mientras se intruduzca un valor en el InputBox correspondiente al nombre, es decir cuando al preguntar el nombre no se intruduzca ningn valor, terminar la ejecucin del bloque encerrado entre Do While...Loop. Observe la utilizacin de la propiedad Offset para colocar los datos en las celdas correspondientes.

Sub EjemploUnoDoWhile() Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim fecha As Date Activar hoja1 WorkSheets("Hoja1").Activate Activar celda A2 ActiveSheet.Range("A2").Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Mientras la variable Nombre sea diferente a cadena vaca Do While Nombre <> "" Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Entre la Edad : ", "Edad")) Fecha=Cdate(InputBox("Entra la Fecha : ", "Fecha")) Copiar los datos en las casillas correspondientes With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).Value = fecha End With Hacer activa la celda de la fila siguiente a la actual ActiveCell.Offset(1,0).Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Loop End Sub

Ejemplo 2 de la estructura repetitiva Do While


Antes que nada observe el ejemplo anterior, fjese en que siempre empezamos a llenar el rango de la hoja a partir de la celda A2, esto tiene una nefasta consecuencia, la segunda vez que ejecute la macro sobrescribir los datos de A2:D2 y si continua ejecutando sobrescribir los datos de los rangos siguientes. Una solucin seria observar cual es la casilla vaca siguiente y cambiar en la instruccin ActiveSheet.Range("A2").Activate , la referencia A2 por la que corresponde a la primera celda vaca de la columna A. El cdigo que le mostramos a continuacin har esto por nosotros, es decir recorrer una fila de celdas a partir de A1 hasta encontrar una vaca y dejar a esta como celda activa para que la entrada de datos comience a partir de ella.

Sub EjemploDosDoWhile() . Activar hoja1 WorkSheets("Hoja1").Activate Activar casilla A2 ActiveSheet.Range("A1").Activate Mientras la celda activa no est vaca Do While Not IsEmpty(ActiveCell) Hacer activa la celda situada una fila por debajo de la actual ActiveCell.Offset(1,0).Activate Loop End Sub

Ejemplo 3 de la estructura repetitiva Do While


Este programa es la aplicacin de los dos anteriores, esto es, habr un bucle Do While que buscar la primera ceda vaca de la base da datos y otro para pedir los valores de los campos hasta que se pulse Enter en Nombre.

Sub EjemploTresDoWhile() Dim Dim Dim Dim Nombre As String Ciudad As String Edad As Integer fecha As Date

WorkSheets("Hoja1").Activate ActiveSheet.Range("A1").Activate Buscar la primera celda vaca de la columna A y convertirla en activa Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1,0).Activate Loop Nombre = InputBox("Introduzca el Nombre (Return para Terminar) : ", "Nombre") Mientras la variable Nombre sea diferente a cadena vaca Do While Nombre <> "" Ciudad = InputBox("Introduzca la Ciudad : ", "Ciudad") Edad = Val(InputBox("Introduzca la Edad : ", "Edad")) Fecha=Cdate(InputBox("Introduzca la Fecha : ", "Fecha")) With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Loop End Sub

Repetitiva (ciclo repeat):

El funcionamiento de esta estructura repetitiva es similar a la anterior salvo que la condicin se evala al final, la inmediata consecuencia de esto es que las instrucciones del cuerpo del bucle se ejecutaran al menos una vez . En Visual Basic la instruccin Repetir .. hasta se expresa con las instrucciones siguientes; . Do ... Loop Until y tiene la sintaxis siguiente:

Do Sentencia1 Sentencia2 .... Sentencia N Loop Until ExpresinLogica

Ejemplo 1 de Estructura repetitiva Do Loop Until


Esta estructura es ms conveniente, al menos ms elegante, si vamos a introducir datos, por lo menos un registro se introducir y por lo tanto las instrucciones dentro del bucle se ejecutarn al menos una vez, al final del ciclo decidiremos si se repiten o no con la expresin lgica Mas_Datos = vbNo , si el usuario da clic al botn Si se repetir el ciclo si oprime el botn No el ciclo terminar.

Sub EjemploUnoDoLoopUntil() Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim fecha As Date WorkSheets("Hoja1").Activate ActiveSheet.Range("A1").Activate Buscar la primera celda vaca de la columna A y convertirla en activa Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1,0).Activate Loop Do Nombre = InputBox("Introduzca el Nombre (Return para Terminar) : ", "Nombre") Ciudad = InputBox("Introduzca la Ciudad : ", "Ciudad") Edad = Val(InputBox("Introduzca la Edad : ", "Edad")) Fecha=Cdate(InputBox("Introduzca la Fecha : ", "Fecha")) With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate
Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos")

Hasta que Mas_Datos sea igual a vbNo Loop Until Mas_Datos=vbNo End Sub

Ejemplo 1 de Estructura repetitiva Do Loop While


Es otra estructura que evala la condicin al final y es una variacin de la estructura Do Loop Until . Hay que tomar en cuenta que la interpretacin es distinta ya que el bucle se va repitiendo Mientras se cumple la condicin y no Hasta que no se cumpla la condicin. Cual de los dos utilizar, pues la que usted guste , la que entienda mejor o le guste ms.

Sub EjemploUnoDoLoopWhile() Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim fecha As Date WorkSheets("Hoja1").Activate ActiveSheet.Range("A1").Activate Buscar la primera celda vaca de la columna A y convertirla en activa Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1,0).Activate Loop Do Nombre = InputBox("Introduzca el Nombre (Return para Terminar) : ", "Nombre") Ciudad = InputBox("Introduzca la Ciudad : ", "Ciudad") Edad = Val(InputBox("Introduzca la Edad : ", "Edad")) Fecha=Cdate(InputBox("Introduzca la Fecha : ", "Fecha")) With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos") Mientras Mas_Datos = vbYes Loop While Mas_Datos = vbYes End Sub

Repetitiva (ciclo for):

Esta estructura sirve para repetir la ejecucin de una sentencia o bloque de sentencias, un nmero definido de veces. La estructura es la siguiente:

Para var =vi Hasta vf Paso incr Hacer


Sentencia 1 Sentencia 2 ... Sentencia N

FinPara

Var es una variable que la primera vez que se entra en el bucle se iguala a vi (valor inicial), las sentencias del bucle se ejecutan hasta que Var llega al vf (valor final) cada vez que se ejecutan el bloque de instrucciones se incrementa segn el valor de inca (incremento). En Visual Basic para Excel la estructura Para se implementa con la instruccin For ... Next y tiene la siguiente sintaxis;

For Varible = Valor_Inicial To Valor_Final Step Incremento


Sentencia 1 Sentencia 2 ... Sentencia N Next Variable Nota: Si el incremento es 1, no hace falta poner Step 1.

Ejemplo 1 de la estructura repetitiva For .. to .. Next Esta es una estructura muy utilizada, aqu veremos de ejemplo muy sencillo de un programa que usa esta estructura para repetir el sonido de campana un numero determinado de veces. Sub EjemploUnoFor() Dim iContador As Integer For iContdor = 1 To 5 Beep Next End Sub

Ejemplo 2 de la estructura repetitiva For .. to .. Next Calcula cuanto dinero tendr una persona despus de un nmero de aos determinado. En este ejemplo como en el anterior el incremento o step es de 1 . Sub EjemploDosFor() Dim iNumeroDeAos As Integer Dim cAhorros As Currency Dim iContador As Integer cAhorros = InputBox("Introduzca la cantidad que va a depositar en su cuenta:") iNumeroDeAos = InputBox("Introduzca el nmero de aos que quiere ahorrar su dinero: ") For iContador = 1 To iNumeroDeAos cAhorros = cAhorros * 1.1 Next MsgBox "En " & iNumeroDeAos & " aos tendr " & _ Format(cAhorros, "0.00") & " pesos." End Sub

Ejemplo 3 de estructura repetitiva For.. to ..Next con uso de Step Una operacin bastante habitual cuando se trabaja con Excel es el recorrido de rangos de celdas para llenarlas con valores, checar su contenido, etc. Las estructuras repetitivas son aplicadas para recorrer grupos de celdas o rangos. Vea como se utilizan las propiedades Cells

Propiedad Cells. Esta propiedad, sirve para referenciar una celda o un rango de celdas segn coordenadas de fila y columna. Llenar el rango de las casillas A1..A5 con valores pares consecutivos empezando por el 2. Sub EjemploTresFor()

Dim Fila As Integer Dim i As Integer Fila = 1 For i=2 To 10 Step 2 ActiveSheet.Cells(Fila,1).Value = i Fila = Fila+1 Next i End Sub

Ejemplo 4 de estructura repetitiva For.. to ..Next con uso de Step Llenar un rango de filas, empezando por una celda, que se debe especificar desde teclado, con una serie de 10 valores consecutivos comenzando por el 10 y decrementndose hasta llegar a el 1 con el uso de Step -1.

Sub EjemploCuatroFor() Dim CeldaInicial As String Dim i As Integer Dim Fila As Integer, Columna As Integer CeldaInicial = InputBox("Introducir la celda Inicial : ", "Casilla Inicial") ActiveSheet.Range(CeldaInicial).Activate Coger el valor de fila de la celda activa sobre la variable Fila Fila = ActiveCell.Row Coger el valor de columna de la celda activa sobre la variable Fila Columna = ActiveCell.Column For i = 10 To 1 Step -1 ActiveSheet.Cells(Fila, Columna).Value = i Fila = Fila + 1 Next i End Sub

Estructura For Each.


Este bucle se utiliza bsicamente para ejecutar un grupo de sentencias con los elementos de una coleccin o una matriz (pronto veremos los que es). Recuerde que una coleccin es un conjunto de objetos, hojas, rangos, etc. Vea el ejemplo siguiente que se utiliza para cambiar los nombres de las hojas de un libro de trabajo. Ejemplo 1 de la estructura repetitiva For Each. Programa que pregunta el nombre para cada hoja de un libro de trabajo, si no se pone nombre a la hoja, queda el que tiene. Sub Ejemplodeforeach() Dim Nuevo_Nombre As String Dim Hoja As WorkSheet Para cada hoja del conjunto WorkSheets For Each Hoja In WorkSheets Nuevo_Nombre=InputBox("Nombre de la Hoja : " & Hoja.Name,"Nombrar Hojas") If Nueva_Nombre <> "" Then Hoja.Name=Nuevo_nombre End if Next End Sub Nota:
Hoja va referenciando cada una de las hojas del conjunto WorkSheets a cada paso de bucle.

Ejemplo 2 de la estructura repetitiva For Each Entrar valores para las celdas del rango A1:B10 de la hoja Activa. Sub Ejemplodosdeforheach() Dim R As Range Para cada celda del rango A1:B10 de la hoja activa For Each R in ActiveSheet.Range("A1:B10") R.Value = InputBox("Entrar valor para la celda " & R.Address, "Entrada de valores") Next End Sub Nota: Observe que se ha declarado una variable tipo Range, este tipo de datos, como
puede imaginar y ha visto en el ejemplo sirve para guardar Rangos de una o ms casillas, estas variables pueden luego utilizar todas las propiedades y mtodos propios de los Objetos Range. Tenga en cuenta que la asignacin de las varaibles que sirven para guardar o referenciar objetos (Range, WorkSheet, etc.) deben inicializarse muchas veces a travs de la instruccin SET.

1.5.5. INSERCIN DE CDIGO EN UNA MACRO EXISTENTE.

La insercin de cdigo en una macro existente es una de las operaciones ms comunes que se pueden realizar con el Editor de Visual Basic ya que permite trabajar fcilmente si usted ya esta familiarizado con Microsoft Word puede utilizar las teclas de navegacin para ubicar texto de cdigo y copiar y pegar. Teclas de Navegacin Para ir a
Principio de lnea Fin de lnea Principio de mdulo Fin de mdulo Siguiente Palabra Palabra Anterior Procedimiento siguiente Procedimiento anterior

Oprima esta tecla


Inicio Fin Ctrl + Inicio Ctrl + Fin Ctrl + Flecha derecha Ctrl + Flecha izquierda Ctrl + Flecha hacia arriba

Ctrl + Flecha hacia abajo

Copiar cdigo de ejemplo de la ayuda A veces puede desear copiar un ejemplo til de la Ayuda de Visual Basic. Mientras que muchos ejemplos necesitan mucho cdigo para funcionar correctamente, algunos ejemplos son tiles para ver cmo se comporta un procedimiento particular en una tcnica de flujo de control. Copiar cdigo de ejemplo de la Ayuda a la aplicacin 1. Utilice Ayuda para mostrar el tema cuyo ejemplo desea utilizar. Por ejemplo la ayuda sobre el mtodo SaveAs del objeto WorkBook. 2. Seleccione la parte del cdigo que desea copiar oprimiendo el botn derecho del ratn , ver figura 29 . Tambin si lo prefiere puede Seleccionar todo el men contextual oprimiendo el botn derecho del ratn. 3. Elija Copiar del men contextual.

Figura 29. Muestra la seleccin del cdigo que se desea probar en la ventana de ayuda de Microsoft Visual Basic.

4. Alterne a la ventana Cdigo del Editor de Visual Basic y coloque el puntero del mouse donde desea insertar el cdigo. Se recomienda crear un nuevo procedimiento para alojar dicho cdigo con el comando Insertar | Procedimiento... , ver figura 30

Figura 30. Se recomienda crear un nuevo procedimiento para probar cdigo.

5. Ubique el punto de insercin dentro del procedimiento vaci recin creado y haga clic con el botn secundario del mouse de nuevo y elija Pegar para insertar el ejemplo de cdigo en la ventana Cdigo , ver figura 31.

Figura 31. Cdigo insertado dentro del procedimiento existente para ser probado. Nota: Tambin puede presionar CTRL+C para copiar un ejemplo seleccionado en la
ventana Ayuda. Presione CTRL+V para pegar el ejemplo en la ventana Cdigo.

2. FUNCIONES PERSONALIZADAS
2.1. CONCEPTO DE FUNCIN DEFINIDA POR EL USUARIO (FDU)
Funciones. Una funcin o funcin definida por el usuario es lo mismo que un procedimiento con la diferencia de que este devuelve un valor al procedimiento o funcin que lo llama. Vea el siguiente ejemplo, de una funcin que suma dos nmeros y devuelve el resultado. Ejemplo uno de Funcin Funcin que devuelve la suma de dos valores que se le pasan como parmetros. Observe las diferentes formas en como se llama la funcin. Sub EjemploUnoFuncion() Dim x As Integer Dim n1 As Integer, n2 As Integer x = Suma(5, 5) MsgBox "x=Suma(5,5): " & x n1 = Val(InputBox("De un nmero n1: ", "Entrada")) n2 = Val(InputBox("De otro nmero n2 : ", "Entrada")) x = Suma(n1, n2) MsgBox "x=Suma(n1,n2): " & x ActiveCell.Value = Suma(ActiveSheet.Range("A1").Value, ActiveSheet.Range("A2").Value) MsgBox "x=Suma(A1,A2): " & ActiveCell.Value x = Suma(5, 4) + Suma(n1, n2) MsgBox "x=Suma(5,3) + Suma(n1,n2): " & x End Sub

Function Suma(V1 As Integer, V2 As Integer) As Integer Dim Total As Integer Total = V1 + V2 Suma = Total End Function

2.2. DISEO DE UNA FDU


Las funciones en VBA no son oficialmente macros, aun cuando desde el punto de vista tcnico de la programacin no haya mucha diferencia entre ambas. Las funciones no aparecen en la lista del cuadro de seleccin de macros. A cambio, se pueden activar desde las hojas de clculo de Excel y ser utilizadas como alternativa a las funciones de Excel (la nica condicin es que estn contenidas en un mdulo general )
2.2.1. NOMBRE Y ARGUMENTOS

Observe la sintaxis de la cabecera de funcin del apartado anterior: Function Suma(V1 As Integer, V2 As Integer) As Integer

La estructura general seria:


Function Nombre_Funcion(par1 As Tipo, par2 As Tipo,..., parN As Tipo) As Tipo. La sintaxis es similar a la cabecera de un procedimiento, slo que una funcin tiene tipo, esto tiene su lgica, ya que una funcin devuelve un valor, ese valor ser de un tipo determinado. As, en nuestro ejemplo de Function Suma, esta funcin es de tipo Integer, o dicho de otra manera, la funcin ejecuta sus sentencias y devuelve un valor hacia el procedimiento o la funcin que la llam, el valor devuelto se establece igualando el nombre de la funcin a algo, Nombre_Funcin = .... En el ejemplo de Function Suma, Suma = Total Observe tambin la sintaxis de la llamada a la funcin, en el ejemplo hemos utilizado unas cuantas formas de llamarla, lo que debe tener siempre presente es que en cualquier expresin aritmtica o de clculo, se realizan un mnimo de dos operaciones, una de clculo y otra de asignacin. Por ejemplo, A= B+C . La computadora primero calcula el resultado de sumar B+C luego asigna ese resultado a la variable A. En cualquier llamada a una funcin, por ejemplo, X= suma(n1,n2) Primero se ejecutan todas las sentencias de la funcin Suma, luego se asigna el clculo de la funcin a la variable X. De otro vistazo a la funcin de ejemplo y vea lo que realiza cada sentencia en la que se llama a la funcin Suma.
2.2.2. FUNCIONES DISPONIBLES EN VBA

VBA ofrece al usuario funciones muy potentes. Efectivamente, VBA ofrece una gran cantidad de funciones integradas en las que, adems de las funciones matemticas que son las ms comunes, se incluyen tambin funciones para el procesamiento de cadenas de caracteres, funciones de conversin de tipos, funciones de fecha y una larga serie de funciones especiales. La siguiente tabla contiene las funciones de VBA ms importantes. Todas las funciones se activan con uno o varios argumentos y siempre devuelven un valor. Para informarse sobre las funciones disponibles, consultuelas en la Ayuda de Visual Basic.

Tabla de funciones utilizadas comnmente en Visual Basic para Aplicaciones Funcin Significado
Cos DateAdd Devuelve un tipo Double que especifica el coseno de un ngulo en radianes Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado. Devuelve un valor de tipo Variant (Long) que especifica el nmero de intervalos de tiempo entre dos fechas determinadas. Devuelve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada. Devuelve un tipo Double que especifica e (la base de los logaritmos naturales) elevado a una potencia. Devuelve la parte entera de un nmero. Devuelve un tipo Integer que indica el siguiente nmero de archivo disponible para su uso en la instruccin Open. Devuelve un valor de tipo Variant (Integer) que especifica un nmero entero entre 0 y 23, inclusive, que representa la hora del da. Devuelve un tipo Variant (Long) que especifica la posicin de la primera aparicin de una cadena en otra. Devuelve la parte entera de un nmero. Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado izquierdo de una cadena. Devuelve un tipo Long que contiene el nmero de caracteres en una cadena o el nmero de bytes necesarios para almacenar una variable. Devuelve un tipo Double que especifica el logaritmo natural de un nmero. Devuelve una cadena que indica el mes especificado. Devuelve un valor de tipo Variant (Date) que especifica la fecha y hora actuales de acuerdo con la configuracin de la fecha y la hora del sistema de su equipo. Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado derecho de una cadena Devuelve un tipo Single que contiene un nmero aleatorio. Devuelve un valor de tipo Variant (Integer) que especifica un nmero entero entre 0 y 59, inclusive, que representa un segundo. Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema. Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios a la izquierda (LTrim), sin espacios a la derecha ( RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim). Devuelve un valor de tipo Variant (Integer) que contiene un nmero entero que representa el da de la semana. Devuelve un valor de tipo Variant (Integer) que contiene un nmero entero que representa el ao.

DateDiff

DatePart

Exp

Fix FreeFile Hour Instr Int Left Len Log MonthName Now

Rigth

Rnd Second Time Trim

Weekday Year

2.3. USO DE UNA FDU


2.3.1. FLEXIBILIDAD Y ADAPTACIN

Activar funciones de Excel Uno de los puntos fuertes de Excel es que cuenta con un amplio repertorio de funciones que se pueden activar directamente realizando una entrada en una celda y que tienen, en parte, un comportamiento especial. Excel cuenta con ms de 100 funciones que no son funciones VBA, sino funciones integradas en Excel que se pueden activar independientemente de VBA. Esto significa que no se pueden activar sin ms desde un programa VBA. Para ello es necesario utilizar la propiedad WorkSheetFunction del objeto Aplication, la cual devuelve un objeto WorkSheetFunction. La particularidad de este objeto es que contiene todas las funciones activables de Excel en forma de mtodo. El ejemplo siguiente , ver figura 32 muestra como, a travs de la funcin Average, se puede calcular la media de una serie de celdas agrupadas todas en un objeto Range: 'Para ejecutar esta macro debe tener la Hoja3 activa Sub ValorMedio() Dim rngArea As Range Dim sngValorMedio As Single Set rngArea = ActiveSheet.Range("A2:C2") sngValorMedio = Application.WorksheetFunction.Average(rngArea) MsgBox Prompt:="El valor medio es: " & sngValorMedio End Sub

Figura 32. Macro con funcin activable Average. Muestra la flexibilidad que tiene VBA para invocar funciones de Excel con el Objeto Application.

Activar funciones VBA en Excel. La operacin inversa tambin desempea un papel importante en la flexibilidad que tienen las funciones en Excel. Activar directamente un procedimiento VBA en una celda de Excel. En este caso se debe tener en cuenta lo siguiente. 1. El procedimiento VBA debe estar definido como funcin a travs del comando Function, y ha de devolver un valor. Los procedimientos Sub quedan por lo tanto, excluidos 2. El procedimiento VBA debe estar contenido en un mdulo general (si forma parte de un mdulo de hoja de clculo, no se puede activar). 3. El nombre del procedimiento se puede escribir directamente en la celda, o bien se puede seleccionar a travs del asistente de funciones, tal como se hace con las funciones integradas. 4. Los parmetros se trasmiten entre parntesis, igual que las funciones integradas de Excel. El ejemplo siguiente muestra cmo se puede activar una sencilla funcin VBA desde una celda de Excel. La funcin NumeroPrimitivo devuelve un nmero aleatorio dentro del intervalo 1 a 49. Public Function NumeroPrimitiva() As Integer Dim intNumeroPrimitiva As Integer Randomize Timer intNumeroPrimitiva = Int(Rnd * 49) + 1 NumeroPrimitiva = intNumeroPrimitiva End Function Los pasos para activar la funcin son: 1. Inicie Excel y cree un nuevo libro de trabajo en blanco. 2. Vaya con Alt + F11 al editor de VBA

7. En el Explorador de proyectos seleccione VBAproject (libro1) y de clic con el botn derecho del ratn. Seleccione la opcin Insertar | Mdulo. ,
ver figura 33 . Si usted lo prefiere tambin pudo haber seleccionado el comando Insertar | Mdulo de la barra de mens del editor de Visual Basic.

8. Seleccione Insertar | Procedimiento.

En el cuadro de texto Nombre del Cuadro de dilogo Agregar procedimiento escriba el nombre de la funcin. En Tipo, el botn de opcin Funcin debe estar seleccionado ,vea figura 34. De clic en Aceptar, se agrega una funcin vaca, esto es, sin sentencias:

Public Function NumeroPrimitiva() End Function 3. Agregue al cuerpo de la funcin las sentencias para que quede as: Public Function NumeroPrimitiva() As Integer Dim intNumeroPrimitiva As Integer Randomize Timer intNumeroPrimitiva = Int(Rnd * 49) + 1 NumeroPrimitiva = intNumeroPrimitiva End Function

4. Vuelva a Excel e inserte con el comando Insertar | Funcin la funcin


NumeroPrimitiva() en la celda que guste , vea figura 35.

Figura 33. Insertar un mdulo general al proyecto para crear la funcin VBA.

Figura 34. Insertar un procedimiento de tipo funcin con el nombre NumeroPrimitiva

Figura 35. El asistente de funciones de Excel reconoce la nueva funcin NumeroPrimitiva definida por el usuario. Ahora supongamos que usted quiere que la funcin sea ms flexible, esto es, que en lugar de que nos devuelva un nmero aleatorio del 1 al 49 como ya estaba establecido anteriormente. Digamos que usted quiere que le permita un nmero aleatorio que este comprendido en un rango mayor o menor. Esto lo podemos resolver modificando la funcin NumeroPrimitiva con el editor de Visual Basic. Siga los siguientes pasos para la realizacin: 1. Abra el editor de VBA y ubique la funcin NumeroPrimitiva. 2. Modifique la funcin de la siguiente manera: Function NmeroPrimitiva(limite As Integer) As Integer Dim intNmeroPrimitiva As Integer Randomize Timer intNmeroPrimitiva = Int(Rnd * limite) + 1 NmeroPrimitiva = intNmeroPrimitiva End Function 1. Como puede observar hemos agregado el parmetro limite para conseguir que sea ms flexible la funcin definida por el usuario.

2. Vuelva a Excel e inserte con el comando Insertar | Funcin la funcin


NumeroPrimitiva(limite) en la celda que guste. , vea figura 36. Observe que ahora ya nos pide el valor del argumento, de un nmero entero como el 1000 para probar la funcin.

Figura 36. La funcin definida por el usuario (FDU) se ha vuelto ms flexible porque ahora nos pide un argumento en el asistente de insertar funcin.

2.4. DEPURACIN
A medida que los programas van creciendo la probabilidad de cometer errores tambin va creciendo. Los errores se clasifican normalmente en tres categoras. Errores en tiempo de compilacin. Son los tpicos errores que impiden hacer funcionar el programa debido, por ejemplo, a errores de sintaxis en las instrucciones, llamadas a funciones que no existen o llamadas con el tipo o el nmero de parmetros incorrectos, etc. Este tipo de errores no dan demasiados problemas, primero porque el compilador avisa de donde se han producido y luego porque simplemente revisando la sintaxis se solucionan rpidamente. Errores en tiempo de ejecucin . Estos errores se producen por una mala programacin del cdigo al no haber previsto determinados casos concretos o especiales, como por ejemplo intentar abrir un archivo que no existe, imprimir sin comprobar que la iimpresora est conectada, definir mal la dimensin de un array e intentar acceder a miembros que no existen, etc. Cuando se produce este tipo de errores se detiene la ejecucin del programa y normalmente se informa del tipo de error que se ha producido. Muchos de estos errores se pueden solucionar mediante rutinas o funciones de tratamiento de errores, estudiaremos este tipo de rutinas un poco ms adelante. Errores de funcin. Son los ms complicados de detectar ya que ni se detectan en la fase de ejecucin, ni provocan la detencin del programa, son debidos a la incorrecta programacin de algn proceso y como resultado se obtienen datos errneos. Errores de este tipo son clculos mal hechos, bucles infinitos, devolucin de valores incorrectos, etc. Como ni los detecta el compilador, ni provocan la interrupcin del programa deben revisarse a mano (prueba de escritorio), y claro, si el programa es extenso y trata muchos datos, su deteccin puede resultar dificultosa. Visual Basic, y todos los entornos de programacin incorporan herramientas para facilitar la deteccin de este tipo de errores, son las herramientas de depuracin. Antes de comenzar a describir como funcionan estas herramientas, le recomendamos, que modularice su programa utilizando procedimientos cortos que realicen trabajos concretos y

precisos, de esta forma conseguir, adems de que el programa quede ms elegante y en un futuro sea ms sencillo modificarlo, evitar el tener que revisar grandes bloques de cdigo para detectar errores de este tipo.

Herramientas de depuracin.
Como se acaba de indicar, estas herramientas son muy tiles a la hora de probar paso a paso el funcionamiento del programa y detectar los procesos que provocan un mal funcionamiento del mismo. Copie los datos siguientes en la primera hoja de un libro de trabajo, estos datos sern utilizados por las funciones que utilizaremos para explicar el funcionamiento de las herramientas de depuracin.

Copie el cdigo siguiente, es el que utilizaremos para estudiar y ver ejemplos sobre las herramientas de depuracin. La primera ( Sub Prueba) recorre los datos de las columnas hasta encontrar una vaca, esta funcin va llamando a Recorrer_Columna, sirve para recorrer las filas de una columna hasta encontrar una vaca, va sumando los valores que encuentra en las filas y va contando cuantas hay de llenas, al final llama a la funcin Clculos, esta funcin coloca en respectivas celdas, la suma de los valores de la columna, lla cantidad de celdas llenas que ha encontrado, y la media. Una vez haya copiado las funciones ejectelas para comprobar su correcto funcionamiento antes de proceder al estudio de las herramientas de depuracin. Sub Prueba() Worksheets(1).Range("B2").Activate ' Recorrer las casillas de una fila hasta que se encuentre una vaca Do While Not IsEmpty(ActiveCell) Call Recorrer_Columna ActiveCell.Offset(0, 1).Activate Loop End Sub

Private Sub Recorrer_Columna() Dim Suma_Columna As Long 'Suma de los valores de la columna Dim Mayor_Que_Cero As Integer ' Contar casillas con valores mayores que cero Dim Desp_Fila As Integer ' Incremento de Fila Suma_Columna = 0 Mayor_Que_Cero = 0 Desp_Fila = 0 ' Recorrer las filas de una columna hasta que se encuentre una vaca Do While Not IsEmpty(ActiveCell.Offset(Desp_Fila, 0)) If ActiveCell.Offset(Desp_Fila, 0).Value > 0 Then Suma_Columna = Suma_Columna + ActiveCell.Offset(Desp_Fila, o).Value Mayor_Que_Cero = Mayor_Que_Cero + 1 End If Desp_Fila = Desp_Fila + 1 Loop Call Calcular(Suma_Columna, Mayor_Que_Cero, Desp_Fila) End Sub Private Sub Calcular(Suma As Long, Q As Integer, F As Integer) ActiveCell.Offset(F + 2, 0).Value = Suma ActiveCell.Offset(F + 3, 0).Value = Q ActiveCell.Offset(F + 4, 0).Value = Suma / Q End Sub Active la barra de depuracin para ver los botones que se utilizarn en las secciones que se explican a continuacin ( Ver/ Barras de Herramientas/ Depuracin)., vea figura 37.

Figura 37. Barra de herramientas de depuracin de Visual Basic Modo Ejecucin paso a paso por instrucciones. El modo paso a paso permite la ejecucin del programa instruccin por instruccin, de esta forma es posible ver que el funcionamiento del programa es el correcto, es decir que la ejecucin de instrucciones sigue los pasos que se haban previsto. Para ejecutar un procedimiento paso a paso, slo debe ir pulsando sobre el botn , activar la opcin de men Depuracin /Paso a Paso por Instrucciones o ir pulsando la tecla F8, que seguramente es lo ms cmodo.

Ejemplo 1 de depuracin Paso a Paso por Instrucciones 1. Site el cursor dentro del procedimiento Prueba.

2. Vaya pulsando la tecla F8 y vea como se ejecuta una sola instruccin


por cada pulsacin. Puede ir alternando con la hoja de clculo para ver que es lo que ocurre cada vez que se ejecuta una instruccin. Cuando est ejecutando paso a paso puede utilizar los botones siguientes para llevar a cabo determinadas acciones.

Sirve para detener la ejecucin del programa. Sirve para ejecutar el resto del programa. Sirve para ejecutar todo un procedimiento. Cuando en la ejecucin de un procedimiento, se llega a una lnea que llama a otro procedimiento o funcin, pulsando este botn se puede provocar la ejecucin de todo el cdigo de esta funcin para luego continuar con el modo paso a paso. Ejemplo 2 de depuracin. 1. Site el cursor dentro del procedimiento Prueba. 2. Vaya ejecutando paso a paso hasta la lnea Call Recorrer_Columna

1. En este punto pulse el botn

, y observe como se ejecuta toda el procedimiento Recorrer_Columna para luego continuar con la ejecucin normal de Paso a Paso. Para activar esta opcin, tambin puede activar la opcin Depuracin/ Paso a paso por procedimientos , o bien pulsar la combinacin MAY+F8. Sirve para ejecutar todas las instrucciones del procedimiento activo y volver (o terminar).

Ejemplo 3 de depuracin. 1. Site el cursor dentro del procedimiento Prueba. 2. Vaya ejecutado paso a paso hasta la instruccin Mayor_Que_Cero = Mayor_Que_Cero + 1 Ya dentro del procedimiento Recorrer_Columna. Pulse sobre el botn y ver como se termina la ejecucin de este procedimiento y se vuelve al procedimiento Prueba para continuar con la ejecucin paso a paso. Para activar esta opcin, tambin puede la opcin Depuracin/ Paso a paso para salir , o bien pulsar la combinacin CONTROL+ MAY+ F8.

El modo Interrupcin. En programas largos resulta fastidioso tener que ejecutarlos paso a paso, sobretodo si sabemos que el error se produce en una parte avanzada del programa. El modo iinterrupcin, permite la ejecucin del programa hasta una instruccin determinada para que a partir de esta, ejecutar paso a paso y as poder detectar el error. Definir puntos de interrupcin. 1. Site el cursor sobre la instruccin en la cual debe detenerse el programa para continuar paso a paso.

2. Pulse sobre el botn . Tambin puede activar la opcin Depuracin/ Alternar punto de interrupcin, pulsar la tecla F9 o bien
hacer un clic en la parte izquierda de la ventana del mdulo (la franja vertical en color gris). Para desactivar un punto de interrupcin siga los mismos pasos. Solucionar los errores. Todo lo dicho anteriormente no servira de gran cosa si no fuera posible revisar los valores que las variables van cogiendo a medida que vamos avanzando o si no tuviramos ocasin de evaluar las expresiones del programa. A continuacin veremos como llevar a cabo estas acciones. Inspecciones rpidas de variables. Estas opciones sirven para revisar el valor de las variables a medida que se va ejecutando el programa. Para ver los valores que van tomando las variables es conveniente tener visible la Ventana de inspeccin, para activarla Ver/ Ventana de Inspeccin o pulse sobre el botn. Aadir una variable a la ventana de inspeccin. Aunque no es necesario estar ejecutando el programa en modo paso a paso, es conveniente. 1. Seleccione la variable que desee aadir a la ventana haciendo un clic sobre ella.

2. Pulse sobre el botn , tambin puede activar Depuracin/ Inspeccin rpida o pulsar la combinacin MAY+F9. Aparece un
cuadro de dilogo donde se muestra el valor actual de la variable. Si no est ejecutando el programa paso a paso, aparecer el valor Fuera de Contexto.

3. Pulse sobre el botn Agregar para aadir la variable a la ventana de inspeccin. Debe tener en cuenta que para revisar las variables las expresiones que les asignan valores deben de ejecutarse al menos una vez.

Ejemplo 4 de depuracin. 1. Site un punto de interrupcin en la lnea. Mayor_Que_Cero = Mayor_Que_Cero + 1. 2. Ejecute el programa, cuando este se detenga en el punto de interrupcin, site el cursor sobre la variable Suma_Columna (puede ponerlo en cualquier parte). 3. Pulse sobre el botn . 4. Pulse sobre el botn Agregar para que la variable se inserte en la ventana Inspecciones. Repita los pasos anteriores para las variables Mayor_Que_Cero y Desp_Fila 5. Vaya ejecutando el programa paso a paso y observe como va cambiando el valor de las variables en la ventana de inspeccin. Recuerde que puede agregar una variable a la ventana de inspeccin aunque no est ejecutando el programa.

Nota: Suponemos que ya se habr dado cuenta que cuando ejecuta el


programa paso a paso, si sita el puntero de ratn sobre una variable, se muestra el valor de la misma.

Borrar una variable de la ventana de Inspeccin. Slo debe seleccionarla en la ventana de inspeccin y pulsar sobre la tecla SUPR. Modificar el valor de una variable en tiempo de ejecucin. A veces resulta interesante cambiar el valor de alguna variable cuando se est ejecutando el programa, para ver que ocurre si coge determinados valores, para terminar un bucle, etc. Ejemplo 5 de depuracin. 1. Site un punto de interrupcin en la lnea. Mayor_Que_Cero = Mayor_Que_Cero + 1 2. Agregue a la ventana de inspeccin (si no est) la variable Suma_Columna. 3. Ejecute el programa, al detenerse, observe en la Ventana de Inspeccin que la variable Suma_Columna tiene un valor que ahora cambiaremos. 4. Haga doble clic sobre el valor de Suma_Columna dentro de la ventana de inspeccin. 5. Borre el valor que tiene, cmbielo por otro y pulse ENTER. Ahora puede continuar con la ejecucin normal del programa.

BIBLIOGRAFIA
Mindi Martin/Steven M.Hasen/Beth Klinger La Biblia de Excel 2000 Ed Anaya Multimedia Mxico, 2000 Monadjemi Peter VBA con Office 2000 Boixareu Editores Alfaomega Marcombo Mxico, 2001 Podlin Sharon Programacin con Microsoft Excel 2000 en 24 hrs. Pearson Education Mxico, 2001 Snchez Claudio Tcnicas avanzadas con Microsoft Excel 2000 MP Ediciones S.A. / Manuales COMPUMAGAZINE Argentina, 2000 Wells Eric / Harshbarger Steve Microsoft Excel 97 Desarrollo de soluciones McGraw Hill Microsoft Press Espaa, 1998