Programacin II Bienvenidos a Visual Basic Bienvenidos a Microsoft Visual Basic, la manera ms rpida y sencilla de crear aplicaciones para Microsoft Windows
. Tanto si es un profesional experimentado como un
recin llegado a la programacin en Windows, Visual Basic le proporciona un juego completo de herramientas que facilitan el desarrollo rpido de aplicaciones. Qu es Visual Basic? La palabra "Visual" hace referencia al mtodo que se utiliza para crear la interfaz grfica de usuario (GUI). En lugar de escribir numerosas lneas de cdigo para describir la apariencia y la ubicacin de los elementos de la interfaz, simplemente puede agregar objetos prefabricados en su lugar dentro de la pantalla. Si ha utilizado alguna vez un programa de dibujo como Paint, ya tiene la mayor parte de las habilidades necesarias para crear una interfaz de usuario efectiva. La palabra "Basic" hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code), un lenguaje utilizado por ms programadores que ningn otro lenguaje en la historia de la informtica o computacin. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora contiene centenares de instrucciones, funciones y palabras clave, muchas de las cuales estn directamente relacionadas con la interfaz grfica de Windows. Los principiantes pueden crear aplicaciones tiles con slo aprender unas pocas palabras clave, pero, al mismo tiempo, la eficacia del lenguaje permite a los profesionales acometer cualquier objetivo que pueda alcanzarse mediante cualquier otro lenguaje de programacin de Windows. El lenguaje de programacin Visual Basic no es exclusivo de Visual Basic. La Edicin para aplicaciones del sistema de programacin de Visual Basic, incluida en Microsoft Excel, Microsoft Access y muchas otras aplicaciones Windows, utilizan el mismo lenguaje. El sistema de programacin de Visual Basic, Scripting Edition (VBScript) es un lenguaje de secuencias de comandos ampliamente difundido y un subconjunto del lenguaje Visual Basic. La inversin realizada en el aprendizaje de Visual Basic le ayudar a abarcar estas otras reas. Si su objetivo es crear un pequeo programa para su uso personal o para su grupo de trabajo, un sistema para una empresa o incluso aplicaciones distribuidas de alcance mundial a travs de Internet, Visual Basic dispone de las herramientas que necesita. Las caractersticas de acceso a datos le permiten crear bases de datos, aplicaciones cliente, y componentes de servidor escalables para los formatos de las bases de datos ms conocidas, incluidos Microsoft SQL Server y otras bases de datos de mbito empresarial. Las tecnologas ActiveX le permiten usar la funcionalidad proporcionada por otras aplicaciones, como el procesador de textos Microsoft Word, la hoja de clculo Microsoft Excel y otras aplicaciones Windows. Puede incluso automatizar las aplicaciones y los objetos creados con la Edicin Profesional o la Edicin Empresarial de Visual Basic. 2
Las capacidades de Internet facilitan el acceso a documentos y aplicaciones a travs de Internet o intranet desde su propia aplicacin, o la creacin de aplicaciones de servidor para Internet. La aplicacin terminada es un autntico archivo .exe que utiliza una mquina virtual de Visual Basic que puede distribuir con toda libertad. Ediciones de Visual Basic Visual Basic se encuentra disponible en tres versiones, cada una de las cuales est orientada a unos requisitos de programacin especficos. La Edicin de Aprendizaje de Visual Basic permite a los programadores crear robustas aplicaciones para Microsoft Windows y Windows NT
. Incluye todos los
controles intrnsecos, adems de los controles de cuadrcula, de fichas y los controles enlazados a datos. La documentacin proporcionada con esta edicin incluye el CD "Aprenda VisualBasic ya" junto con el de la biblioteca de Microsoft Developer Network (MSDN) que contienen documentacin completa en pantalla. La Edicin Profesional proporciona a los profesionales un conjunto completo de herramientas para desarrollar soluciones para terceros. Incluye todas las caractersticas de la Edicin de Aprendizaje, as como controles ActiveX adicionales, el diseador de aplicaciones para Internet Information Server y Visual Database Tools and Data. La documentacin que se proporciona con la Edicin Profesional incluye el libro Caractersticas empresariales de Visual Studio ms los CD de Microsoft Developer Network que contienen documentacin completa en pantalla. La Edicin Empresarial permite a los profesionales crear slidas aplicaciones distribuidas en un entorno de equipo. Incluye todas las caractersticas de la Edicin Profesional, as como herramientas de Back Office como SQL Server, Microsoft Transaction Server, Internet Information Server, Visual SourceSafe, SNA Server, etc. La documentacin impresa que se proporciona con la Edicin Empresarial incluye el libro Caractersticas empresariales de Visual Studio ms los CD de Microsoft Developer Network que contienen documentacin completa en pantalla.
Fundamentos de programacin Este captulo presenta los componentes esenciales del lenguaje Visual Basic. Tras crear la interfaz de la aplicacin mediante formularios y controles, necesitar escribir el cdigo que defina el comportamiento de la aplicacin. Como cualquier lenguaje moderno de programacin, Visual Basic acepta ciertas construcciones de programacin y elementos de lenguaje comunes. 3
Visual Basic es un lenguaje de programacin basado en objetos. La simple mencin de la palabra objetos puede provocar excesiva ansiedad en muchos programadores. No se preocupe: quiz sin saberlo, ha estado trabajando con objetos la mayor parte de su vida. Una vez que haya comprendido algunos conceptos bsicos, los objetos le facilitarn la programacin ms que nunca. Si ha programado en otros lenguajes, gran parte del material que se presenta en este captulo le resultar familiar. Aunque la mayora de las construcciones son similares a otros lenguajes, la naturaleza orientada a eventos de Visual Basic presenta algunas diferencias sutiles. Procure abordar este material con la mente abierta; una vez que haya comprendido las diferencias podr beneficiarse de ellas. Si programa desde hace poco, el material de este captulo le servir de introduccin para la construccin de bloques bsicos de cdigo. Una vez que comprenda los conceptos bsicos, ser capaz de crear potentes aplicaciones con Visual Basic. Temas
Estructura de una aplicacin en Visual Basic Introduccin a los diversos componentes o mdulos que componen una aplicacin de Visual Basic.
Antes de empezar a codificar Breve discusin de algunas consideraciones que se deben tener en cuenta al disear una aplicacin.
Mecnica de la escritura de cdigo Introduccin a las caractersticas del Editor de cdigo, as como las reglas y normas para escribir cdigo.
Introduccin a las variables, constantes y tipos de datos Introduccin a los elementos bsicos del lenguaje Visual Basic.
Introduccin a los procedimientos Introduccin a los procedimientos Sub y Function.
Introduccin a las estructuras de control Introduccin a las estructuras de decisin y bucles.
Trabajar con objetos Introduccin a la utilizacin de objetos en cdigo de Visual Basic. 4
Estructura de una aplicacin en Visual Basic Una aplicacin no es ms que un conjunto de instrucciones para que el equipo realice una o varias tareas. La estructura de una aplicacin es la forma en que se organizan las instrucciones; es decir, dnde se almacenan las instrucciones y el orden en que se ejecutan. Las aplicaciones sencillas, como el ejemplo clsico "Hola mundo", tienen una estructura sencilla; la organizacin no es muy importante cuando slo se tiene una lnea de cdigo. A medida que las aplicaciones se van haciendo ms complejas, resulta obvia la necesidad de organizar o estructurar. Imagine el caos resultante si su aplicacin se ejecutara en un orden aleatorio. Adems de controlar la ejecucin de una aplicacin, la estructura es importante para el programador: le resulta sencillo encontrar una instruccin determinada en la aplicacin? Puesto que una aplicacin de Visual Basic se basa en objetos, la estructura de su cdigo se aproxima mucho a su representacin fsica en pantalla. Por definicin, los objetos contienen datos y cdigo. El formulario que ve en la pantalla es una representacin de las propiedades que definen su apariencia y su comportamiento intrnseco. Por cada formulario de una aplicacin hay un mdulo de formulario relacionado (con la extensin de nombre de archivo .frm) que contiene su cdigo. Figura 5.1 Un formulario y su mdulo de formulario relacionado
Cada mdulo de formulario contiene procedimientos de evento (secciones de cdigo donde se colocan las instrucciones que se ejecutarn como respuesta a eventos especficos). Los formularios pueden contener controles. Por cada control de un formulario, existe el correspondiente conjunto de procedimientos de evento en el mdulo de formulario. Adems de procedimientos de evento, los mdulos de formulario pueden 5
contener procedimientos generales que se ejecutan como respuesta a una llamada desde cualquier procedimiento de evento. El cdigo que no est relacionado con un control o un formulario especfico se puede colocar en un tipo diferente de mdulo, un mdulo estndar (.bas). Se deben colocar en un mdulo estndar los procedimientos que se puedan usar como respuesta a eventos de diversos objetos, en lugar de duplicar el cdigo en los procedimientos de evento de cada objeto. Se utiliza un mdulo de clase (.cls) para crear objetos a los que se puede llamar desde procedimientos de la aplicacin. Mientras que un mdulo estndar slo contiene cdigo, un mdulo de clase contiene cdigo y datos (puede considerarse como un control sin representacin fsica). Mientras que en "Administrar proyectos" se describen los componentes que puede agregar a una aplicacin, este captulo explica cmo escribir cdigo en los distintos componentes que conforman una aplicacin. De forma predeterminada, el proyecto contiene un nico mdulo de formulario. Puede agregar mdulos adicionales de formulario, clase y estndar, si es necesario. Los mdulos de clase se describen en "Programar con objetos". Cmo funciona una aplicacin controlada por eventos Una explicacin del modelo controlado por eventos. Cmo funciona una aplicacin controlada por eventos Un evento es una accin reconocida por un formulario o un control. Las aplicaciones controladas por eventos ejecutan cdigo Basic como respuesta a un evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos predefinidos. Si se produce uno de dichos eventos y el procedimiento de evento asociado tiene cdigo, Visual Basic llama a ese cdigo. Aunque los objetos de Visual Basic reconocen automticamente un conjunto predefinido de eventos, usted decide cundo y cmo se responder a un evento determinado. A cada evento le corresponde una seccin de cdigo (un procedimiento de evento). Cuando desea que un control responda a un evento, escribe cdigo en el procedimiento de ese evento. Los tipos de eventos reconocidos por un objeto varan, pero muchos tipos son comunes a la mayora de los controles. Por ejemplo, la mayora de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el cdigo del procedimiento de evento Click del formulario; si un usuario hace clic en un botn de comando, se ejecuta el cdigo del procedimiento de evento Click del botn. El cdigo en cada caso ser diferente. He aqu una secuencia tpica de eventos en una aplicacin controlada por eventos: 6
1. Se inicia la aplicacin y se carga y muestra un formulario. 2. El formulario (o un control del formulario) recibe un evento. El evento puede estar causado por el usuario (por ejemplo, por la pulsacin de una tecla), por el sistema (por ejemplo, un evento de cronmetro) o, de forma indirecta, por el cdigo (por ejemplo, un evento Load cuando el cdigo carga un formulario). 3. Si hay cdigo en el procedimiento de evento correspondiente, se ejecuta. 4. La aplicacin espera al evento siguiente. Nota Muchos eventos se producen junto con otros eventos. Por ejemplo, cuando se produce el evento DblClick, se producen tambin los eventos MouseDown, MouseUp y Click.
Mecnica de la escritura de cdigo Antes de empezar, es importante comprender la mecnica de escritura de cdigo en Visual Basic. Como cualquier lenguaje de programacin, Visual Basic tiene sus propias reglas para organizar, modificar y dar formato al cdigo. Los temas siguientes presentan los procedimientos y mdulos de cdigo, muestran la utilizacin bsica del Editor de cdigo y explican las reglas bsicas para escribir cdigo. Mdulos de cdigo Introduccin a los diferentes tipos de procedimientos y mdulos de cdigo que contienen. Usar el Editor de cdigo Introduccin al trabajo con cdigo mediante el Editor de cdigo. Conceptos bsicos del cdigo Anlisis de las reglas del lenguaje Visual Basic. Mdulos de cdigo El cdigo en Visual Basic se almacena en mdulos. Hay tres tipos de mdulos: de formulario, estndar y de clase. Las aplicaciones sencillas pueden consistir en un nico formulario y todo el cdigo de la aplicacin reside en ese mdulo de formulario. A medida que sus aplicaciones vayan creciendo y siendo ms sofisticadas, agregar formularios adicionales. A veces tendr cdigo comn que desear ejecutar en varios formularios. No querr duplicar el cdigo en ambos formularios, por lo que crear un mdulo independiente que contenga un procedimiento que ejecuta el cdigo comn. Este mdulo independiente debe ser un mdulo estndar. Con el tiempo, puede construir una biblioteca de mdulos que contenga los procedimientos compartidos. 7
Cada mdulo estndar, de clase y de formulario puede contener lo siguiente: Declaraciones. Puede colocar declaraciones de constantes, tipos, variables y procedimientos de bibliotecas de vnculos dinmicos (DLL) al nivel de mdulo de formulario, de clase o estndar. Procedimientos. Un procedimiento Sub, Function o Property contiene partes de cdigo que se pueden ejecutar como una unidad. Se describen en la seccin "Introduccin a los procedimientos", ms adelante en este mismo captulo. Mdulos de formulario Los mdulos de formulario (extensin de nombre de archivo .frm) son la base de la mayora de las aplicaciones de Visual Basic. Pueden contener procedimientos que controlen eventos, procedimientos generales y declaraciones a nivel de formulario de variables, constantes, tipos y procedimientos externos. Si examina un mdulo de formulario con un editor de textos, podr ver las descripciones del formulario y sus controles, as como los valores de sus propiedades. El cdigo que se escribe en un mdulo de formulario es especfico de la aplicacin a la que pertenece el formulario y puede hacer referencia a otros formularios u objetos de la aplicacin. Mdulos estndar Los mdulos estndar (extensin de nombre de archivo .bas) son contenedores de los procedimientos y declaraciones a los que tienen acceso otros mdulos de la aplicacin. Pueden contener declaraciones globales (disponibles para toda la aplicacin) o a nivel de mdulo de variables, constantes, tipos, procedimientos externos y procedimientos globales. El cdigo que se escribe en un mdulo estndar no est ligado necesariamente a una aplicacin determinada; si tiene cuidado de no hacer referencia a controles o formularios por su nombre, puede reusar un mdulo estndar en distintas aplicaciones. Mdulos de clase Los mdulos de clase (extensin de nombre de archivo .cls) son la base de la programacin orientada a objetos en Visual Basic. Puede escribir cdigo en mdulos de clase para crear nuevos objetos. Estos objetos nuevos pueden incluir propiedades y mtodos personalizados. En realidad, los formularios slo son mdulos de clase que pueden tener controles y que pueden mostrar ventanas de formulario. Para obtener ms informacin Para obtener ms informacin acerca de la escritura de cdigo en mdulos de clases, vea "Programar con objetos". Nota Las ediciones Profesional y Empresarial de Visual Basic incluyen tambin documentos ActiveX, diseadores de ActiveX y controles de usuario. Estos introducen nuevos tipos de mdulos con diferentes extensiones de nombre de archivo. Desde el punto de vista de la escritura de cdigo, estos mdulos deben considerarse igual que los mdulos de formulario.
8
Usar el Editor de cdigo El Editor de cdigo de Visual Basic es una ventana donde se escribe la mayor parte del cdigo. Es como un procesador de textos muy especializado con cierto nmero de caractersticas que facilita en gran medida la escritura de cdigo en Visual Basic. La ventana del Editor de cdigo se muestra en la figura 5.4. Figura 5.4 La ventana del Editor de cdigo
Como trabaja con el cdigo de Visual Basic en mdulos, se abre una ventana distinta del Editor de cdigo por cada mdulo que seleccione en el Explorador de proyectos. El cdigo de cada mdulo est subdividido en distintas secciones para cada objeto del mdulo. Para pasar de una seccin a otra se utiliza el cuadro de lista Objeto. En un mdulo de formulario, la lista incluye una seccin general, una seccin para el formulario propiamente dicho y una seccin para cada control del formulario. Para un mdulo de clase, la lista incluye una seccin general y una seccin de clase; para un mdulo estndar slo se muestra una seccin general. Cada seccin de cdigo puede contener varios procedimientos distintos, a los que se tiene acceso mediante el cuadro de lista Procedimiento. La lista de procedimientos de un mdulo de formulario contiene una seccin distinta para cada procedimiento de evento del formulario o el control. Por ejemplo, la lista de procedimientos de un control Label incluye secciones para los eventos Change, Click y DblClick, entre otros. Los mdulos de clase slo muestran los procedimientos de evento para la propia clase (Initialize y Terminate). 9
Los mdulos estndar no muestran ningn procedimiento de evento, ya que un mdulo estndar no acepta eventos. La lista de procedimientos de la seccin general de un mdulo contiene una nica seleccin, la seccin de declaraciones, donde se colocan las declaraciones a nivel de mdulo de variables, constantes y DLL. Segn vaya agregando procedimientos Sub o Function a un mdulo, dichos procedimientos se agregan al cuadro de lista Procedimiento bajo la seccin de declaraciones. En la ventana del Editor de cdigo hay disponibles dos vistas distintas del cdigo. Puede elegir ver un nico procedimiento cada vez o ver todos los procedimientos del mdulo, estando cada procedimiento separado del siguiente mediante una lnea (como se muestra en la figura 5.4). Para cambiar entre las dos vistas, utilice los botones Ver seleccin de la esquina inferior izquierda de la ventana del editor. Terminar el cdigo de forma automtica Visual Basic hace que la escritura de cdigo sea mucho ms sencilla mediante caractersticas que llenan automticamente instrucciones, propiedades y argumentos. A medida que va introduciendo cdigo, el editor muestra listas de elecciones adecuadas, prototipos de instrucciones o funciones, o valores. Hay opciones para activar o desactivar estas y otras configuraciones de cdigo en la ficha Editor del cuadro de dilogo Opciones, al que se tiene acceso a travs del comando Opciones del men Herramientas. Cuando especifica el nombre de un control en el cdigo, la caracterstica Lista de miembros automtica presenta una lista desplegable con las propiedades disponibles para ese control (figura 5.5). Escriba las primeras letras del nombre de la propiedad y se seleccionar en la lista; la tecla TAB completar la escritura. Esta opcin resulta tambin muy til cuando no sepa con seguridad qu propiedades hay disponibles para un determinado control. Incluso aunque haya elegido desactivar la caracterstica Lista de miembros automtica, podr tener acceso a esta caracterstica mediante la combinacin de teclas Ctrl-J. Figura 5.5 La caracterstica Lista de miembros automtica
10
La caracterstica Informacin rpida automtica muestra la sintaxis de las instrucciones y funciones (figura 5.6). Cuando escriba el nombre de una instruccin o funcin vlida de Visual Basic se mostrar la sintaxis inmediatamente debajo de la lnea actual, con el primer argumento en negrita. Una vez que haya escrito el valor del primer argumento, se mostrar en negrita el segundo argumento. Tambin se puede tener acceso a Informacin rpida automtica con la combinacin de teclas Ctrl-I. Figura 5.6 Informacin rpida automtica
Marcadores Puede usar marcadores para marcar lneas de cdigo en el editor de cdigo para que pueda volver ms tarde a ellas. Lo comandos para alternar marcadores y para desplazarse por los marcadores existentes estn disponibles en el men Edicin, elemento del men Marcadores, o en la barra de herramientas Edicin. Para obtener ms informacin Para obtener ms informacin acerca de las combinaciones de teclas para tener acceso a stas y otras funciones en la ventana del Editor de cdigo, vea "Crear mtodos abreviados de teclado" en el captulo 7.
11
Conceptos bsicos del cdigo Esta seccin presenta informacin acerca de la mecnica de escritura de cdigo, incluyendo dividir y combinar lneas de cdigo, agregar comentarios al cdigo, usar nmeros en el cdigo y seguir las convenciones de nomenclatura en Visual Basic. Dividir una nica instruccin en varias lneas Puede dividir una instruccin larga en varias lneas en la ventana del Editor de cdigo si utiliza el carcter de continuacin de lnea (un espacio en blanco seguido de un signo de subrayado). La utilizacin de este carcter puede hacer que sea ms fcil leer el cdigo, tanto en la pantalla como impreso en papel. El cdigo siguiente se ha dividido en tres lneas mediante caracteres de continuacin de lnea ( _): Data1.RecordSource = _ "SELECT * FROM Titles, Publishers" _ & "WHERE Publishers.PubId = Titles.PubID _ & "AND Publishers.State = 'CA'" No puede poner un comentario despus de un carcter de continuacin de lnea en la misma lnea. Tambin hay algunas limitaciones sobre dnde se puede usar el carcter de continuacin de lnea. Combinar instrucciones en una lnea Normalmente hay una instruccin de Visual Basic por lnea y no hay ningn terminador de instruccin. Sin embargo, puede colocar dos o ms instrucciones en una lnea si utiliza un signo de dos puntos (:) para separarlas: Text1.Text = "Hola" : Red = 255 : Text1.BackColor = _ Red Sin embargo, para hacer el cdigo ms legible, es mejor colocar cada instruccin en una lnea distinta. Para obtener ms informacin Para obtener ms informacin, vea "Especificaciones, limitaciones y formatos de archivos de Visual Basic". Agregar comentarios al cdigo Segn vaya leyendo los ejemplos de esta gua, a menudo ver el smbolo de comentario ('). Este smbolo indica a Visual Basic que pase por alto las palabras que van a continuacin de l. Estas palabras son comentarios situados en el cdigo para el desarrollador y otros programadores que vayan a examinar despus el cdigo. Por ejemplo: ' Este comentario comienza en el borde izquierdo de ' la pantalla. 12
Text1.Text = "Hola" ' Pone un saludo amistoso ' en el cuadro de texto. Los comentarios pueden seguir a una instruccin en la misma lnea o pueden ocupar una lnea completa. Ambos se ilustran en el cdigo anterior. Recuerde que los comentarios no pueden ir detrs de un carcter de continuacin de lnea en la misma lnea. Nota Puede agregar o eliminar smbolos que indican comentarios en un bloque de cdigo seleccionando dos o ms lneas de cdigo y seleccionando los botones Bloque con comentarios o Bloque sin comentarios en la barra de herramientas Edicin. Descripcin de los sistemas de numeracin La mayora de los nmeros de este documento son decimales (base 10). Pero en ocasiones es conveniente usar nmeros hexadecimales (base 16) o nmeros octales (base 8). Visual Basic representa los nmeros hexadecimales con el prefijo &H y los octales con &O. La tabla siguiente muestra los mismos nmeros en formato decimal, octal y hexadecimal. Decimal Octal Hexadecimal 9 &O11 &H9 15 &O17 &HF 16 &O20 &H10 20 &O24 &H14 255 &O377 &HFF
Normalmente no tendr que aprender los sistemas hexadecimal u octal ya que el equipo puede trabajar con nmeros en cualquier sistema. Sin embargo, algunos sistemas de numeracin se prestan a determinadas tareas, como la utilizacin de nmeros hexadecimales para configurar los colores de la pantalla y los controles. Convenciones de nomenclatura en Visual Basic Cuando escribe cdigo en Visual Basic, declara y asigna nombre a muchos elementos (procedimientos Sub y Function, variables, constantes, etc.). Los nombres de procedimientos, variables y constantes que declara en el cdigo de Visual Basic deben seguir estas directrices: 13
Deben comenzar por una letra. No pueden contener puntos o caracteres de declaracin de tipos (caracteres especiales que especifican tipos de datos. No pueden superar los 255 caracteres. Los nombres de controles, formularios, clases y mdulos no deben exceder los 40 caracteres. No pueden ser iguales que las palabras clave restringidas. Una palabra clave restringida es una palabra que Visual Basic utiliza como parte de su lenguaje. Esto incluye a las instrucciones predefinidas (como If y Loop), funciones (como Len y Abs) y operadores (como Or y Mod). Para obtener ms informacin Para ver la lista completa de palabras clave, vea la Referencia del lenguaje. Los formularios y controles pueden tener el mismo nombre que una palabra clave restringida. Por ejemplo, puede tener un control que se llame Loop. Sin embargo, en el cdigo no puede hacer referencia a ese control de la forma habitual, ya que Visual Basic supone que se est refiriendo a la palabra clave Loop. Por ejemplo, este cdigo provoca un error: Loop.Visible = True ' Provoca un error. Para referirse a un formulario o un control que tenga el mismo nombre que una palabra clave restringida, debe calificarlo o ponerlo entre corchetes: [ ]. Por ejemplo, este cdigo no provoca un error: MiForm.Loop.Visible = True ' Calificado con el nombre del ' formulario. [Loop].Visible = True ' Con corchetes tambin funciona. Puede usar corchetes de esta forma cuando haga referencia a formularios y controles, pero no cuando declare una variable o defina un procedimiento con el mismo nombre que una palabra clave restringida. Tambin se pueden usar corchetes para que Visual Basic acepte nombres de otras bibliotecas de tipos que entren en conflicto con palabras clave restringidas. Nota Puesto que escribir corchetes puede resultar tedioso, evite la utilizacin de palabras clave restringidas en los nombres de formularios y controles. Sin embargo, puede usar esta tcnica si una versin posterior de Visual Basic define una palabra clave nueva que entre en conflicto con un nombre de formulario o control existente y est actualizando el cdigo para que funcione con la versin nueva.
14
Introduccin a las variables, constantes y tipos de datos A menudo necesitar almacenar valores temporalmente cuando est realizando clculos con Visual Basic. Por ejemplo, puede que desee calcular diversos valores, compararlos y realizar distintas operaciones con ellos, dependiendo de los resultados de la comparacin. Necesitar conservar los valores si desea compararlos, pero no necesitar almacenarlos en una propiedad. Visual Basic, como la mayora de los lenguajes de programacin, utiliza variables para almacenar valores. Las variables tienen un nombre (la palabra que utiliza para referirse al valor que contiene la variable) y un tipo de dato (que determina la clase de datos que puede almacenar la variable). Se pueden usar matrices para almacenar colecciones indexadas de variables relacionadas. Las constantes tambin almacenan valores pero, como su nombre indica, estos valores permanecen constantes durante la ejecucin de la aplicacin. La utilizacin de constantes puede hacer ms legible el cdigo ya que proporciona nombres significativos en vez de nmeros. Visual Basic incorpora una serie de constantes, pero puede crear sus propias constantes. Los tipos de datos controlan el almacenamiento interno de datos en Visual Basic. De forma predeterminada, Visual Basic utiliza el tipo de dato Variant. Hay otros tipos de datos disponibles que le permiten optimizar el cdigo en cuanto a velocidad y tamao cuando no necesite la flexibilidad que proporciona el tipo Variant. Para obtener informacin ms detallada, vea: Variables Introduccin a las variables: qu son y cmo usarlas. Descripcin del alcance de las variables Anlisis de cmo se aplica el alcance a las variables. Temas avanzados sobre variables Informacin detallada sobre las variables. Variables estticas Introduccin a la utilizacin de variables estticas para preservar valores. Constantes Introduccin a la utilizacin de constantes para representar valores. Tipos de datos Anlisis de los tipos de datos disponibles en Visual Basic. Temas avanzados sobre el tipo de dato Variant Informacin detallada sobre el tipo de dato Variant. Matrices Introduccin a la utilizacin de matrices para grupos de valores. Matrices dinmicas Anlisis sobre la utilizacin de matrices dinmicas para trabajar con grupos de valores
15
Variables En Visual Basic puede usar variables para almacenar valores temporalmente durante la ejecucin de una aplicacin. Las variables tienen un nombre (la palabra que utiliza para referirse al valor que contiene la variable) y un tipo de dato (que determina la clase de datos que la variable puede almacenar). Puede considerar una variable como un marcador de posicin en memoria de un valor desconocido. Por ejemplo, suponga que est creando un programa para una frutera que haga un seguimiento del precio de las manzanas. No sabe el precio de una manzana o la cantidad que se ha vendido hasta que no se produce realmente la venta. Puede usar dos variables para almacenar los valores desconocidos (vamos a llamarlos PrecioManzanas y ManzanasVendidas). Cada vez que se ejecuta el programa, el usuario especifica los valores de las dos variables. Para calcular las ventas totales y mostrarlas en un cuadro de texto llamado txtVentas, el cdigo debera parecerse al siguiente: txtVentas.txt = PrecioManzanas * ManzanasVendidas La expresin devuelve un total distinto cada vez, dependiendo de los valores que indique el usuario. Las variables le permiten realizar un clculo sin tener que saber antes cules son los valores especificados. En este ejemplo, el tipo de dato de PrecioManzanas es Currency; el tipo de dato de ManzanasVendidas es Integer. Las variables pueden representar otros muchos valores como valores de texto, fechas, diversos tipos numricos e incluso objetos. Almacenar y recuperar datos en variables Utilice instrucciones de asignacin para realizar clculos y asignar el resultado a una variable: ManzanasVendidas = 10 ' Se pasa el valor 10 a ' la variable. ManzanasVendidas = ManzanasVendidas + 1 ' Se incrementa la variable. Observe que el signo igual del ejemplo es un operador de asignacin, no un operador de igualdad; el valor (10) se asigna a la variable (ManzanasVendidas). Declarar variables Declarar una variable es decirle al programa algo de antemano. Se declara una variable mediante la instruccin Dim, proporcionando un nombre a la variable: Dim nombreVariable [As tipo] Las variables que se declaran en un procedimiento mediante la instruccin Dim slo existen mientras se ejecuta el procedimiento. Cuando termina el procedimiento, desaparece el valor de la variable. Adems, el valor de una variable de un procedimiento 16
es local de dicho procedimiento; es decir, no puede tener acceso a una variable de un procedimiento desde otro procedimiento. Estas caractersticas le permiten usar los mismos nombres de variables en distintos procedimientos sin preocuparse por posibles conflictos o modificaciones accidentales. El nombre de una variable: Debe comenzar con una letra. No puede incluir un punto o un carcter de declaracin de tipo. No debe exceder de 255 caracteres. Debe ser nica en el mismo alcance, que es el intervalo desde el que se puede hacer referencia a la variable: un procedimiento, formulario, etc. La clusula opcional As tipo de la instruccin Dim le permite definir el tipo de dato o de objeto de la variable que va a declarar. Los tipos de datos definen el tipo de informacin que almacena la variable. Algunos ejemplos de tipos de datos son String, Integer y Currency. Las variables tambin pueden contener objetos de Visual Basic u otras aplicaciones. Algunos ejemplos de tipos de objeto de Visual Basic, o clases, son Object, Form1 y TextBox. Para obtener ms informacin Para obtener ms informacin acerca de los objetos, vea "Programar con objetos" y "Programar con componentes". Los tipos de datos se explican con ms detalle en "Tipos de datos", ms adelante en este mismo captulo. Hay otras formas de declarar variables: Declarar una variable en la seccin Declaraciones de un mdulo de formulario, estndar o de clase, en vez de en un procedimiento, hace que la variable est disponible para todos los procedimientos del mdulo. Declarar una variable mediante la palabra clave Public hace que est accesible para toda la aplicacin. Declarar una variable local mediante la palabra clave Static preserva su valor aunque termine el procedimiento. Declaracin implcita No tiene por qu declarar una variable antes de usarla. Por ejemplo, podra escribir una funcin donde no hiciera falta declarar TempVal antes de usarla: Function SafeSqr(num) TempVal = Abs(num) SafeSqr = Sqr(TempVal) End Function 17
Visual Basic crea automticamente una variable con ese nombre, que puede usar como si la hubiera declarado explcitamente. Aunque es cmodo, puede provocar errores sutiles en el cdigo si se equivoca de nombre de variable. Por ejemplo, suponga que ha escrito esta funcin: Function SafeSqr(num) TempVal = Abs(num) SafeSqr = Sqr(TemVal) End Function A primera vista, parece igual. Pero como se ha escrito errneamente la variable TempVal en la tercera lnea, la funcin devolver siempre cero. Cuando Visual Basic encuentra un nombre nuevo, no puede averiguar si realmente desea declarar una variable nueva o simplemente ha escrito de forma errnea una variable existente, por lo que crea una variable nueva con ese nombre. Declaracin explcita Para evitar problemas al equivocarse de nombre en las variables, puede estipular que Visual Basic le avise siempre que encuentre un nombre que no se haya declarado explcitamente como una variable. Para declarar variables de forma explcita Incluya esta instruccin en la seccin Declaraciones del mdulo de clase, de formulario o estndar: Option Explicit o bien En el men Herramientas, elija Opciones, haga clic en la ficha Editor y active la opcin Requerir declaracin de variables. Esto inserta automticamente la instruccin Option Explicit en los mdulos nuevos, pero no en los ya creados, por lo que tendr que agregar manualmente Option Explicit a los mdulos existentes en el proyecto. Si hubiera tenido efecto dicha instruccin en el mdulo de formulario o estndar que contiene la funcin SafeSqr, Visual Basic habra reconocido TempVal y TemVal como variables no declaradas y habra generado errores para ambas. Debera, por tanto, declarar explcitamente TempVal: Function SafeSqr(num) Dim TempVal TempVal = Abs(num) SafeSqr = Sqr(TemVal) End Function 18
Ahora podr comprender el problema inmediatamente porque Visual Basic habr mostrado un mensaje de error para la variable TemVal que se ha escrito de forma incorrecta. Como la instruccin Option Explicit le ayuda a interceptar esta clase de errores, es conveniente usarla en todo el cdigo. Nota La instruccin Option Explicit funciona sobre mdulo a mdulo; debe colocarse en la seccin Declaraciones de todos los mdulos de formulario, estndar o de clase en los que desee que Visual Basic obligue a declarar explcitamente las variables. Si activa Requerir declaracin de variables, Visual Basic insertar Option Explicit en todos los mdulos de formulario, estndares o de clase siguientes, pero no lo agregar en el cdigo existente. Deber agregar manualmente Option Explicit a los mdulos ya existentes en el proyecto. Constantes A menudo ver que el cdigo contiene valores constantes que reaparecen una y otra vez. O puede que el cdigo dependa de ciertos nmeros que resulten difciles de recordar (nmeros que, por s mismos, no tienen un significado obvio). En estos casos, puede mejorar mucho la legibilidad del cdigo y facilitar su mantenimiento si utiliza constantes. Una constante es un nombre significativo que sustituye a un nmero o una cadena que no vara. Aunque una constante recuerda ligeramente a una variable, no puede modificar una constante o asignarle un valor nuevo como ocurre con una variable. Hay dos orgenes para las constantes: Constantes intrnsecas o definidas por el sistema proporcionadas por aplicaciones y controles. Las constantes de Visual Basic se muestran en Visual Basic (VB) y Visual Basic para aplicaciones (VBA) y las bibliotecas de objetos en el Examinador de objetos. Otras aplicaciones que proporcionan bibliotecas de objetos, como Microsoft Excel y Microsoft Project, tambin proporcionan una lista de constantes que puede usar con sus objetos, mtodos y propiedades. Tambin se definen constantes en la biblioteca de objetos de cada control ActiveX. Para obtener ms detalles acerca de la utilizacin del Examinador de objetos, vea "Programar con objetos". Las constantes simblicas o definidas por el usuario se declaran mediante la instruccin Const. Las constantes definidas por el usuario se describen en la prxima seccin, "Crear sus propias constantes". En Visual Basic, los nombres de constantes tienen un formato que combina maysculas y minsculas, con un prefijo que indica la biblioteca de objetos que define la constante. Las constantes de las bibliotecas de objetos de Visual Basic y Visual Basic para aplicaciones tienen el prefijo "vb"; por ejemplo, vbTileHorizontal. Se ha diseado el sistema de prefijos para evitar colisiones accidentales en casos donde las constantes tienen nombres idnticos y representan valores diferentes. Incluso con prefijos, es posible que dos bibliotecas de objetos puedan contener constantes idnticas que representen valores diferentes. La constante a la que se hace referencia en cada caso depende de la biblioteca de objetos que tenga mayor prioridad. Para obtener ms 19
informacin acerca de la modificacin de la prioridad de las bibliotecas de objetos, vea "Cuadro de dilogo Referencias" en el captulo 4. Para estar totalmente seguro de evitar colisiones en los nombres de constantes, puede calificar las referencias a constantes con la sintaxis siguiente: [nombreBiblioteca.][nombreMdulo.]nombreConstante nombreBiblioteca suele ser el nombre de clase del control o la biblioteca, nombreMdulo es el nombre del mdulo que define la constante y nombreConstante es el nombre de la constante. Cada uno de estos elementos se define en la biblioteca de objetos y se puede ver en el Examinador de objetos. Crear constantes propias La sintaxis para declarar una constante es la siguiente: [Public|Private] Const nombreConstante[As tipo] = expresin El argumento nombreConstante es un nombre simblico vlido (las reglas son las mismas que para crear nombres de variable) y expresin est compuesta por constantes y operadores de cadena o numricos; sin embargo, no puede usar llamadas a funciones en expresin. Una instruccin Const puede representar una cantidad matemtica o de fecha y hora: Const conPi = 3.14159265358979 Public Const conMaxPlanetas As Integer = 9 Const conFechaSalida = #1/1/95# Se puede usar tambin la instruccin Const para definir constantes de cadena: Public Const conVersion = "07.10.A" Const conNombreClave = "Enigma" Puede colocar ms de una declaracin de constante en una nica lnea si las separa con comas: Public Const conPi = 3.14, conMaxPlanetas = 9, conPobMundial = 6E+09 A menudo, la expresin del lado derecho del signo igual ( = ) es un nmero o cadena literal, pero tambin puede ser una expresin que d como resultado un nmero o una cadena (aunque la funcin no puede contener llamadas a funciones). Puede incluso definir constantes en trminos de constantes previamente definidas: Const conPi2 = conPi * 2 Una vez que defina las constantes, puede colocarlas en el cdigo para hacerlo ms legible. Por ejemplo: 20
Static SistemaSolar(1 To conMaxPlanetas) If numPersonas > conPopMundial Then Exit Sub Alcance de las constantes definidas por el usuario Una instruccin Const tiene igual alcance que una declaracin de variable y se le aplican las mismas reglas: Para crear una constante que slo exista en un procedimiento, declrela dentro del procedimiento. Para crear una constante disponible para todos los procedimientos de un mdulo, pero no para el cdigo que est fuera del mdulo, declrela en la seccin Declaraciones del mdulo. Para crear una constante disponible en toda la aplicacin, declare la constante en la seccin Declaraciones de un mdulo estndar y coloque delante de Const la palabra clave Public. No se pueden declarar las constantes pblicas en un mdulo de clase o de formulario. Para obtener ms informacin Para obtener ms informacin acerca del alcance, vea "Descripcin del alcance de las variables", anteriormente en este mismo captulo. Evitar referencias circulares Como es posible definir constantes en trminos de otras constantes, deber tener cuidado para no establecer un ciclo o referencia circular entre dos o ms constantes. Se produce un ciclo cuando se tienen dos o ms constantes pblicas, cada una de las cuales est definida en funcin de la otra. Por ejemplo: ' En Module 1: Public Const conA = conB * 2 ' Disponible en toda la ' aplicacin. ' En Module 2: Public Const conB = conA / 2 ' Disponible en toda la ' aplicacin. Si se produce un ciclo, Visual Basic generar un error cuando intente ejecutar la aplicacin. No puede ejecutar el cdigo hasta que resuelva la referencia circular. Para evitar la creacin de un ciclo, restrinja todas las constantes pblicas a un nico mdulo o, al menos, al menor nmero posible de mdulos.
21
Tipos de datos Las variables son marcadores de posicin que se utilizan para almacenar valores; tienen nombre y un tipo de dato. El tipo de dato de la variable determina cmo se almacenan los bits que representan esos valores en la memoria del equipo. Cuando declare una variable, tambin puede proporcionarle un tipo de dato. Todas las variables tienen un tipo de dato que determina la clase de datos que pueden almacenar. De forma predeterminada, si no proporciona un tipo de dato, la variable toma el tipo de dato Variant. El tipo de dato Variant es como un camalen; puede representar diferentes tipos de datos en distintas situaciones. No tiene que convertir estos tipos de datos cuando los asigne a una variable Variant: Visual Basic realiza automticamente cualquier conversin necesaria. Sin embargo, si sabe que una variable almacenar siempre un tipo de dato determinado, Visual Basic tratar de forma ms eficiente los datos si declara la variable con ese tipo. Por ejemplo, se representa mejor una variable que va almacenar nombres de personas como el tipo de dato String, ya que un nombre est siempre compuesto de caracteres. Los tipos de datos se aplican a otras cosas adems de a las variables. Cuando asigna un valor a una propiedad, dicho valor tiene un tipo de dato; los argumentos de las funciones tienen tambin tipos de datos. De hecho, todo lo relacionado con datos en Visual Basic tiene un tipo de dato. Tambin puede declarar matrices de cualquiera de los tipos fundamentales. Para obtener ms informacin Para obtener ms informacin, vea la seccin "Matrices", ms adelante en este captulo. La seleccin de tipos de datos para mejorar el rendimiento de la aplicacin se explica en "Disear buscando el rendimiento y la compatibilidad". Declarar variables con tipos de datos Antes de usar una variable que no sea Variant debe usar las instrucciones Private, Public, Dim o Static para declararla As tipo. Por ejemplo, la siguiente instruccin declara un tipo Integer, Double, String y Currency, respectivamente: Private I As Integer Dim Cantidad As Double Static SuNombre As String Public PagadoPorJuan As Currency La instruccin de declaracin puede combinar varias declaraciones, como en las instrucciones siguientes: Private I As Integer, Amt As Double Private SuNombre As String, PagadoPorJuan As Currency Private Prueba, Cantidad, J As Integer 22
Nota Si no proporciona un tipo de dato, se asigna a la variable el tipo predeterminado. En el ejemplo anterior, las variables Prueba y Cantidad tienen un tipo de dato Variant. Esto puede sorprenderle si su experiencia con otros lenguajes de programacin le lleva a esperar que todas las variables contenidas en la misma instruccin de declaracin tengan el mismo tipo que ha especificado (en este caso, Integer). Tipos de datos numricos Visual Basic proporciona varios tipos de datos numricos: Integer, Long (entero largo), Single (signo flotante de simple precisin), Double (signo flotante de doble precisin) y Currency. Usar un tipo de dato numrico emplea normalmente menos espacio de almacenamiento que un tipo Variant. Si sabe que una variable siempre va a almacenar nmeros enteros (como 12) en vez de nmeros fraccionarios (como 3,57), declrela como un tipo Integer o Long. Las operaciones con enteros son ms rpidas y estos tipos consumen menos memoria que otros tipos de datos. Resultan especialmente tiles como variables de contador en bucles For...Next. Para obtener ms informacin Para obtener ms informacin acerca de las estructuras de control, vea "Introduccin a las estructuras de control", ms adelante en este mismo captulo. Si la variable contiene una fraccin, declrela como variable Single, Double o Currency. El tipo de dato Currency acepta hasta cuatro dgitos a la derecha del separador decimal y hasta quince dgitos a la izquierda; es un tipo de dato de signo fijo adecuado para clculos monetarios. Los nmeros de signo flotante (Single y Double) tienen ms intervalo que Currency, pero pueden estar sujetos a pequeos errores de redondeo. Nota Los valores de signo flotante se pueden expresar como mmmEeee o mmmDeee, donde mmm es la mantisa y eee el exponente (potencia de 10). El valor positivo ms alto de un tipo de dato Single es 3,402823E+38 3,4 veces 10 a la 38 a potencia; el valor positivo ms alto de un tipo de dato Double es 1,79769313486232D+308 o alrededor de 1,8 veces 10 a la 308 a potencia. Si utiliza D para separar la mantisa y el exponente en un literal numrico, el valor se tratar como un tipo de dato Double. Igualmente, usar E de la misma manera hace que el valor se trate como un tipo de dato Single. El tipo de dato Byte Si la variable contiene datos binarios, declrela como matriz de tipo Byte. (Las matrices se describen en "Matrices", ms adelante en este mismo captulo). Usar variables Byte para almacenar datos binarios los preserva durante las conversiones de formato. Cuando se convierten las variables String entre los formatos ANSI y Unicode, los datos binarios de la variable resultan daados. Visual Basic puede convertir automticamente entre ANSI y Unicode al: Leer archivos Escribir archivos 23
Llamar a archivos DLL Llamar a mtodos y propiedades en objetos Todos los operadores que funcionan con enteros funcionan con el tipo de dato Byte excepto el de resta unaria. Puesto que Byte es un tipo sin signo con el intervalo 0-255, no puede representar un valor negativo. As, para la resta unaria, Visual Basic convierte antes el tipo Byte en un entero con signo. Es posible asignar todas las variables numricas entre s y a variables del tipo Variant. Visual Basic redondea en vez de truncar la parte fraccionaria de un nmero de signo flotante antes de asignarlo a un entero. Para obtener ms informacin Para obtener ms detalles acerca de las conversiones Unicode y ANSI, vea el captulo 16 "Aspectos internacionales". El tipo de dato String Si tiene una variable que siempre contendr una cadena y nunca un valor numrico, puede declararla del tipo String: Private S As String As podr asignar cadenas a esta variable y manipularla mediante funciones de cadena: S = "Base de datos" S = Left(S, 4) De forma predeterminada, una variable o argumento de cadena es una cadena de longitud variable; la cadena crece o disminuye segn le asigne nuevos datos. Tambin puede declarar cadenas de longitud fija. Especifique una cadena de longitud fija con esta sintaxis: String * tamao Por ejemplo, para declarar una cadena que tiene siempre 50 caracteres de longitud, utilice un cdigo como este: Dim NombreEmp As String * 50 Si asigna una cadena con menos de 50 caracteres, NombreEmp se rellenar con espacios en blanco hasta el total de 50 caracteres. Si asigna una cadena demasiado larga a una cadena de longitud fija, Visual Basic simplemente truncar los caracteres. Puesto que las cadenas de longitud fija se rellenan con espacios al final, ver que las funciones Trim y RTrim, que quitan los espacios en blanco, resultan muy tiles cuando se trabaja con ellas. 24
Las cadenas de longitud fija se pueden declarar en mdulos estndar como Public o Private. En mdulos de clase y formulario, las cadenas de longitud fija deben declararse como Private. Para obtener ms informacin Vea "Funciones LTrim, RTrim y Trim" en la Referencia del lenguaje. Intercambiar cadenas y nmeros Puede asignar una cadena a una variable numrica si la cadena representa un valor numrico. Tambin es posible asignar un valor numrico a una variable de cadena. Por ejemplo, coloque un botn de comando, un cuadro de texto y un cuadro de lista en un formulario. Escriba el cdigo siguiente en el evento Click del botn de comando. Ejecute la aplicacin y haga clic en el botn de comando. Private Sub Command1_Click() Dim intX As Integer Dim strY As String strY = "100.23" intX = strY ' Pasa la cadena a una variable numrica. List1.AddItem Cos(strY) ' Agrega el coseno del nmero de la ' cadena al cuadro de lista. strY = Cos(strY) ' Pasa el coseno a la variable de cadena. Text1.Text = strY ' Se imprime la variable de cadena en el ' cuadro de texto. End Sub Visual Basic convertir automticamente las variables al tipo de dato apropiado. Debe tener cuidado cuando intercambie nmeros y cadenas, ya que pasar un valor no numrico a una cadena producir un error de tiempo de ejecucin. El tipo de dato Boolean Si tiene una variable que siempre contendr solamente informacin del tipo verdadero y falso, s y no o activado o desactivado, puede declararla del tipo Boolean. El valor predeterminado de Boolean es False. En el siguiente ejemplo, blnEjecutando es una variable Boolean que almacena un simple s o no. Dim blnEjecutando As Boolean ' Comprueba si la cinta est en marcha. If Recorder.Direction = 1 Then blnEjecutando = True End if 25
El tipo de dato Date Los valores de fecha y hora pueden almacenarse en el tipo de dato especfico Date en variables Variant. En ambos tipos se aplican las mismas caractersticas generales a las fechas. Para obtener ms informacin Vea la seccin "Valores de fecha y hora almacenados en tipos Variant" en "Temas avanzados sobre Variant". Cuando se convierten otros tipos de datos numricos en Date, los valores que hay a la izquierda del signo decimal representan la informacin de fecha, mientras que los valores que hay a la derecha del signo decimal representan la hora. Medianoche es 0 y medioda es 0.5. Los nmeros enteros negativos representan fechas anteriores al 30 de diciembre de 1899. El tipo de dato Object Las variables Object se almacenan como direcciones de 32 bits (4 bytes) que hacen referencia a objetos dentro de una aplicacin o de cualquier otra aplicacin. Una variable declarada como Object es una variable que puede asignarse subsiguientemente (mediante la instruccin Set) para referirse a cualquier objeto real reconocido por la aplicacin. Dim objDb As Object Set objDb = OpenDatabase("c:\Vb5\biblio.mdb") Cuando declare variables de objeto, intente usar clases especficas (como TextBox en vez de Control o, en el caso anterior, Database en vez de Object) mejor que el tipo genrico Object. Visual Basic puede resolver referencias a las propiedades y mtodos de objetos con tipos especficos antes de que ejecute una aplicacin. Esto permite a la aplicacin funcionar ms rpido en tiempo de ejecucin. En el Examinador de objetos se muestran las clases especficas. Cuando trabaje con objetos de otras aplicaciones, en vez de usar Variant o el tipo genrico Object, declare los objetos como se muestran en la lista Clases en el Examinador de objetos. Esto asegura que Visual Basic reconozca el tipo especfico de objeto al que est haciendo referencia, lo que permite resolver la referencia en tiempo de ejecucin. Para obtener ms informacin Para obtener ms informacin acerca de la creacin y asignacin de objetos y variables de objetos, vea "Crear objetos" ms adelante en este mismo captulo. Convertir tipos de datos Visual Basic proporciona varias funciones de conversin que puede usar para convertir valores en tipos de datos especficos. Por ejemplo, para convertir un valor a Currency, utilice la funcin CCur: 26
PagoPorSemana = CCur(horas * PagoPorHora) Funciones de conversin Convierten una expresin en Cbool Boolean Cbyte Byte Ccur Currency Cdate Date CDbl Double Cint Integer CLng Long CSng Single CStr String Cvar Variant CVErr Error
Nota Los valores que se pasan a una funcin de conversin deben ser vlidos para el tipo de dato de destino o se producir un error. Por ejemplo, si intenta convertir un tipo Long en un Integer, el tipo Long debe estar en el intervalo vlido del tipo de dato Integer. Para obtener ms informacin Busque las funciones especficas de conversin en la Referencia del lenguaje. El tipo de dato Variant Una variable Variant es capaz de almacenar todos los tipos de datos definidos en el sistema. No tiene que convertir entre esos tipos de datos si los asigna a una variable Variant; Visual Basic realiza automticamente cualquier conversin necesaria. Por ejemplo: 27
Dim AlgnValor ' De forma predeterminada es un tipo Variant. AlgnValor = "17" ' AlgnValor contiene "17" (cadena de dos ' caracteres). AlgnValor = AlgnValor - 15 ' AlgnValor ahora contiene ' el valor numrico 2. AlgnValor = "U" & AlgnValor ' AlgnValor ahora contiene ' "U2" (una cadena de dos ' caracteres). Si bien puede realizar operaciones con variables Variant sin saber exactamente el tipo de dato que contienen, hay algunas trampas que debe evitar. Si realiza operaciones aritmticas o funciones sobre un Variant, el Variant debe contener un nmero. Para obtener ms detalles, vea la seccin "Valores numricos almacenados en tipos Variant" en "Temas avanzados sobre Variant". Si est concatenando cadenas, utilice el operador & en vez del operador +. Para obtener ms detalles, vea la seccin "Cadenas almacenadas en tipos Variant" en "Temas avanzados sobre Variant". Adems de poder actuar como otros tipos de datos estndar, los Variant tambin pueden contener tres valores especiales: Empty, Null y Error. El valor Empty A veces necesitar saber si se ha asignado un valor a una variable existente. Una variable Variant tiene el valor Empty antes de asignarle un valor. El valor Empty es un valor especial distinto de 0, una cadena de longitud cero ("") o el valor Null. Puede probar el valor Empty con la funcin IsEmpty: If IsEmpty(Z) Then Z = 0 Cuando un Variant contiene el valor Empty, puede usarlo en expresiones; se trata como un 0 o una cadena de longitud cero, dependiendo de la expresin. El valor Empty desaparece tan pronto como se asigna cualquier valor (incluyendo 0, una cadena de longitud cero o Null) a una variable Variant. Puede establecer una variable Variant de nuevo como Empty si asigna la palabra clave Empty al Variant. El valor Null El tipo de dato Variant puede contener otro valor especial: Null. Null se utiliza comnmente en aplicaciones de bases de datos para indicar datos desconocidos o que faltan. Debido a la forma en que se utiliza en las bases de datos, Null tiene algunas caractersticas nicas: Las expresiones que utilizan Null dan como resultado siempre un Null. As, se dice que Null se "propaga" a travs de expresiones; si cualquier parte de la expresin da como resultado un Null, la expresin entera tiene el valor Null. 28
Al pasar un Null, un Variant que contenga un Null o una expresin que d como resultado un Null como argumento de la mayora de las funciones hace que la funcin devuelva un Null. Los valores Null se propagan a travs de funciones intrnsecas que devuelven tipos de datos Variant. Tambin puede asignar un Null mediante la palabra clave Null: Z = Null Puede usar la funcin IsNull para probar si una variable Variant contiene un Null: If IsNull(X) And IsNull(Y) Then Z = Null Else Z = 0 End If Si asigna Null a una variable de un tipo que no sea Variant, se producir un error interceptable. Asignar Null a una variable Variant no provoca ningn error y el Null se propagar a travs de expresiones que contengan variables Variant (Null no se propaga a travs de determinadas funciones). Puede devolver Null desde cualquier procedimiento Function con un valor de devolucin de tipo Variant. Null no se asigna a las variables a menos que se haga explcitamente, por lo que si no utiliza Null en su aplicacin, no tendr que escribir cdigo que compruebe su existencia y lo trate. Para obtener ms informacin Para obtener ms informacin acerca de cmo usar Null en expresiones, vea "Null" en la Referencia del lenguaje. El valor Error En un Variant, Error es un valor especial que se utiliza para indicar que se ha producido una condicin de error en un procedimiento. Sin embargo, a diferencia de otros tipos de error, no se produce el tratamiento de errores a nivel normal de aplicacin. Esto le permite a usted o a la propia aplicacin elegir alternativas basadas en el valor del error. Los valores de error se crean convirtiendo nmeros reales en valores de error mediante la funcin CVErr. Para obtener ms informacin Para obtener ms informacin acerca de cmo usar el valor Error en expresiones, vea "Funcin CVErr" en la Referencia del lenguaje. Para obtener ms informacin acerca del tratamiento de errores, vea el captulo 13 "Depurar el cdigo y tratar errores". Para obtener ms informacin acerca del tipo de dato Variant, vea "Temas avanzados sobre Variant".
29
Dim (Instruccin) Declara variables y les asigna espacio de almacenamiento. Sintaxis Dim [WithEvents] nombre_variable[([subndices])] [As [New] tipo] [, [WithEvents] nombre_variable[([subndices])] [As [New] tipo]] . . . La sintaxis de la instruccin Dim consta de las siguientes partes: Parte Descripcin WithEvents Opcional. Palabra clave que especifica que nombre_variable es una variable de objeto utilizada para responder a eventos desencadenados por un objeto ActiveX. WithEvents solamente es vlido en mdulos de clase. Puede declarar tantas variables individuales como desee mediante WithEvents, pero no puede crear matrices con WithEvents. No puede utilizar New con WithEvents. nombre_ variable Requerido. Nombre de la variable; sigue las convenciones estndar de nombre de variable. subndices Opcional. Dimensiones de la variable de matriz; se pueden declarar hasta 60 dimensiones mltiples. El argumento subndices utiliza la sintaxis siguiente: [inferior To] superior [, [inferior To] superior] . . . Cuando no se declara especficamente en inferior, el lmite inferior de una matriz se controla mediante la instruccin Option Base. Este lmite inferior es cero si no hay ninguna instruccin Option Base. New Opcional. Palabra clave que habilita la creacin implcita de un objeto. Si utiliza New cuando declara la variable de objeto, se crea una nueva instancia del objeto como primera referencia, de forma que no tiene que utilizar la instruccin Set para asignar la referencia del objeto. La palabra clave New no se puede utilizar para declarar variables de cualquier tipo de datos, intrnseco, para declarar instancias de objetos dependientes ni con WithEvents. tipo Opcional. Tipo de datos de la variable; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (actualmente no admitida), 30
Date, String (para cadenas de longitud variable), String * length (para cadenas de longitud fija), Object, Variant, un tipo definido por el usuario, o un tipo de objeto. Utilice una clusula distinta As tipo para cada variable que defina.
Comentarios Las variables declaradas con Dim en el nivel de mdulo estn disponibles para todos los procedimientos disponibles slo dentro de ese mdulo. En el nivel de procedimiento, las variables slo estn disponibles dentro de ese procedimiento. Utilice la instruccin Dim en el nivel de mdulo o de procedimiento para declarar el tipo de datos de una variable. Por ejemplo, la siguiente instruccin declara una variable como Integer. Dim NmeroDeEmpleados As Integer Tambin puede utilizar una instruccin Dim para declarar el tipo de objeto de una variable. La siguiente lnea declara una variable para una nueva instancia de una hoja de clculo. Dim X As New Worksheet Si no utiliza la palabra clave New al declarar una variable de objeto, la variable que se refiere al objeto debe asignarse a un objeto existente mediante la instruccin Set antes de su uso. Hasta que se le asigne un objeto, la variable de objeto declarada tiene el valor especial Nothing, el cual indica que no se refiere a ninguna instancia en particular de un objeto. Tambin puede utilizar la instruccin Dim con parntesis vacos para declarar matrices dinmicas. Despus de declarar una matriz dinmica, use la instruccin ReDim dentro de un procedimiento para definir el nmero de dimensiones y elementos de la matriz. Si intenta volver a declarar una dimensin para una variable de matriz cuyo tamao se ha especificado explcitamente en una instruccin Private, Public o Dim, ocurrir un error. Si no especifica un tipo de datos o un tipo de objeto y no existe ninguna instruccin Deftipo en el mdulo, la variable predeterminada ser Variant. Cuando se inicializan variables, una variable numrica se inicializa con 0, una cadena de longitud variable se inicializa con una cadena de longitud 0 ("") y una cadena de longitud fija se llena con ceros. Las variables Variant se inicializan con Empty. Cada elemento de una variable de un tipo definido por el usuario se inicializa como si fuera una variable distinta. Nota Cuando utiliza la instruccin Dim en un procedimiento, generalmente pone la instruccin Dim al principio del mismo. 31
Option Explicit (Instruccin) 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 Deftipo. Nota Utilice Option Explicit para evitar escribir incorrectamente el nombre de una variable existente o para evitar confusiones en el cdigo, donde el alcance de la variable no est claro.
32
Resumen de tipos de datos La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamao de almacenamiento y el intervalo. Tipo de datos Tamao de almacenamiento Intervalo Byte 1 byte 0 a 255 Boolean 2 bytes True o False Integer 2 bytes -32,768 a 32,767 Long (entero largo) 4 bytes -2,147,483,648 a 2,147,483,647 Single (coma flotante/ precisin simple) 4 bytes -3,402823E38 a 1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos Double (coma flotante/ precisin doble) 8 bytes -1,79769313486232E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos Currency (entero a escala) 8 bytes -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Decimal 14 bytes +/- 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 33
Date 8 bytes 1 de enero de 100 a 31 de diciembre de 9999 Object 4 bytes Cualquier referencia a tipo Object String (longitud variable) 10 bytes + longitud de la cadena Desde 0 a 2.000 millones String (longitud fija) Longitud de la cadena Desde 1 a 65.400 aproximadamente Variant (con nmeros) 16 bytes Cualquier valor numrico hasta el intervalo de un tipo Double Variant (con caracteres) 22 bytes + longitud de la cadena El mismo intervalo que para un tipo String de longitud variable Definido por el usuario (utilizando Type) Nmero requerido por los elementos El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.
Nota Las matrices de cualquier tipo de datos requieren 20 bytes de memoria ms cuatro bytes para cada dimensin de matriz, ms el nmero de bytes que ocupan los propios datos. Puede calcular la memoria que ocupan los datos multiplicando el nmero de elementos de datos por el tamao de cada elemento. Por ejemplo, los datos de una matriz unidimensional que consten de cuatro elementos de datos tipo Integer de dos bytes cada uno, ocupan ocho bytes. Los ocho bytes que requieren los datos ms los 24 bytes necesarios para la matriz suman un requisito total de memoria de 32 bytes para dicha matriz. Un tipo Variant que contiene una matiz requiere 12 bytes ms que la matriz por s sola.
34
Option Base (Instruccin) Se usa en el nivel de mdulo para declarar el lmite inferior predeterminado para subndices de matriz. Sintaxis Option Base {0 | 1} Comentarios Como la base predeterminada es 0, la instruccin Option Base nunca se requiere. Sin embargo, si usa la instruccin debe aparecer en un mdulo antes de cualquier procedimiento. Option Base slo puede aparecer una vez en un mdulo y debe preceder a las declaraciones de matriz que incluyen las dimensiones. Nota La clusula To en las instrucciones Dim, Private, Public, ReDim y Static proporciona una forma ms flexible de controlar el intervalo de los subndices de una matriz. Sin embargo, si no establece explcitamente el lmite inferior con una clusula To, puede usar Option Base para cambiar el lmite inferior predeterminado a 1. La base de una matriz creada con la funcin Array o la palabra clave ParamArray es cero; Option Base no afecta a ParamArray (o la funcin Array, cuando se califica con el nombre de su biblioteca de tipo, por ejemplo VBA.Array). La instruccin Option Base slo afecta el lmite inferior de las matrices en el mdulo donde se ubica la instruccin. Deftipo (Instrucciones) Se usan en el nivel de mdulo para establecer el tipo de datos predeterminado para variables, argumentos pasado a procedimientos, y el valor devuelto por los procedimientos Function y Property Get cuyos nombres comienzan con los caracteres especificados. Sintaxis DefBool intervalo_letras[, intervalo_letras] . . . DefByte intervalo_letras[, intervalo_letras] . . . DefInt intervalo_letras[, intervalo_letras] . . . DefLng intervalo_letras[, intervalo_letras] . . . DefCur intervalo_letras[, intervalo_letras] . . . DefSng intervalo_letras[, intervalo_letras] . . . 35
DefDbl intervalo_letras[, intervalo_letras] . . . DefDec intervalo_letras[, intervalo_letras] . . . DefDate intervalo_letras[, intervalo_letras] . . . DefStr intervalo_letras[, intervalo_letras] . . . DefObj intervalo_letras[, intervalo_letras] . . . DefVar intervalo_letras[, intervalo_letras] . . . El argumento requerido intervalo_letras posee la sintaxis siguiente: letra1[-letra2] Los argumentos letra1 y letra2 especifican el intervalo de nombres para el cual puede establecer un tipo de datos predeterminado. Cada argumento representa la primera letra del nombre de la variable, argumento, procedimiento Function o procedimiento Property Get y puede ser cualquier letra del abecedario. En intervalo_letras no se distingue entre maysculas y minsculas. Comentarios El nombre de la instruccin determina el tipo de datos: Instruccin Tipo de datos DefBool Boolean DefByte Byte DefInt Integer DefLng Long DefCur Currency DefSng Single DefDbl Double 36
DefDec Decimal (no se admite actualmente) DefDate Date DefStr String DefObj Object DefVar Variant
Por ejemplo, en el siguiente fragmento de programa, Mensaje es una variable de cadena: DefStr A-Q . . . Mensaje = "Espacio de pila insuficiente." Una instruccin Deftipo slo afecta al mdulo donde se usa. Por ejemplo, una instruccin DefInt en un mdulo slo afecta al tipo de datos predeterminado de las variables, los argumentos pasados a procedimientos y el tipo devuelto para los procedimientos Function y Property Get declarados en ese mdulo; el tipo de datos predeterminado de variables, argumentos y tipos devueltos en otros mdulos no se ven afectados. Si no se declara explcitamente con una instruccin Deftipo, el tipo de datos predeterminado para todas las variables, todos los argumentos, todos los procedimientos Function y todos los procedimientos Property Get es Variant. Cuando especifica un intervalo de letras, generalmente define el tipo de datos para variables que comienzan con las letras de los 128 primeros caracteres del juego de caracteres. Sin embargo, cuando especifica el intervalo de letras AZ, establece el tipo de datos predeterminado para todas las variables, incluyendo cualquiera que comience con caracteres internacionales provenientes de la parte extendida del juego de caracteres (128255). Tras especificar el intervalo AZ no es posible seguir redefiniendo cualquier subintervalo de variables mediante instrucciones Deftipo. De hecho, una vez definido un intervalo, si incluye una letra definida anteriormente en otra instruccin Deftipo, ocurrir un error. Sin embargo, puede especificar explcitamente el tipo de datos de cualquier variable, definida o no, mediante una instruccin Dim con una clusula As tipo. Por ejemplo, puede usar el siguiente cdigo en el nivel de mdulo para definir una variable como Double incluso aunque el tipo de datos predeterminado sea Integer: DefInt A-Z Dim PorcentajeImpuesto As Double Las instrucciones Deftipo no afectan a elementos de tipos definidos por el usuario ya que estos deben declararse explcitamente. 37
ForNext (Instruccin) Descripcin Repite un grupo de instrucciones un nmero especificado de veces. Sintaxis For contador = inicio To fin [Step paso] [instrucciones] [Exit For] [instrucciones] Next La sintaxis de la instruccin For...Next tiene las siguientes partes: Parte Descripcin contador Requerido. Variable numrica que se utiliza como contador de bucle. La variable no puede ser Booleana ni un elemento de una matriz . inicio Requerido. Valor inicial de contador. fin Requerido. Valor final de contador. paso Cantidad que se cambia contador cada vez que se ejecuta el bucle. Si no se especifica, el valor predeterminado de paso es uno. instrucciones Una o ms instrucciones entre For y Next que se ejecutan el nmero de veces especificado. Comentarios El argumento paso puede ser positivo o negativo. El valor del argumento paso determina el procesamiento del bucle como se indica a continuacin: Valor El bucle se ejecuta si Positivo o 0 contador <= fin Negativo contador >= fin 38
Una vez iniciado el bucle y una vez se comienzan a ejecutar todas las instrucciones del bucle, se suma paso a contador. En este punto, las instrucciones del bucle se vuelven a ejecutar (basado en la misma comprobacin que produjo la ejecucin inicial del bucle), o se sale del bucle y contina la ejecucin con la instruccin que sigue a la instruccin Next.
Sugerencia Si cambia el valor de contador mientras est entro del bucle, puede dificultar ms la lectura y depuracin del cdigo.
Exit For slo se puede usar dentro de una estructura de control For Each...Next o For...Next para proporcionar una forma alternativa de salir. Se puede colocar cualquier nmero de instrucciones Exit For en cualquier lugar del bucle. Exit For se suele usar junto con la evaluacin de alguna condicin (por ejemplo, If...Then), y transfiere el control a la instruccin que sigue a Next. Puede anidar bucles For...Next colocando un bucle For...Next dentro de otro. Asigne a cada bucle un nombre de variable nico como contador. La siguiente construccin es correcta: For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 . . . Next Next Next
Format (Funcin) Devuelve un tipo Variant (String) que contiene una expresin formateada de acuerdo a las instrucciones contenidas en una expresin de formato. Sintaxis Format(expresin[, formato[, primerdadesemana[, primerdadeao]]]) La sintaxis de la funcin Format consta de las siguientes partes: Parte Descripcin 39
expresin Requerido. Cualquier expresin vlida. formato Opcional. Una expresin de formato definida por el usuario o con nombre vlida. primerdadesemana Opcional. Una constante que especifica el primer da de la semana. primerdadeao Opcional. Una constante que especifica la primera semana del ao.
Valores El argumento primerdadesemana tiene estos valores: Constante Valor Descripcin vbUseSystem 0 Utiliza el valor de API NLS. vbSunday 1 Domingo (predeterminado) vbMonday 2 Lunes vbTuesday 3 Martes vbWednesday 4 Mircoles vbThursday 5 Jueves vbFriday 6 Viernes vbSaturday 7 Sbado
El argumento primerdadeao tiene estos valores: Constante Valor Descripcin 40
vbUseSystem 0 Utiliza el valor de API NLS. vbFirstJan1 1 Comienza con la semana donde est el 1 de enero (predeterminado). vbFirstFourDays 2 Comienza con la primera semana del ao que tenga cuatro das como mnimo. vbFirstFullWeek 3 Comienza con la primera semana completa del ao.
Comentarios Para dar formatp Haga esto Nmeros Utilice formatos numricos con nombre predefinidos o cree formatos numricos definidos por el usuario. Fechas y horas Utilice formatos de fecha/hora con nombre predefinidos o cree formatos de fecha/hora definidos por el usuario. Nmeros seriales de fecha y hora Utilice formatos de fecha y hora o formatos numricos. Cadenas Cree sus propios formatos de cadena definidos por el usuario.
Si intenta dar formato a un nmero sin especificar formato, Format proporciona una funcionalidad similar a la de la funcin Str. Sin embargo, los nmeros positivos a los que se les ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor, mientras que los convertidos utilizando Str conservan el espacio inicial.
41
Formatos numricos definidos por el usuario (funcin Format) La tabla siguiente identifica los caracteres que puede utilizar para crear formatos definidos por el usuario: Carcter Descripcin Ninguno Muestra el nmero sin formato. (0) Marcador de posicin de dgito. Muestra un dgito o un cero. Si la expresin tiene un dgito en la posicin donde aparece el 0 en la cadena de formato, se muestra el dgito; de lo contrario, se muestra un cero en esa posicin. Si el nmero tiene menos dgitos que ceros (a cualquier lado del separador decimal) en la expresin de formato, se muestran los ceros a la izquierda o a la derecha. Si el nmero tiene ms dgitos a la derecha del separador decimal que ceros hay a la derecha del separador decimal en la expresin de formato, se redondea el nmero en tantos lugares decimales como ceros existan. Si el nmero tiene ms dgitos a la izquierda del separador decimal que ceros hay a la izquierda del separador decimal en la expresin de formato, se muestran los dgitos adicionales sin modificacin. (#) Marcador de posicin de dgito. Muestra un dgito o nada. Si la expresin tiene un dgito en la posicin donde aparece # en la cadena de formato, se muestra el dgito; de lo contrario, no se muestra nada en esa posicin. Este smbolo funciona como el marcador de posicin del dgito 0, excepto en que no se muestran los ceros a la izquierda o a la derecha si el nmero tiene los mismos o menos dgitos que caracteres # hay a cualquier lado del separador decimal en la expresin de formato. (.) Marcador de posicin decimal. En algunas configuraciones regionales, se utiliza una coma como separador decimal. El marcador de posicin decimal determina cuntos dgitos se muestran a la izquierda y a la derecha del separador decimal. Si la expresin de formato contiene slo signos de nmero a la izquierda de este smbolo, los nmeros menores de 1 comienzan con un separador decimal. Si se desea que siempre se muestre un cero a la izquierda en los nmeros fraccionarios, utilice 0 como marcador de posicin del primer dgito a la izquierda del separador decimal. El carcter real utilizado como marcador de posicin decimal en la salida con formato depende del formato de nmero reconocido por el 42
sistema. (%) Marcador de posicin de porcentaje. La expresin se multiplica por 100. El carcter de porcentaje (%) se inserta en la posicin donde aparece en la cadena de formato. (,) Separador de millar. En algunas configuraciones regionales, se utiliza un punto como separador de millar. El separador de millar separa los millares de las centenas en un nmero que tiene cuatro o ms lugares a la izquierda del separador decimal. Se especifica el uso estndar del separador de millar si el formato contiene un separador de millar rodeado por los marcadores de posicin de dgitos (0 o #). Dos separadores de millar adyacentes o un separador de millar inmediatamente a la izquierda del separador decimal (aunque no se especifique un decimal) significa "escalar el nmero dividindolo por 1000, redondendolo si es necesario". Por ejemplo, puede utilizar la cadena de formato "##0,," para representar 100 millones como 100. Los nmeros menores que un milln se muestran como 0. Dos separadores de millar adyacentes en cualquier posicin diferente a la inmediatamente a la izquierda del separador decimal se consideran simplemente como seal de que se est usando un separador de millar. El carcter real utilizado como separador de millar en la salida con formato depende del formato de nmero reconocido por el sistema. (:) Separador de hora. En algunas configuraciones regionales se pueden utilizar otros caracteres para representar el separador de hora. El separador de hora separa horas, minutos y segundos cuando los valores de hora tienen formato. El carcter real utilizado como separador de hora en formato viene determinado por las configuraciones del sistema. (/) Separador de fecha. En algunas configuraciones regionales se pueden utilizar otros caracteres para representar el separador de fecha. El separado de fecha separa el da, el mes y el ao cuando los valores de fecha tienen formato. El carcter real utilizado como separador de fecha en formato viene determinado por las configuraciones del sistema. (E- E+ e- e+) Formato de notacin cientfica. Si la expresin de formato contiene al menos un marcador de posicin de dgito(0 o #) a la derecha de E-, E+, e- o e+, el nmero se muestra en formato cientfico y se inserta E o e entre el nmero y su exponente. El nmero de marcadores de posicin de dgito a la derecha determina el nmero de dgitos en el exponente. Utilice E- o e- para colocar un signo menos junto a los exponentes negativos y E+ o 43
e+ para incluir un signo ms junto a los exponentes positivos. - + $ ( ) Muestra un carcter literal. Para mostrar un carcter diferente a los enumerados, escriba delante una barra inversa (\) o escrbalo entre comillas dobles (" "). (\) Muestra el carcter siguiente en la cadena de formato. Para mostrar un carcter que tiene un significado especial como un carcter literal, escriba delante barra inversa (\). La barra inversa propiamente dicha no se muestra. Utilizar la barra inversa es igual que poner entre comillas dobles el carcter siguiente. Para mostrar una barra inversa, utilice dos barras inversas (\\). Ejemplos de caracteres que no se pueden mostrar como caracteres literales son los caracteres de formato de fecha y de hora (a, c, d, h, m, n, p, q, s, t, w, y, / y :), los caracteres de formato numrico (#, 0, %, E, e, coma y punto) y los caracteres de formato de cadena (@, &, <, > y !). ("ABC") Muestra la cadena que hay entre comillas dobles (" "). Para incluir una cadena con formato desde el cdigo, debe utilizar Chr(34) para encerrar el texto (34 es el cdigo de carcter para las comillas dobles (" ").
44
Right (Funcin) Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado derecho de una cadena. Sintaxis Right(string, lenght) La sintaxis de la funcin Right tiene estos argumentos con nombre: Parte Descripcin string Requerido. Expresin de cadena desde la cual se devuelven los caracteres que estn ms a la derecha. Si string contiene Null, se devuelve Null. lenght Requerido, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a devolver. Si es 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de caracteres en string, se devuelve la cadena completa.
Comentarios Para determinar el nmero de caracteres en string, utilice la funcin Len. Nota Utilice la funcin RightB con datos de byte incluidos en una cadena. En lugar de especificar el nmero de caracteres para devolver, longitud especifica el nmero de bytes.