Anda di halaman 1dari 35

Contenido

Ingresando al mundo Visual Basic ....................................................................................................................5 Lo que se puede hacer con VBA ...................................................................................................................5 Primer paso en Excel 2010 - Ver la barra del programador ............................................................6 Entender de Seguridad de macros .........................................................................................................6 Usando nuevos tipos de archivos en Excel 2010 ...............................................................................6 Novedades en Excel 2010 ....................................................................................................................................8 Nuevas capacidades para desarrolladores de Excel ..............................................................................8 Excel de 64 bits....................................................................................................................................................8 Estilos de Programar .........................................................................................................................................8 Sobre Comentarios ............................................................................................................................................9 Sobre Legibilidad ...............................................................................................................................................9 Sobre Modularidad ............................................................................................................................................9 Proyectos y su contenido ................................................................................................................................. 10 Revista General ................................................................................................................................................ 10 Objetos ........................................................................................................................................................... 10 Propiedades y metodos ........................................................................................................................... 10 Colecciones .................................................................................................................................................. 10 El objeto Libro Excel .................................................................................................................................. 10 Objeto Hojas Excel ..................................................................................................................................... 10 Modulos Estandar ...................................................................................................................................... 11 Modulos Clases ........................................................................................................................................... 11 Objetos Formularios .................................................................................................................................. 11 Las propiedades de la Ventana como objeto................................................................................... 11 Ambiente de Trabajo con VBA ................................................................................................................... 11 La ventana de Codigo ............................................................................................................................... 11 Objetos y procedimientos Lista de Cajas........................................................................................... 11 Entendiendo los componentes de VBE ................................................................................................... 12 Barra de herramientas .............................................................................................................................. 12 Ventana de Proyecto ventana ............................................................................................................... 13 Ventana de Codigo .................................................................................................................................... 13 Ventana Inmediata .................................................................................................................................... 13

Trabajando con Proyectos en VBE ....................................................................................................... 13 Agregando - Borrando - Importando y Exportando modulos ................................................... 14 Creando un Modulo .................................................................................................................................. 14 Formas en que puede ingresar Codigo .............................................................................................. 14 Variables, Tipos de datos y constantes ........................................................................................................ 15 Constantes ......................................................................................................................................................... 15 Enumeradores .................................................................................................................................................. 15 Variables y Tipos de Datos ........................................................................................................................... 16 Alcance de las variables ................................................................................................................................ 18 Variables Nivel de procedimiento Local) ........................................................................................... 18 Variables de Nivel Modulo ...................................................................................................................... 18 Instruccion Option Explicit...................................................................................................................... 19 Ciclo de vida de las variables.................................................................................................................. 19 Variables Static) ........................................................................................................................................... 20 Funciones y Subrutinas..................................................................................................................................... 21 Llamando a funciones ................................................................................................................................... 21 Llamando a Subrutinas ................................................................................................................................. 21 Parametros y Argumentos ........................................................................................................................... 22 Parametros ByRef versus ByVal ............................................................................................................. 22 Saliendo de un procedimiento .............................................................................................................. 23 Public y Private Procedimientos ........................................................................................................... 23 Declaraciones, Operadores y Funciones Integradas ............................................................................... 24 Declaraciones ................................................................................................................................................... 24 Operadores VBA de Excel ............................................................................................................................. 24 Operadores matematicos ........................................................................................................................ 24 Operadores de la cadena......................................................................................................................... 25 Operadores de comparacion VBA ........................................................................................................ 25 Operadores logicos de VBA .................................................................................................................... 26 Funciones integradas................................................................................................................................ 26 La Funcion MsgBox.................................................................................................................................... 29 La Funcion InputBox ................................................................................................................................. 32 Declaraciones de Control ............................................................................................................................. 33 La Declaracion If..Then ............................................................................................................................. 33 La Declaracion de Bucle FOR .................................................................................................................. 33

La declaracion Do Loop ........................................................................................................................... 34 La Declaracion Select Case...................................................................................................................... 35

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Ingresando al mundo Visual Basic


Excel terminologa de programacin puede ser un poco confusa. Por ejemplo, VBA es un lenguaje de programacin, pero tambin sirve como un lenguaje de macros. Cmo se llama algo escrito en VBA y ejecutado en Excel? Se trata de una macro, o es un programa? Sistema de Ayuda de Excel a menudo se refiere a los procedimientos de VBA como macros, as que uso esa terminologa. Pero tambin llamar esto un programa. Yo uso el trmino automatizar en todo el curso. Este trmino significa que una serie de pasos sern completados automticamente. Por ejemplo, si se escribe una macro que agrega color a algunas celdas, imprime la hoja de clculo y luego elimina el color, se han automatizado los tres pasos. Por cierto, macro viene de los griegos makros, lo que significa grande - que tambin describe su cheque de pago despus de convertirse en un programador experto macro.

Lo que se puede hacer con VBA


Usted es probablemente consciente de que la gente utiliza Excel para miles de diferentes tareas. stos son slo algunos ejemplos: Anlisis de los datos cientficos Presupuestos y pronsticos Creacin de facturas y otras formas Desarrollo de grficos a partir de datos Mantener listas de cosas tales como los nombres de los estudiantes, las calificaciones, los clientes o Ideas para regalos (un pastel de frutas bonito sera bonito) bla, bla, bla La lista podra seguir y seguir, pero creo que se entiende la idea. Mi punto es simplemente Excel que se utiliza para una gran variedad de cosas, y todos los que lean este libro tiene diferentes necesidades y expectativas con respecto a Excel. Una cosa prcticamente cada lector tiene en comn es la necesidad de automatizar algunos aspectos de Excel. Eso, querido lector, es lo que tiene que ver con VBA. Por ejemplo, podra crear un programa VBA para importar algunos nmeros, y luego formatear e imprimir su informe de ventas a fin de mes. Despus de desarrollar y probar el programa, puede ejecutar la macro con un solo comando.

~5~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Primer paso en Excel 2010 - Ver la barra del programador

1. Botn derecho sobre la cinta de Excel y elija personalizar la cinta de opciones 2. Sobre la columna de la derecha busque programadory tldelo

Entender de Seguridad de macros


Macro seguridad es una caracterstica clave en Excel. La razn es que VBA es un potente lenguaje - tan poderosa que incluso una macro simple puede causar graves daos a su equipo. Una macro puede borrar archivos, enviar informacin a otros equipos, e incluso destruir Windows de modo que ni siquiera se puede iniciar el sistema. Las caractersticas de seguridad de macros en Excel 2007 y Excel 2010 se crearon para ayudar a prevenir estos tipos de problemas. La Figura 2-6 muestra la seccin Configuracin de macros del cuadro de dilogo Centro de confianza. Para mostrar este cuadro de dilogo, elija Programado Seguridad macros . De forma predeterminada, Excel utiliza la opcin Deshabilitar todas las macros con notificacin seccin. Con esta configuracin en efecto, si abre un libro que contiene macros (y el archivo no est digitalmente "firmado" o almacenado en una ubicacin de confianza), Excel muestra un advertencia como el de la Figura 2-7. Si est seguro de que el libro viene a partir de una fuente de confianza, haga clic en Habilitar macros, las macros y se habilitar. Aparecer el cuadro de pop-up en la Figura 2-7 si el VBE est abierto. De lo contrario, Excel muestra una advertencia de seguridad llamativo encima de la barra de frmulas. Usted puede haga clic en el botn para habilitar las macros.

Usando nuevos tipos de archivos en Excel 2010

~6~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Excel 2010 ofrece soporte para cuatro tipos de archivos. Las Macros no estn autorizadas a ser almacenados en el tipo de archivo predeterminado. Usted tiene que usar la opcin Guardar como escenario de todos los libros de macro, o se puede cambiar el tipo de archivo predeterminado que utiliza Excel 2010. Los tipos de archivos disponibles son los siguientes: Libro de Excel (. Xlsx)-Los archivos se almacenan como una serie de objetos XML y luego comprimen en un nico archivo. Este nuevo paradigma de almacenamiento de archivos en Excel 2010 permite tamaos de archivo mucho ms pequeos. Tambin permite que otras aplicaciones (incluso el Bloc de notas!) Para editar o crear libros de Excel. Por desgracia, las macros no se pueden almacenar en archivos con una extensin. Xlsx. Excel Macro-Enabled Workbook (. Xlsm)-Esto es similar a los valores predeterminados. Xlsx, excepto que las macros estn permitidas. El concepto bsico es que si alguien tiene un archivo .Xlsx, l o ella no tendr que preocuparse acerca de las macros maliciosas. Sin embargo, si ven un archivo. Xlsm, deberan estar preocupados de que podra haber macros adjuntas. Libro de Excel binario (. Xlsb)-Este es un formato binario diseado para manejar valores mayores a 1,1 millones de filas de la cuadrcula de tamao en Excel 2010. Versiones anteriores de Excel almacena su archivos en un formato binario de propietario. Si bien los formatos binarios se cargan ms rpido, son ms propensos a la corrupcin, y unos pocos bits perdidos pueden destruir todo el archivo. Las macros estn permitidas en este formato. Libro de Excel 97-2003 (. Xls)-Este formato produce archivos que pueden ser ledos por cualquier persona que utilice versiones anteriores de Excel. Las macros se admiten como adjuntos en este formato binario, sin embargo, cuando se guarda en este formato, se pierde el acceso a las celdas fuera de A1: IV65536. Adems, si alguien abre el archivo en Excel 2003, l o ella perder el acceso a cualquier cosa que las caractersticas utilizadas introducidas en Excel 2007 o posterior.

~7~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Novedades en Excel 2010


Nuevas capacidades para desarrolladores de Excel
Si es desarrollador de Excel, puede aprovechar las caractersticas siguientes: Cambios en el SDK de XLL Ahora, el kit de desarrollo de software (SDK) de XLL admite llamadas a nuevas funciones de hoja de clculo, el desarrollo de funciones asincrnicas definidas por el usuario, el desarrollo de funciones definidas por el usuario seguras para clsteres que pueden descargarse en un clster de clculo y la creacin de complementos XLL de 64 bits. Mejoras en VBA para habilitar la migracin de macros XLM Excel 2010 incluye varias mejoras de VBA que habilitan la migracin de cualquier macro de Excel 4.0 a VBA. Las mejoras incluyen un mayor rendimiento para los mtodos relacionados con la impresin y las propiedades de grficos que antes no estaban disponibles con el cdigo VBA. Extensibilidad de interfaz de usuario mejorada Si desarrolla soluciones personalizadas, puede activar fichas en la cinta, que forma parte de la interfaz de usuario de Microsoft Office Fluent, mediante programacin. Por ejemplo, puede hacer que sus fichas personalizadas se comporten de manera similar a las fichas contextuales integradas, donde las fichas aparecen solo cuando se producen eventos especficos. Adems, puede aumentar o reducir los grupos de la cinta personalizados cuando se cambia el tamao de la cinta y personalizar mens contextuales con controles enriquecidos. Adems, puede agregar opciones de interfaz de usuario personalizadas y otros elementos a la nueva Vista Backstage. Cambios en el SDK de Open XML El SDK de Open XML 2.0 ahora admite objetos de nivel de esquema adems de la compatibilidad en el nivel de elemento incluida en el SDK de Open XML 1.0. Esto facilita la manipulacin de libros y otros documentos mediante programacin fuera de las aplicaciones de escritorio de Office 2010, por ejemplo como parte de una solucin basada en el servidor. Excel de 64 bits Excel 2010 est disponible en una versin de 64 bits, lo que significa que se pueden crear libros de mayor tamao y ms complejos. La ventaja de usar una versin de 64 bits es la capacidad de contar con una memoria fsica (RAM) que supera el lmite de 2 gigabytes (GB) de la versin de Excel de 32 bits.

Estilos de Programar
El caso del estilo de buena programacin constituye en este curso, subjetivo; tiene que ver con el hecho de tener un buen estilo de escritura. Probablemente el mejor camino para aprender a tener un buen estilo de programacin, es ver de frente mientras programamos. Realizamos en este caso los siguientes comentarios: Cuando en duda, favorece la legibilidad sobre la astucia o la elegancia Llene sus programas con muchos comentarios

~8~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Sobre Comentarios
El problema es este: Buenos programas son generalmente usados durante mucho tiempo y razonablemente por meses o aos. Inevitablemente, el programador querr retornar al cdigo para realizar cambios (tal vez agregando algun captulo) o corregir algn error. Y aqu es donde el programador puede perderse el cdigo escrito hace bastante tiempo. Entonces, los comentarios deben indicar al programador que realiza esa parte del cdigo y cules son los seteos o valores predeterminados que deberan tener las variables y constantes. El valor por defecto de x debe ser 5 x=5

Sobre Legibilidad
Legibilidad es un patrn subjetivo. Puede ser legible por una persona pero no por otra. La idea de legibilidad es permitir el seguimiento del cdigo sin grandes inconvenientes en todo el ciclo de ejecucin. Una de las sentencias que al ser utilizadas de manera continua el GOTO hace que un cdigo legible se rompa estructuralmente, pero suele ser til para salir de sentencias infinitas. GOTO lo que hace es redirigir porciones de cdigo en base a clusulas con etiquetas. Demasiadas instrucciones GoTo pueden ser difciles de leer y de depurar. Siempre que sea posible, utilice instrucciones de control estructuradas (Do...Loop, For...Next, If...Then...Else, Select Case). Las etiquetas se diferencian del resto por contener el ttulo y dos puntos ej. TryAgain:

Sobre Modularidad
Uno de los medios que mejor legibilidad propone es la programacin modular. Lo que genera la programacin modular es permitir agrupar lneas de cdigo en base a las acciones que genera.

~9~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Proyectos y su contenido
Revista General
Objetos
Los objetos de programacin se relacionan entre s sistemticamente en una jerarqua denominada modelo de objetos de la aplicacin. El modelo de objetos bsicamente refleja lo que se ve en la interfaz de usuario. Por ejemplo, el modelo de objetos de Excel contiene los objetos Application, Workbook, Sheet y Chart, entre muchos otros. El modelo de objetos constituye el mapa conceptual de la aplicacin y sus funcionalidades.

Propiedades y metodos
Es posible manipular objetos al establecer sus Propiedades y llamar a sus mtodos. Si se establece una propiedad, se producen algunos cambios en la calidad del objeto. Si se llama a un mtodo, se logra que el objeto realice una determinada accin. Por ejemplo, el objeto Workbook tiene un mtodo Close que cierra el libro y una propiedad ActiveSheet que representa la hoja activa del libro.

Colecciones
Varios objetos vienen en las versiones singular y plural; por ejemplo, libro y libros, hoja de clculo y hojas de clculo. Las versiones en plural se denominan colecciones. Los objetos de una coleccin se usan para realizar una accin en varios elementos de esa

coleccin.
Los niveles del proyecto tienen los siguientes nombres de nodo: Objetos Microsoft Excel Formularios Mdulos Clases

El objeto Libro Excel


Excel reconoce ms de 19 eventos relacionados con los libros de Excel. Ejemplos de esto: Evento Abrir, que ocurre cuando el libro es abierto Evento Antes de Cerrar, que ocurre cuando justo antes de cerrar el libro Evento Nueva Hoja que ocurre cuando agregamos una nueva hoja al libro Evento Antes de Imprimir, que ocurre justo antes de imprimir algo del libro.

Objeto Hojas Excel

~ 10 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Una hoja Excel es un espacio de trabajo o un hoja de grfico. Cada hoja representa un componente visible y que contiene una librera de cdigo de eventos. Nosotros podemos realizar acciones de manera independiente en cada librera, pero existen reglas para utilizarlos en mdulos estndar.

Modulos Estandar
Los mdulos son procedimientos (funciones y subrutinas). Estos procedimientos pueden ser macros diseados para correr por el usuario, o puede ser programas que soporten a otros programas.

Modulos Clases
Los mdulos clases son cdigos relacionados a objetos clientes. Como ver , se pueden construir muchos objetos como objetos libros, objetos de hojas, objetos grficos, objetos fuentes, y todos disponibles.

Objetos Formularios
Excel contiene una gran cantidad de excelentes cajas de dilogo. Adems con posibilidad de crear cajas de dilogos propios, llamados Formularios o Formularios de usuario. En adicin a estos formularios y controles, el objeto puede contener cdigo escrito para soportar a estos objetos.

Las propiedades de la Ventana como objeto


Las propiedades de la ventana solamente pueden ser ledos y no cambiados.

Ambiente de Trabajo con VBA


La ventana de Codigo
Generalmente, un mdulo de cdigo (estndar, clase, o formulario) contiene ms de un procedimiento. El ambiente de desarrollo ofrece dos vistas Vista de procedimiento Vista del mdulo

Objetos y procedimientos Lista de Cajas


En la ventana de cdigo, Ud. puede visualizar 2 cajas desplegables

~ 11 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Donde: Caja a la izquierda vemos (Workbook), permite moverse por cada objeto y sus eventos. Caja desplegable a la derecha (Open), permite navegar sobre los eventos que puede ser utilizado.

Entendiendo los componentes de VBE

Barra de herramientas
La barra de herramientas estndar, que est justo debajo de la barra de men por defecto (consulte a la Figura 3-1), es uno de los cuatro VBE barras de herramientas disponibles. Se puede personalizar las barras de herramientas, moverlos, mostrar las barras de herramientas, etc. Si eres de los que buscan cambiar, utilice el comando Ver

~ 12 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Barras de herramientas Vista para trabajar con VBE barras de herramientas. Muchas personas (incluido yo) simplemente los dejo como estn.

Ventana de Proyecto ventana


La ventana de proyecto muestra un diagrama de rbol que muestra a todos los libros en uso. Abrir en Excel (incluyendo complementos y libros ocultos). Haga doble clic en artculos para expandir o contraer las mismas. Discutimos esta ventana con ms detalle en la prxima seccin de "Trabajar con la ventana del proyecto". Si la ventana Proyecto no es visible, pulse Ctrl + R o utilizar la ventana de comando VER Explorador de proyecto. Para ocultar la ventana del proyecto, haga clic en el botn Cerrar en su barra de ttulo. O haga clic derecho en cualquier parte de la ventana del proyecto y seleccione Ocultar en el men contextual.

Ventana de Codigo
Una ventana de cdigo contiene el cdigo de VBA. Cada objeto en un proyecto tiene asociado una ventana Cdigo. Para ver la ventana de un objeto Cdigo, haga doble clic en el objeto en la ventana del proyecto. Por ejemplo, para ver la ventana de cdigo para la Hoja1 objeto, haga doble clic en Sheet1 hoja 1 en la ventana del proyecto. A menos que haya aadido algo de VBA cdigo, la ventana de cdigo estar vaca. Puede encontrar ms informacin sobre el cdigo de Windows despus de "Utilizacin de este captulo con una ventana de cdigo ".

Ventana Inmediata
La ventana Inmediato puede o no ser visible. Si no es visible, pulse Ctrl + G o use el comando Ventana Inmediato. Para cerrar la Ventana Inmediato, haga clic en el botn Cerrar en la barra de ttulo (o haga clic en cualquier lugar en la ventana Inmediato y seleccione Ocultar en el men contextual). La ventana Inmediato es el ms til para ejecutar sentencias de VBA directamente y para depurar el cdigo. Si ests empezando con VBA, esta ventana no ser tan til, as que sintase libre para ocultarlo y liberar algo de pantalla de espacio para otras cosas.

Trabajando con Proyectos en VBE


Cuando ests trabajando en el VBE, cada libro de Excel y complementos que est abierto es un proyecto. Usted puede pensar en un proyecto como un conjunto de objetos dispuestos como un esquema. Puede expandir un proyecto haciendo clic en el signo ms (+) a la izquierda del nombre del proyecto en la ventana del proyecto. Contratar un proyecto haciendo clic en el signo menos (-) a la izquierda del nombre del proyecto. O bien, puede hacer doble clic en los elementos para expandir y contraer ellos.

~ 13 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Agregando - Borrando - Importando y Exportando modulos


Estando posicionados en algn mdulo del proyecto, Ud. puede utilizar las teclas rpidas para realizar tareas en administracin de mdulos Ctrl + E : Exportamos mdulos Ctrl + M : Importamos mdulos

Creando un Modulo
En general, un mdulo de VBA puede contener tres tipos de cdigo: Declaraciones: Una o varias declaraciones de informacin que usted suministre a VBA. Por ejemplo, se puede declarar el tipo de datos para las variables que planea utilizar o configurar algunas otras opciones de mdulo ancho. Sub Procedimientos: Un conjunto de instrucciones de programacin que realiza alguna accin. Los procedimientos Function: Un conjunto de instrucciones de programacin que devuelve un solo valor (similar en concepto a una funcin de hoja de clculo, tales como SUM).

Formas en que puede ingresar Codigo


Ingrese el cdigo directamente. Use la grabadora de macros de Excel para registrar sus acciones y convertirlos a cdigo de VBa. Copia el cdigo de un mdulo y pegarlo en otra.

~ 14 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Variables, Tipos de datos y constantes


Constantes
En el lenguaje VBA tenemos 2 tipos de constantes. Las constantes literales (a veces llamado constante o literal) es un valor especfico, como un nmero, fecha, cadena caracteres, que no cambia, y es usada exactamente como se escribe. Ejemplo
Dim dt as Date dt = #01/02/2013#

Una constante simblica es un nombre de un literal. Para definir o declarar una constante literal en un programa, nosotros usamos la letra Const, como lo siguiente
Const invoicepath = d:\oldinvoice\

De este modo, Excel siempre tomar a invoicepath como una cadena.

Enumeradores
Los enumeradores son valores de tipos constantes simblicas Los elementos del tipo de Enum se inicializan a los valores de constantes dentro de la instruccin Enum. Los valores asignados no se pueden modificar en tiempo de ejecucin y pueden incluir valores positivos y negativos Una instruccin Enum slo puede aparecer en el nivel de mdulo. Una vez definido el tipo de Enum, puede utilizarse para declarar variables, parmetros o procedimientos que devuelvan su tipo. No puede cualificar el nombre de un tipo Enum con un nombre de mdulo. Los tipos Public Enum de un mdulo de clase no son miembros de la clase; sin embargo, se escriben en la biblioteca de tipos. Los tipos Enum definidos en mdulos estndar no se escriben en bibliotecas de tipos. Los tipos Public Enum del mismo nombre no se pueden definir en mdulos estndar y en mdulos de clase, ya que comparten el mismo espacio de nombres. Cuando dos tipos Enum de distintas bibliotecas de tipos tienen el mismo nombre pero distintos elementos, una referencia a una variable del tipo depende de la biblioteca de tipos que tenga mayor prioridad en References. No puede utilizar un tipo Enum como destino en un bloque With. Ejemplo
Enum VbMsgBoxStyle vbOKOnly = 0 vbOKCancel = 1 vbAbortRetryIgnore = 2 vbYesNoCancel = 3

~ 15 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

vbYesNo = 4 vbRetryCancel = 5 End Enum Sub prueba() If MsgBox("proceder?", vbOKCancel) = vbOK Then 'agregar el codigo que corresponda con ok Else 'agregar el codigo con el otro boton End If End Sub

Variables y Tipos de Datos


Una variable es un tipo de dato localizado en la memoria que puede cambiar su valor durante el ciclo de vida dentro del programa. Cada variable es un tipo especfico de Tipo Dato
La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamao de almacenamiento y el intervalo.

Tipo de datos Byte Boolean Integer Long (entero largo) LongLong (entero LongLong) LongPtr (Entero largo en sistemas de 32 bits, entero LongLong en sistemas de 64 bits) Single (coma flotante/ precisin simple) Double (coma flotante/ precisin doble) Currency (entero a escala) Decimal

Tamao de almacenamiento 1 byte 2 bytes 2 bytes 4 bytes 8 bytes

Intervalo 0 a 255 True o False -32,768 a 32,767 -2,147,483,648 a 2,147,483,647 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (slo es vlido en plataformas de 64 bits). -2.147.483.648 a 2.147.483.647 en sistemas de 32 bits, -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 en sistemas de 64 bits

4 bytes en sistemas de 32 bits, 8 bytes en sistemas de 64 bits

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;

8 bytes

8 bytes 14 bytes

~ 16 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

+/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el nmero ms pequeo distinto de cero es +/-0,0000000000000000000000000001 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 16 bytes 22 bytes + longitud de la cadena Nmero requerido por los elementos 1 de enero de 100 a 31 de diciembre de 9999 Cualquier referencia a tipo Object Desde 0 a 2.000 millones Desde 1 a 65.400 aproximadamente 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.

Declaracion de Variables
Es importante entender que tener una buena estructura de programacin requiere la declaracin de variables. VBA soporta no declarar variables Variant es el tipo de datos para todas las variables si no se declaran explcitamente como de algn otro tipo (utilizando instrucciones como Dim, Private, Public o Static). El tipo de datos Variant no tiene un carcter de declaracin de tipo. Variant es un tipo de datos especial que puede contener cualquier clase de datos excepto datos de cadena de longitud fija (los tipos Variant admiten ahora tipos definidos por el usuario.) Variant tambin puede contener los valores especiales Empty, Error, Nothing y Null. Puede determinar la forma en que desea tratar los datos tipo Variant utilizando las funciones VarType o TypeName.

Sufijos y Prefijos

Array o Matrices
Un array es una variable pero se distingue por el ndice que lleva de cada valor.
Dim cell(1 to 100) As Range

Dimensiones de las matrices


Las celdas definen las dimensiones de las matrices y en el ejemplo anterior, solamente tenan 1 dimensin. Podemos definir muchas dimensiones

~ 17 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Dim Cell (1 to 10, 1 to 100) as Range

Matrices Dinamicas
Cuando una matriz es definida del siguiente modo:
Dim FileName(1 to 10) As String

El tamao de la matriz esta fijado. Pero es posible que podamos dinamizar el tamao. Visual lo permite a travs de la declaracin ReDim
Dim FileName() as String Redim FileName(1 to 10) Redim FileName (1 to 100)

La funcion Ubound
Esta funcin es utilizada para comparar y permitir redimensionar una matriz si es necesario. La funcin UBound se utiliza junto con la funcin LBound para determinar el tamao de una matriz. Use la funcin LBound para encontrar el lmite inferior de la dimensin de una matriz. UBound devuelve los valores enumerados en la tabla siguiente para una matriz con las dimensiones siguientes:
Dim A(1 To 100, 0 To 3, -3 To 4)
Instruccin UBound(A, 1) UBound(A, 2) UBound(A, 3) Valor devuelto 100 3 4

Alcance de las variables


Las variables y constantes tienen un alcance, mientras indica en el programa el reconocimiento de sus valores. Estas pueden ser locales, privadas y pblicas

Variables Nivel de procedimiento Local)


Una variable o constante local es declarado dentro del procedimiento y puede ser identificada como LocalVar o LocalConstant. Y no es visible fuera del procedimiento. La ventaja de realizar este tipo de declaraciones es evitar los conflictos de nombres en las diferentes rutinas.

Variables de Nivel Modulo


Este tipo de declaracin est realizada en la seccin de declaraciones de un mdulo (Estandar, clase o formulario). Estas pueden ser de 2 tipos: Privadas y Pblicas

~ 18 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Variables tipo Public (o constantes) estn disponibles en todo el procedimiento y todos los mdulos del proyecto. Mientras que las declaraciones tipo Private estn disponibles nicamente sobre el procedimiento en el mdulo que ha sido declarada.

Instruccion Option Explicit


Se usa en el nivel de mdulo para forzar declaraciones explcitas de todas las variables en dicho mdulo. Sintaxis
Option Explicit

Comentarios Si se usa, la instruccin Option Explicit debe aparecer en un mdulo antes de cualquier procedimiento. Cuando Option Explicit aparece en un mdulo, debe declarar explcitamente todas las variables mediante las instrucciones Dim, Private, Public, ReDim o Static. Si intenta usar un nombre de variable no declarado, ocurrir un error en tiempo de compilacin. Si no usa la instruccin Option Explicit todas las variables no declaradas son Variant, a menos que el tipo predeterminado est especificado de otra manera con una instruccin Def tipo.

Ciclo de vida de las variables


Las variables tienen un ciclo de vida. La diferencia entre ciclo de vida y alcance es sencilla: el ciclo de vida hasta que momento la variable retiene el valor, mientras que alcance dice hasta donde es accesible el valor. As por ejemplo:
Sub ProcedureA() Dim localvar AS Integer LocalVar = 0 Call procedureB LocalVar = 1 End Sub

En este ejemplo estamos diciendo que la variable LocalVar no podr ser vista por procedureB, porque su alcance est fuera de vista. El ciclo de vida de esta variable continuar una vez que termine el procedureB y tomar otro valor LocalVar ser 1. Todo termina cuando se cumple el procedureA()

~ 19 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Variables Static)
Una variable esttica es una variable local que retiene su valor mientras no se cierre el documento o template que contiene el mdulo de cdigo. No siempre es utilizada las variables estticas, pero pueden ser tiles en muchas oportunidades donde requiere ciertos controles.

~ 20 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Funciones y Subrutinas
VBA tiene dos tipos de procedimientos: Funciones y subrutinas. Y recuerde, la diferencia entre funciones y subrutinas es que las funciones retornan un valor y las subrutinas no.

Llamando a funciones
La declaracin de una funcin tiene la siguiente forma
[Public or Private] Function NombreFuncion(Param1 As DataType1,_ Param2 As DataType2,) As ReturnType

Note que no solamente es posible declarar el tipo de dato en la funcin sino tambin el valor retornado. Es opcional las palabras Public y Private pero probablemente querr Ud. indicar el alcance de la funcin, tal como en las declaraciones de variable visto anteriormente. Ejemplo de una funcin
Public Function AddOne (Value As Integer) AddOne = Value + 1 End Function As Integer

Y Puede llamar a esta funcin en una expresin, como el siguiente:


MsgBox Agregando 1 al valor 5: & AddOne(5)

El mensaje enviara como resultado el siguiente valor

Llamando a Subrutinas
La declaracin de un subrutina tiene la siguiente forma:
[Public or Private] Sub NombreSubrutina(Param1 As DataType1,_ Param2 As DataType2,)

Es similar a la declaracin de funciones, com la salvedad de la porcin As RetrunType

~ 21 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Las subrutinas no retornan valor, y no pueden ser usados en expresiones. Para llamar a una subrutina por su nombre, nosotros escribimos de la siguiente manera:
Call SubroutineA(parameters,)

O simplemente
SubroutineA parameters

Parametros y Argumentos
Considerando la siguiente subrutina sumamente sencilla, para desplegar el nombre de una persona>
Sub DisplayName(sName As String) MsgBox My Name is & sName End Sub

Para llamar a la subrutina, escribimos lo siguiente


DisplayName Wolfgang

Call DisplayName(Wolfgang)

La variable sName en la declaracin de un procedimiento se llama parmetros. El valor usado para un parmetro al ser llamado el procedimiento se denomina argumento. En nuestro ejemplo Wolfgang

Parametros ByRef versus ByVal


Los parmetros pueden estar en 2 sentidos: ByRef y ByVal. Muchos programadores no tienen un entendimiento claro de estos conceptos, pero son sumamente importante y no es difcil de entenderlo. Para explicar la diferencia, considere estos dos procedimientos del siguiente ejemplo. El ProcedureA setea sus valores de variables a nivel mdulo x a , muestra el valor, llama al procedimiento AddOne con el argumento x y muestra nuevamente el valor de x.
Sub ProcedureA() x = 5 MsgBox x Call AddOne(x) MsgBox x End Sub Setea x a 5 Muestra x llama AddOne Muestra x nuevamente

Sub AddOne (ByRef i As Integer) i = i + 1

~ 22 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

End Sub

Note la precencia de la palabra ByRef en la declaracin del procedimiento AddOne. Esta palabra dice a VBA pasar como referencia a la variable x al procedimiento AddOne. Luego, el procedimiento AddOne, en efecto, reemplaza este parmetro i por la variable x. Como resultado la variable x cambio su valor a las modificaciones realizadas en procedimiento AddOne. Ahora por el otro lado, suponga que cambiamos el procedimiento AddOne, reemplazando la palabra ByRef por la palabra ByVal:
Sub AddOne (ByVal i As Integer) i = i + 1 End Sub

En este caso, VBA no pasa una referencia a la variable x, sino que pasa a su valor. Por lo tanto, la variable i en AddOne simplemente toma el valor 5. De este modo la variable x mantiene su valor original sin ser afectado.

Saliendo de un procedimiento
VBA provee de las siguientes declaraciones: Exit Sub y Exit Function para salir de un procedimiento que no puede terminar de manera natural.
Sub DisplayName(sName As String) If sName = then Msgbox Por favor ingrese un nombre Exit sub End If MsgBox El nombre ingresado es: & sName End Sub

Public y Private Procedimientos


Tanto las variables y constantes que tienen alcance, tambin lo son para los procedimientos. Podemos declarar procedimientos utilizando las palabras Public y Private. La diferencia es simple: Un Private procedure puede ser llamado nicamente dentro del mdulo donde esta definido, mientras que Public puede ser llamado desde cualquier mdulo del proyecto. Cuando es omitido estas palabras es considerado Public.

~ 23 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Declaraciones, Operadores y Funciones Integradas


Declaraciones
AddHandler Continue Do...Loop Error For Each...Next GoTo Call Declare End Event For...Next If...Then...Else Class Delegate Enum Exit Function Implements Const Dim Erase Get Imports Statement (.NET Namespace and Type) Mid Operator Option Strict

Imports Statement (XML Namespace) Module Option Compare Property RaiseEvent Resume Stop Throw With...End With

Inherits Namespace Option Explicit

Interface On Error Option Infer

ReDim Return Structure Try...Catch...Finally

REM Select...Case Sub Using

RemoveHandler Set SyncLock While...End While

Operadores VBA de Excel


Hay una serie de operadores VBA incorporados que puede ser utilizado en el cdigo de VBA de Excel. Se trata de operadores matemticos, los operadores de la cadena, los operadores de comparacin y operadores lgicos. Estos son discutidos individualmente a continuacin.

Operadores matematicos
Los principales operadores matemticos VBA se enumeran en la tabla a continuacin. Tenga en cuenta que, las precedencias que aparecen junto a los operadores son los valores por defecto, que se aplican en ausencia de los soportes. Sin embargo, el orden en que se aplican los operadores VBA puede controlarse mediante la adicin de los soportes a una expresin:

~ 24 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Operador

Accin

Precedencia (1 = superior; 5 = parte inferior) 1 2 2 3

^ * / \

El operador de la energa El operador de multiplicacin El operador de divisin El operador de divisin entera este operador se divide dos nmeros y devuelve el resultado entero (ej. 7\4 da un resultado de 1) El operador de mdulo - este operador se divide dos nmeros y devuelve el resto (ej. 8 Mod 3 ofrece un resultado de 2) El operador de suma El operador de resta

Mod

+ -

5 5

Operadores de la cadena
El operador de la cadena principal en VBA de Excel es el operador de concatenacin, &:
Operador Accin

&

El operador de concatenacin (eg. "A" y "B" da el resultado "AB")

Operadores de comparacion VBA


Operadores de comparacin comparan dos nmeros o cadenas y devuelven un resultado lgico (True o False). Los principales operadores de comparacin de VBA de Excel se enumeran en la tabla siguiente:
Operador Accin

~ 25 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

= <> < > <= >=

Igual a No es igual Menos de Mayor que Inferior o igual a Mayor que o igual a

Operadores logicos de VBA


Operadores de comparacin tambin devuelven un resultado lgico (True o False). Los principales operadores lgicos de VBA de Excel se enumeran en la tabla siguiente:
Operador Accin

Operador lgico y (ej. la expresin 'A y B' devuelve True si ambos A y B son verdadera y devuelve False en caso contrario)

Operador lgico o (ej. la expresin 'A o B' devuelve True si ya sea A o B es verdadero y devuelve False en caso contrario)

No

Niega una evaluacin (ej. la expresin ' no A' devuelve True si A es falsa y devuelve False si A es verdadero)

Funciones integradas
VBA tiene tambin un gran nmero de funciones que estn disponibles para utilizarse en el cdigo VBA. Continuacin se enumeran algunas de las funciones ms utilizadas de VBA.
Funcin Accin

ABS

Si se suministra con un valor numrico, la funcin Abs devuelve el valor numrico absoluto, con un signo positivo por ejemplo. ABS(-20) devuelve el valor 20 ABS(20) devuelve el valor 20

~ 26 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Chr

Si se suministra con un valor numrico, la funcin Chr devuelve el carcter ansi asociada a ese valor por ejemplo. Chr(10) devuelve un salto de lnea Chr(97) devuelve el carcter "un"

Date DateAdd

Devuelve la fecha actual del sistema Aade un periodo de tiempo determinado a una fecha. La funcin tiene el formato DateAdd (intervalo, nmero, fecha), donde el argumento intervalo especifica el tipo de intervalo de tiempo que se aade a la fecha proporcionada. Esto puede adoptar uno de los siguientes valores: Intervalo Representa aaaa q m y d w WW h n s ao cuarto mes das del ao da lunes a viernes semana hora minutos segundo

por ejemplo.

DateAdd ("d", 32, "01/01/2009") agrega 32 das a la fecha "01/01/2009" y as devuelve la fecha "02/02/2009" DateAdd ("ww", 8, "01/01/2009") 88 semanas se suma a la fecha "01/01/2009" y as devuelve la fecha "09/09/2010"

DateDiff

Calcula el nmero de intervalos especificados entre ahora y una fecha suministrada por ejemplo. DateDiff ("d", "01/01/2009", "02/02/2009") calcula el nmero de das entre las fechas "01/01/2009" y "02/02/2009" y por lo tanto devuelve el valor 32 DateDiff ("d", "01/01/2009", "09/09/2010") calcula el nmero de semanas entre las fechas "01/01/2009" y "09/09/2010" y por lo tanto devuelve el valor 88

~ 27 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Daty

Devuelve el da del mes para una fecha suministrada por ejemplo. Day("01/29/2009") devuelve el valor 29

Hour

Devuelve la parte de hora de un tiempo suministrado por ejemplo. Hour("22:45:00") devuelve el valor 22

InStr

Si se suministra con un nmero entero n y dos cadenas, la funcin InStr devuelve la posicin de la segunda cadena en la primera cadena, desde la bsqueda de la posicin de n'th en la primera cadena por ejemplo. InStr (1, "Aqu est el searchword", "searchword") devuelve el valor de 13 InStr (14, "aqu el searchword pero aqu hay otro searchword", "searchword") devuelve el valor 44

Int

Si se suministra con un valor numrico, la funcin Int devuelve la parte entera del valor por ejemplo. Int(5.79) devuelve el valor 5

ISDATE

Si se suministra con un valor, la funcin IsDate devuelve True si el valor es una fecha y False en caso contrario por ejemplo. IsDate("01/01/2009") devuelve el valor True IsDate(100) devuelve el valor False

ESERROR

Si se suministra con un valor, la funcin EsError devuelve True si el valor es un error, de lo contrario, es errneo Si se suministra con el nombre de un argumento opcional para una funcin, la funcin IsMissing devuelve True si no se ha pasado ningn valor de argumento a la funcin Si se suministra con un valor, la funcin IsNumeric devuelve True si el valor puede ser evaluado como un nmero Devuelve un nmero especificado de caracteres desde el principio de una cadena suministrada El formato de la funcin queda (cadena, longitud), donde cadena es la cadena de texto original y la longitud es el nmero de caracteres a devolverse desde el inicio de la cadena suministrada por ejemplo. Izquierda ("abcdefghijklm", 4) devuelve la cadena "abcd" Izquierda ("abcdefghijklm", 1) devuelve la cadena "un"

IsMissing

IsNumeric

Left

Len

Si viene con una cadena de texto, la funcin Len devuelve la longitud de la cadena por ejemplo. Len("ABCDEFG") devuelve el valor 7

~ 28 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Month

Devuelve el nmero de mes de una fecha suministrada por ejemplo. Month("01/29/2009") devuelve el valor 1

MID

Devuelve un nmero especificado de caracteres desde el centro de una cadena suministrada El formato de la funcin es Mid (cadena, Inicio, longitud), donde cadena es la cadena de texto original, Inicio es la posicin inicial de la seccin de cuerda que va a ser devuelto y longitud es la longitud de la cadena devuelta por ejemplo. MID ("abcdefghijklm", 4, 5) devuelve la cadena "defgh" MID ("abcdefghijklm", 10, 2) devuelve la cadena "jk"

Minute

Devuelve la parte minuto de uno suministrado por ejemplo. Minute("22:45:15") devuelve el valor 45

Now Right

Devuelve la fecha actual del sistema y el tiempo Devuelve un nmero especificado de caracteres desde el final de una cadena suministrado El formato de la funcin es Right (cadena, longitud), donde cadena es la cadena de texto original y la longitud es el nmero de caracteres a devolverse desde el extremo de la cadena suministrada por ejemplo. Derecho ("abcdefghijklm", 4) devuelve la cadena "jklm" Derecho ("abcdefghijklm", 1) devuelve la cadena "m"

Second

Devuelve la segunda parte de un tiempo suministrado por ejemplo. Second("22:45:15") devuelve el valor 15

Sqr

Si se suministra con valor numrico, la funcin Sqr devuelve la raz cuadrada de ese valor por ejemplo. Sqr(4) devuelve el valor 2 Sqr(16) devuelve el valor 4

Time UBound

Devuelve la hora actual del sistema Si se suministra con una matriz, la funcin UBound devuelve el subndice superior de la matriz Devuelve el ao de una fecha suministrada por ejemplo. Year("01/29/2009") devuelve el valor de 2009

Year

La Funcion MsgBox
~ 29 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

La funcin MsgBox es utilizado para desplegar mensajes y espera a que el usuario responda pulsando un butn. La sintaxis comnmente utilizada. Sintaxis MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la funcin MsgBox consta de estos argumentos con nombre:
Parte Descripcin Requerido. Expresin de cadena que representa el prompt en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)) o un carcter de avance de lnea (Chr(10)), o una combinacin de caracteres de retorno de carro avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0. Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de dilogo. Si se especifica helpfile, tambin se debe especificar context. Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin se debe especificar helpfile .

prompt

buttons

title

helpfile

context

Valores El argumento buttons tiene estos valores:


Constante VbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel Valor 0 1 2 3 4 5 Descripcin Muestra solamente el botn Aceptar. Muestra los botones Aceptar y Cancelar. Muestra los botones Anular, Reintentar e Ignorar. Muestra los botones S, No y Cancelar. Muestra los botones S y No. Muestra los botones Reintentar y Cancelar.

~ 30 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

VbCritical VbQuestion VbExclamation VbInformation VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal

16 32 48 64 0 256 512 768 0

Muestra el icono de mensaje crtico. Muestra el icono de pregunta de advertencia. Muestra el icono de mensaje de advertencia. Muestra el icono de mensaje de informacin. El primer botn es el predeterminado. El segundo botn es el predeterminado. El tercer botn es el predeterminado. El cuarto botn es el predeterminado. Aplicacin modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicacin actual. Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes. Agrega el botn Ayuda al cuadro de mensaje. Especifica la ventana del cuadro de mensaje como la ventana de primer plano. El texto se alnea a la derecha. Especifica que el texto debe aparecer para ser ledo de derecha a izquierda en sistemas hebreo y rabe.

VbSystemModal

4096

VbMsgBoxHelpButton VbMsgBoxSetForeground

16384 65536

VbMsgBoxRight VbMsgBoxRtlReading

524288 1048576

El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones mostrados en el cuadro de dilogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botn predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman nmeros para obtener el valor final del argumento buttons, se utiliza solamente un nmero de cada grupo. Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del cdigo en vez de sus valores reales. Valores devueltos
Constante vbOK vbCancel Valor 1 2 Descripcin Aceptar Cancelar

~ 31 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

vbAbort vbRetry vbIgnore vbYes vbNo

3 4 5 6 7

Anular Reintentar Ignorar S No

Comentarios Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 (Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente al context. Algunas aplicaciones host, por ejemplo Microsoft Excel, tambin agregan automticamente un botn Ayuda al cuadro de dilogo. Si el cuadro de dilogo cuenta con un botn Cancelar, presionar la tecla ESC tendr el mismo efecto que hacer clic en este botn. Si el cuadro de dilogo contiene un botn Ayuda, se suministra ayuda interactiva para ese cuadro de dilogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones.

La Funcion InputBox
La funcin InputBox est diseada para tomar datos desde el usuario. La ms comnmente usada sintaxis es: Sintaxis InputBox (prompt[, title][, default][, xpos][, ypos][, helpfile, context]) La sintaxis de la funcin InputBox consta de estos argumentos con nombre:
Parte Descripcin Requerido. Expresin de cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o una combinacin de los caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Opcional. Expresin de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de texto vaco.

Prompt

Title

Default

~ 32 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Xpos

Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de dilogo se centra horizontalmente. Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de dilogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma. Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para proporcionar ayuda interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin deber especificarse context. Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context , tambin deber especificarse helpfile.

Ypos

Helpfile

Context

Comentarios Cuando se especifica tanto helpfile como context, el usuario puede presionar F1 (Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente a context. Algunas aplicaciones host, por ejemplo, Microsoft Excel, tambin agregar automticamente un botn Ayuda al cuadro de dilogo. Si el usuario hace clic en Aceptar o presiona Entrar , la funcin InputBox devuelve lo que haya en el cuadro de texto. Si el usuario hace clic en Cancelar, la funcin devuelve una cadena de caracteres de longitud cero (""). Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar InputBox en una expresin. Si desea omitir algunos argumentos de posicin, debe incluir el delimitador de coma correspondiente.

Declaraciones de Control
La Declaracion If..Then
Sintaxis
If condicin Then [instrucciones]-[Else instrucciones_else]

Puede utilizar la siguiente sintaxis en formato de bloque:


If condicin Then [instrucciones] [ElseIf condicin-n Then [instrucciones_elseif] ... [Else [instrucciones_else]] End If

La Declaracion de Bucle FOR


~ 33 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

Sintaxis
For contador = principio To fin [Step incremento] [instrucciones] [Exit For] [instrucciones] Next [contador]

Una vez que se inicia el bucle y se han ejecutado todas las instrucciones en el bucle, incremento se suma a contador. En este punto, las instrucciones del bucle se pueden ejecutar de nuevo (si se cumple la misma prueba que caus que el bucle se ejecutara inicialmente) o bien se sale del bucle y la ejecucin contina con la instruccin que sigue a la instruccin Next. Sugerencia Cambiar el valor de contador mientras est dentro de un bucle hace difcil su lectura y depuracin. Se pueden colocar en el bucle cualquier nmero de instrucciones Exit For como una manera alternativa de salir del mismo. La instruccin Exit For, que se utiliza a menudo en la evaluacin de alguna condicin (por ejemplo, If...Then), transfiere el control a la instruccin que sigue inmediatamente a la instruccin Next. Se pueden anidar bucles For...Next, colocando un bucle For...Next dentro de otro. Para ello, proporcione a cada bucle un nombre de variable nico como su contador. La siguiente construccin es correcta:
For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ... Next K Next J Next I

La declaracion Do Loop
Repite un bloque de instrucciones cuando una condicin es True o hasta que una condicin se convierta en True. Sintaxis
Do [{While | Until} condicin] [instrucciones] [Exit Do] [instrucciones] Loop

O bien, puede utilizar esta sintaxis:


Do [instrucciones]

~ 34 ~

Escribiendo y Desarrollando programacin VBA - Microsoft Excel Avanzado

[Exit Do] [instrucciones] Loop [{While | Until} condicin]

La diferencia en While y Until, radica en que While ejecutar una instruccin mientras se mantenga la condicin. Esto tambin quiere decir que el bucle puede no ejecutarse. Mientras que Until, al menos una vez se ejecutar buscando que cambie el valor.

La Declaracion Select Case

Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresin. Sintaxis
Select Case expresin_prueba [Case lista_expresion-n [instrucciones-n]] ... [Case Else [instrucciones_else]] End Select

~ 35 ~

Anda mungkin juga menyukai