You are on page 1of 47

BREVE INTRODUCCION A

VISUAL BASIC

INTRODUCCION
Antecedentes histricos
El lenguaje de programacin BASIC (Beginner's All purpose Symbolic Instruction Code ) naci en el ao 1964 como una
herramienta destinado a principiantes, buscando una forma sencilla de realizar programas, empleando un lenguaje casi
igual al usado en la vida ordinaria ( en ingls), y con instrucciones muy sencillas y escasas. Teniendo en cuenta el ao de
su nacimiento, este lenguaje cubra casi todas las necesidades para la ejecucin de programas. Tngase en cuenta que
las mquinas existentes en aquella poca estaban estrenando los transistores como elementos de conmutacin, los
ciclos de trabajo llegaban a la impensable cifra de 10.000 por segundo y la memoria no pasaba de unos pocos ks en
toroides de ferrita.
La evolucin del BASIC por los aos 70 fue escasa, dado el auge que tomaron en aquella poca lenguajes de alto nivel
como el FORTRAN y el COBOL. En 1978 se defini una norma para unificar los Basics existentes crendose la normativa
BASIC STANDARD
Con la aparicin de los primeros ordenadores personales, dedicados comercialmente al usuario particular, all por la
primera mitad de los ochenta, el BASIC resurgi como lenguaje de programacin pensado para principiantes, y muchos
de estos pequeos ordenadores domsticos lo usaban como nico sistema operativo (Sinclair, Spectrum, Amstrad)
Con la popularizacin del PC, salieron varias versiones del BASIC que funcionaban en este tipo de ordenadores (Versiones
BASICA, GW-BASIC), pero todas estas versiones del BASIC no hicieron otra cosa que terminar de rematar este lenguaje.
Los programadores profesionales no llegaron a utilizarlo, habida cuenta de las desventajas de este lenguaje respecto a
otras herramientas (PASCAL, C, CLIPPER). El BASIC con estas versiones para PC lleg incluso a perder crdito entre los
profesionales de la informtica.
Las razones para ello eran obvias:
- No era un lenguaje estructurado.
- No existan herramientas de compilacin fiables.
- No dispona de herramientas de intercambio de informacin.
- No tena libreras.
- No se poda acceder al interior de la mquina.
- Un largo etctera de desventajas respecto a otros lenguajes de programacin.
Tal fue ese abandono por parte de los usuarios, que la aparicin del Quick-BASIC de Microsoft, una versin ya potente del
BASIC, que correga casi todos los defectos de las versiones pas prcticamente inadvertida, a no ser porque las ltimas
versiones del sistema operativo MS-DOS incluan una versin de Quick-BASIC algo recortada (Q-Basic) como un producto
mas dentro de la amplia gama de ficheros ejecutables que acompaan al sistema operativo, y aprovecha de l el editor
de textos (Cada vez que se llama al EDIT estamos corriendo el editor del Q-Basic).
Esta versin del popular BASIC ya es un lenguaje estructurado, lo que permite crear programas modularmente, mediante
subrutinas y mdulos, capaz de crear programas ya competitivos con otros lenguajes de alto nivel. Sin embargo llegaba
tarde, pues los entornos MS-DOS estaban ya superados por el entorno grfico Windows.
Sin embargo algo haba en el BASIC que tentaba a superarse: su gran sencillez de manejo. Si a esto se le aade el
entorno grfico Windows, el aprovechamiento al mximo de las posibilidades de Windows en cuanto a intercambio de
informacin, de sus libreras, de sus drivers y controladores, manejo de bases de datos, etc. el producto resultante puede
ser algo que satisfaga todas las necesidades de programacin en el entorno Windows. La suma de todas estas cosas es
VISUAL - BASIC. Esta herramienta conserva del BASIC de los aos 80 nicamente su nombre y su sencillez, y tras su
lanzamiento al mercado, la aceptacin a nivel profesional hizo borrar por fin el "mal nombre" asociado a la palabra
BASIC.
Actualmente se comercializa la versin 6.0 de este producto. Desde su salida al mercado, cada versin supera y mejora
la anterior. Dados los buenos resultados a nivel profesional de este producto, y el apoyo prestado por el fabricante para
la formacin de programadores, Visual-Basic se ha convertido en la primera herramienta de desarrollo de aplicaciones en
entorno Windows.

Es obligado decir sin embargo, que sigue siendo BASIC. No se pueden comparar sus prestaciones con otros lenguajes
cuando deseamos llegar al fondo de la mquina y controlar uno a uno sus registros. No es ese el fin perseguido con VB y
si es necesario llegar a esas precisiones ser necesario utilizar otro lenguaje que permita bajar el nivel de programacin
(Visual-C), o realizar libreras (DLLs) que lo hagan. En la mayor parte de las aplicaciones, las herramientas aportadas por
VB son mas que suficiente para lograr un programa fcil de realizar y de altas prestaciones.
Caractersticas Generales de Visual-Basic
Visual-Basic es una herramienta de diseo de aplicaciones para Windows, en la que estas se desarrollan en una gran
parte a partir del diseo de una interface grfica. En una aplicacin Visual - Basic, el programa est formado por una
parte de cdigo puro, y otras partes asociadas a los objetos que forman la interface grfica.
Es por tanto un termino medio entre la programacin tradicional, formada por una sucesin lineal de cdigo
estructurado, y la programacin orientada a objetos. Combina ambas tendencias. Ya que no podemos decir que VB
pertenezca por completo a uno de esos dos tipos de programacin, debemos inventar una palabra que la defina :
PROGRAMACION VISUAL.
La creacin de un programa bajo Visual Basic lleva los siguientes pasos:
- Creacin de un interface de usuario. Este interface ser la principal va de comunicacin hombre mquina, tanto para
salida de datos como para entrada. Ser necesario partir de una ventana - Formulario - a la que le iremos aadiendo los
controles necesarios.
- Definicin de las propiedades de los controles - Objetos - que hayamos colocado en ese formulario. Estas propiedades
determinarn la forma esttica de los controles, es decir, como son los controles y para qu sirven.
- Generacin del cdigo asociado a los eventos que ocurran a estos objetos. A la respuesta a estos eventos (click, doble
click, una tecla pulsada, etc.) le llamamos Procedimiento, y deber generarse de acuerdo a las necesidades del
programa.
- Generacin del cdigo del programa. Un programa puede hacerse solamente con la programacin de los distintos
procedimientos que acompaan a cada objeto. Sin embargo, VB ofrece la posibilidad de establecer un cdigo de
programa separado de estos eventos. Este cdigo puede introducirse en unos bloques llamados Mdulos, en otros
bloques llamados Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden a un evento acaecido
a un objeto, sino que responden a un evento producido durante la ejecucin del programa.
No es necesario entender de momento lo anterior. Visual Basic introduce un concepto nuevo de programacin, y es
necesario cambiar hasta el argot del programador. Posiblemente se le habrn acumulado demasiados trminos de una
sola vez. Es normal. A poco que siga leyendo ver las cosas mas claras cuando se explique una por una.
VARIABLES. DEFINICION Y ENTORNO
Basic, desde siempre, al contrario de otros sistemas de programacin, no exigi la definicin previa de una variable. Una
variable, como Vd. seguro que conoce, es un nombre que en el programa le asignamos a un dato. Ese dato podr
cambiar. Piense por ejemplo, en un programa consistente en la toma de datos de los alumnos de un centro escolar.
Existirn varias variables para poder introducir los datos de los alumnos. Estas variables pueden tener nombre tales
como:
Nombre
Apellido1
Apellido2
Direccin
Telfono
DNI
La variable Nombre tomar valores distintos segn vayamos introduciendo los datos de los distintos alumnos. Es posible,
que a lo largo de la ejecucin del programa, esta variable Nombre valga:
Jos
Pedro
Mara
Luis
Espero que su intuicin o conocimiento anterior le lleve a conocer el concepto de variable. Mas adelante lo ver mas
claro.

Decamos que Basic no exige la definicin previa de las variables. Otras herramientas exigen que se haga as. Por lo
tanto es normal encontrar, en otros sistemas de programacin, que un programa comienza de la siguiente forma:
Declare Nombre As String Le dice que Nombre es una sucesin de letras
Declare Apellido1 As String
Declare Apellido2 As String
Declare Direccin As String
Declare Telfono As String Le dice que Telfono es una sucesin de letras
Declare DNI As Nmero Le dice que DNI es un nmero
Mediante estas declaraciones, el programa sabe de que tipo de dato se trata y por tanto cmo debe trabajar con l. En
otros sistemas de programacin distintos de Basic, es necesario realizar esta declaracin antes de introducir una
variable.
Basic permite que no se declaren. Cuando a lo largo del programa le introducimos una variable nueva, asume que es una
variable y que el tipo es el adecuado para el valor que le estamos introduciendo en ese momento.
Por ejemplo, si Basic encuentra estas instrucciones
DNI=50000000
Nombre ="Pedro"
Telfono = "1234567"
entiende que DNI, Nombre y Telfono son variables, que DNI es un nmero (No hemos metido su valor entre comillas), y
que Nombre y Telfono son sucesiones de caracteres alfanumricos (su valor est entre comillas)
Esta particularidad de no necesitar declarar las variables hace que sea sencillo introducir una variable nueva. Sin
embargo entraa un gran peligro. Imagnese que en un paso posterior del programa, le mandamos escribir esos tres
datos anteriores con la instruccin PRINT
Print DNI
Print Nombre
Print Telwfono
Habr observado en tercer lugar la palabra Telwfono, que por error ha introducido el programador. Basic interpreta que
Telwfono es una variable e ir a leer en memoria el valor que tiene. No tendr ningn valor. Por lo tanto no escribir nada
y encima no dar ningn aviso de que se ha cometido un error. Nada es gratis en esta vida, y la facilidad para introducir
variables se paga con la posibilidad de un error.
Basic ha pensado en ese problema, y se puede solucionar con esta que ser la primera instruccin BASIC que vamos a
estudiar:
OPTION EXPLICIT
Obliga a declarar previamente las variables que se vayan a usar. De no haberla declarado antes de usarla, el programa
dar una comunicacin de error.
TIPOS DE VARIABLES
Las variables pueden ser de los siguientes tipos: (El nmero indicado en segundo lugar indica el nmero de Bytes que
ocupa en memoria.)
Booleana (2) Admite los valores 0 y 1, o True (verdadero) y False (falso)
Byte (1) Nmeros enteros, en el rango de 0 a 255
Integer (2) Nmeros enteros en el rango de -32768 a 32767
Long (4) Nmeros enteros en el rango de -2147483648 a 2147483647
Single (4) Punto flotante, simple precisin
Doble (8) Punto flotante, doble precisin.
Currency (8) Entero, con punto decimal fijo (Tpico de monedas)
String (*) Cadenas alfanumricas de longitud variable o fija
Date (8) Fechas
Objet (4) Referencia a objetos
Variant (**) Otros tipos de datos
(*) Una variable tipo String ocupa el mismo nmero de bytes que caracteres tenga la cadena.

(**) Una variable tipo Variant ocupa 16 bytes si se trata de un nmero y 22 bytes + longitud de la cadena si se trata de
un dato tipo cadena de caracteres.
Existen tambin variables definidas por el usuario (Ya ver la sentencia Type). En este tipo de variables se pueden
introducir muchos datos de distinto tipo. Los bytes necesarios para almacenar esa variable depender de los datos que
se hayan definido.
Dentro de las variables Objet (variables que se refieren a objetos) existe una gran variedad que a estas alturas del curso
no debemos complicarnos con ellas. Pero para adelantar algo, veremos que una variable puede ser del tipo Form Formulario - , tipo Picture, etc. etc.
Cada tipo de variable ocupa unos determinados bytes. Si no se define una variable, VB toma como tipo por defecto para
la variable el tipo Variant. Este tipo ocupa mas bytes que, por ejemplo, un integer. Si el tipo de dato que vamos a
introducir en una variable es un integer, y no la hemos declarado como tal, VB asumir para esa variable que es del tipo
Variant, lo que le llevar a gastar mas bytes de memoria (16) que los que necesitara (2) si la hubisemos declarado
previamente. Si esa variable va a estar en el rango de 0 a 255, y no declaramos previamente que la variable va a se del
tipo Byte, o la declaramos como integer, p. e., estamos desperdiciando memoria RAM y posiblemente, retardando la
ejecucin del programa. Lo mismo podemos decir del resto de las variables, y lo importante que es definirlas y definirlas
bien.
NOTA. Observe en la lista anterior que un dato Booleano ocupa 2 Bytes, mientras que un dato tipo Byte ocupa un byte.
En muchas ocasiones declaramos variables tipo Boolean con la intencin de que ocupen menos espacio. Paradoja del VB.
Si la declaramos como Byte ocupamos menos espacio en memoria. Declarar una variable como Boolean tiene tambin
sus ventajas (escribir menos cdigo por lo general cuando necesite leer o escribir una variable tipo Boolean), pero
tenga presente esta observacin respecto a los datos Boolean.
Puede declarar el tipo de la variable mediante un carcter despus del nombre de la variable. Esta tcnica, obligatoria en
Quick-Basic, est en desuso en VB. No es recomendable definir el tipo de esta forma, pues existe un serio peligro de
error. De cualquier forma, eso es potestativo del programador y de sus costumbres.
Los caracteres que definen cada tipo de variable son:
% Integer & Long ! Single
# Double @ Currency $ String
Ejemplos Prcticos de declaracin de variables
En Visual Basic, cuando declaramos una variable como String (Cadena de caracteres), no es necesario declarar su
longitud. VB aceptar cualquier nmero de caracteres. Si desea evitar que se puedan introducir ms de un determinado
nmero de caracteres, debe declarar su nmero. Por ejemplo :
Dim Var1 as String Var1 puede tener cualquier nmero de caracteres
Dim Var2 as String * 15 Var2 puede tener un mximo de 15 caracteres.
En este segundo caso, si se introduce como Var2 una cadena de caracteres con mas de 15 caracteres, Var2 tomar
solamente los 15 primeros. Visual basic no presenta ningn aviso de que esa variable ha omitido los caracteres que han
sobrepasado la cifra de 15. Si desea que el usuario conozca esa circunstancia, debe introducir el cdigo oportuno para
producir el aviso.
La declaracin de variables tipo String con nmero de caracteres predefinido presenta tambin inconvenientes a la hora
de tratar esa cadena de caracteres con sentencias tales como Mid, Left y Right, o a la hora de aadir una cadena a otra.
La experiencia nos indica que NO merece la pena declarar variables tipo String con el nmero de caracteres prefijado.
En una gran parte de los casos una variable que se compone de nmeros debe declararse como una variable de cadena
de caracteres (String), y no como numrica. Cuando pensamos por ejemplo en un nmero de DNI, compuesto por 7 u 8
cifras, un cdigo postal, el nmero de una calle, el piso de un edificio, parecen invitar a que la variable que los contenga
sea una variable de tipo numrico (Byte, Integer, Long, ...). Estas variables, aunque su contenido sean nmeros, siempre
se deben declarar como String, ya que se tratan en realidad de cadenas de caracteres, aunque estos sean nmeros. Para
aclarar mas estas ideas, piense en el nmero del DNI con la letra del NIF incluido, o que el lugar del DNI se deba rellenar
con el nmero del permiso de residencia, (lleva letras). Piense en el cdigo postal de una provincia que comienza por 0
( 08XXX = Barcelona ) .
Si la variable que va a contener ese cdigo postal se declara como numrica, el cero de la izquierda lo desprecia, por lo
que ese cdigo postal quedara reducido al 8XXX, nmero de 4 cifras que el cartero nunca reconocera como un cdigo

postal, que necesariamente ha de tener 5 cifras. Para terminar, piense la forma de introducir en una variable numrica el
nmero 32Bis de una calle o el piso S2 de un edificio. O piense en una variable que va a contener un cdigo de un
producto. Ese cdigo siempre va a ser un nmero, por ejemplo de 9 cifras. Ha pensado como tratara el ordenador una
variable numrica que contiene el cdigo 000100123 ?. El resultado sera que convertira ese cdigo en la cifra 100123,
y Vd. deber buscarse la vida para aadir los ceros iniciales a la hora de sacarlo a una impresora, por ejemplo.
En todos los casos anteriores, el nmero no representa una cantidad numrica, sino un nombre. Lo que ocurre es que ese
nombre contiene solamente nmeros.
Qu variables debemos declarar entonces como numricas ? La respuesta es bien sencilla : Aquellas que van a
contener datos con lo que vamos a realizar operaciones matemticas.
Las variables booleanas (True/False) pueden en muchos casos sustituirse por una variable del tipo Byte. Si ese datos True
/ False se va a introducir en una base de datos o en fichero en el disco, puede ser mas prudente poner 0 en vez de False
y 1 en vez de True.
Una variable byte ocupa muy poco, simplemente 1 byte como su nombre indica. Pero no puede contener nmeros
mayores de 255 ni nmeros negativos.
Cada vez que declare una variable numrica piense en los valores que puede tener, sobre todo cuando esa variable va a
ser el resultado de una operacin matemtica. Recuerde el escaso margen de una variable tipo Integer ( de -32768 a
32767)
Si la aplicacin va a tratar moneda, piense en la forma de expresar los nmeros decimales y el nmero de ellos
permitidos, as como el redondeo. La variable correcta para este caso es Currency, pero Currency le aade
automticamente el tipo de moneda de cada pas (Pts. Para Espaa) lo que con frecuencia es un engorro. Los datos del
tipo de moneda los toma del sistema operativo del ordenador, por lo que no se extrae si le expresa el nmero de
pesetas en dlares. Cambie el pas en su S. O.
Ambito de las variables
Denominamos mbito de una variable a las partes del programa donde esa variable est declarada. Para entenderlo
mejor, veamos someramente la forma de un programa desarrollado en VB.
Un programa VB tiene uno o varios formularios. Cada formulario tiene varios controles. Tanto el formulario como cada
uno de sus controles tienen una parte del programa, justamente la parte relacionada con cada uno de los eventos que
pueden suceder bien al formulario o a los controles. A estas partes las habamos llamado Procedimientos. Podemos tener
procedimientos que no estn relacionados con ningn evento ocurrido al formulario o a sus controles. (Los
Procedimientos que iremos insertando a lo largo de la aplicacin)
Aparte de formularios y controles, un programa puede tener Mdulos, y en cada uno de los mdulos podemos insertar
cuantos Procedimientos y Funciones queramos. La estructura de un programa VB puede ser de la siguiente forma:
Formulario1 Formulario2 Formulario3 Mdulo1 Modulo2
Declaraciones Declaraciones Declaraciones Declaraciones Declaraciones
Proc. A1 Proc.B1 Proc.C1 Proc.D1 Proc.E1
Proc. A2 Proc.B2 Proc.C2 Proc.D2 Proc.E2
Proc. A3 Proc.B3 Proc.C3 Proc.D3 FuncinE1
Proc. A4 Proc.B4 Proc.C4 Proc.D4 FuncinE2
Proc. A5 Proc.BB1 Proc.CC1 FuncinE3
Proc. AA1 Proc.BB2 Proc.CC2 FuncinE4
Proc. AA2 Proc.B33 Proc.CC3 FuncinE5
Proc. AA3 Proc.CC4 FuncinE6
Si se declara una variable dentro de un procedimiento o Funcin, esa variable "NO SALE" del Procedimiento o Funcin
donde se declar. El procedimiento puede estar en un Formulario (Cualquier procedimiento de un control o un
procedimiento creado por nosotros) o en un Mdulo (En este caso, el procedimiento solo puede ser creado por nosotros)
En un Formulario, una variable puede declararse de dos formas : Privada o Pblica. Para declarar una variable a nivel de
formulario debe hacerse en la seccin de declaraciones, que est la ventana de cdigo Objeto = General, Proc. =
Declaraciones. Si se declara Privada, esa variable se puede mover por todo el formulario, (es decir, por todos los
procedimientos de todos los controles del formulario y por los Procedimientos que pudisemos insertar en ese
formulario), pero no sale de dicho formulario. Si se declara como Pblica, esa variable puede moverse por todo el

formulario, de la misma forma que lo hara declarada como Privada, y adems puede ser usada desde otro Formulario o
Mdulo, citndola con el nombre del Formulario, seguido del nombre de la variable (Formulario.Variable)
En un Mdulo una variable puede declararse como Privada, con lo que no saldr de ese Mdulo, o Pblica, pudiendo en
este caso usarse en todo el programa. Cuando se declara una variable como pblica en un Mdulo, basta referirse a ella
por su nombre, sin citar el nombre del Mdulo donde se declar.
En VB es posible declarar varias veces las variables, es decir, pueden declararse a nivel de formulario, en su apartado de
declaraciones, y esa variable conservar su valor en todas las partes de ese formulario. Sin embargo, si se declara una
variable con el mismo nombre a un nivel inferior, por ejemplo al principio de un procedimiento, esa variable ser una
variable distinta a la anterior, aunque tenga el mismo nombre, a al declararla en un Procedimiento, solamente ser
vlida en ese Procedimiento. Una vez que hayamos salido de ese procedimiento, la variable con ese nombre volver a
ser la declarada en el Formulario. En realidad, lo que tenemos son dos variables distintas, pero con el mismo nombre,
una declarada para todo el formulario excepto para el procedimiento donde se volvi a declarar, y otra para ese
procedimiento concreto.
NOTA.- No es recomendable declarar una variable a dos niveles. Es mucho mejor utilizar otro nombre para esa variable
dentro del procedimiento donde se le declarara por segunda vez. A esta nota cabe exceptuar cuando declaramos
variables para una operacin tipo contador
For I = 1 To N
Esa variable I es prctico declararla con el mismo nombre en cada Procedimiento donde se use.
Tipos de declaracin de variables.
Sentencia DIM Es la forma mas comn de declarar una variable como
Privada. Puede emplearse en un Procedimiento, Funcin, Formulario o Mdulo. La sintaxis es de la siguiente forma:
Dim nombrevariable As Integer (o el tipo que sea)
Declarando una variable con la sentencia DIM, en un formulario, Funcin, procedimiento o mdulo, el entorno de la
variable ser el explicado anteriormente para una variable declarada como Privada. Es decir, esa variable no sale del
formulario, procedimiento mdulo donde se declar. Cada vez que entremos al formulario, procedimiento o mdulo,
esa variable tomar el valor cero (si es numrica) o nulo (si es string).
Sentencia PRIVATE Es la forma de declarar una variable como Privada. Puede
emplearse solamente en la seccin de declaraciones de un Formulario o Mdulo. La sintaxis es de la siguiente forma:
Private nombrevariable As Tipovariable
Declarando una variable mediante la sentencia PRIVATE en un Formulario o Mdulo, esa variable puede usarse en todo
ese Formulario o Mdulo (En todos sus Procedimientos y Funciones), pero NO fuera del Formulario o Mdulo donde se
declar.
La sentencia Private no puede usarse en un procedimiento o funcin.
Sentencia PUBLIC Es la forma de declarar una variable como Pblica. Puede
emplearse solamente en la seccin de declaraciones de un Formulario o Mdulo. La sintaxis es de la siguiente forma:
Public nombrevariable As Tipovariable
Declarando una variable de esta forma en la seccin de declaraciones de un Mdulo, esa variable puede usarse en
cualquier parte del programa citndola simplemente por su nombre.
Si se declara de esta forma en la seccin de declaraciones de un Formulario, esa variable puede usarse en toda el
programa. Para nombrarla, si estamos en el Formulario donde se declar basta con citarla por su nombre. Si no estamos
en ese Formulario, habr que citarla por el nombre del Formulario, seguido del nombre de la variable, separados por un
punto :
NombreFormulario.Nombrevariable
En un Mdulo puede usarse tambin la sentencia Global en vez de Public :
Sentencia GLOBAL Declara una variable que es vlida en todo el programa. La sintaxis es:
Global nombrevariable As tipovariable
La sentencia Global slo puede usarse en el apartado de declaraciones de un Mdulo.
Mediante la sentencia Global la variable puede usarse en todo el espacio del programa.
Sentencia STATIC

Como se dijo anteriormente, una variable declarada en un procedimiento pierde su valor al salir de l. Lo peor es que
una vez que el programa vuelva a entrar en ese procedimiento, la variable estar puesta a cero. Afortunadamente, esto
ltimo tiene solucin. Si declarsemos una variable en un procedimiento o funcin, como esttica, esa variable, aunque
no la podremos utilizar fuera de ese procedimiento o funcin, cuando volvamos a l conservar el valor que tena cuando
lo abandonamos. Esta declaracin como esttica se realiza mediante la intruccin Static
Static nombrevariable As tipovariable
El nombre de una variable puede ser tan largo como queramos. hasta un mximo de 40 caracteres. En la versin VB
para Espaa se pueden usar incluso la y vocales acentuadas. Es indiferente usar mayscula minsculas. No se
sorprenda, si por ejemplo, la ha declarado con maysculas y luego la cita con minsculas al escribir el cdigo, que
automticamente se cambie a maysculas. El nombre de una variable siempre debe comenzar por una letra.
No hay problema por utilizar variables largas. Al compilar el programa no se lleva el nombre, es decir, no le va a ocupar
mas espacio. Utilice siempre nombres que le definan la variable con algn sentido. Es muy til a la hora de acordarse
como se llaman, y sobre todo, a la hora de rehacer un programa que realiz hace seis meses.
Pese a que Visual Basic no obliga a declarar variables, es muy til hacerlo. De esta forma se tiene control sobre el
programa. La experiencia se lo ir demostrando.
Resumimos la forma de declarar una variable :
En un Procedimiento (La variable no puede usarse fuera de esta Procedimiento)
Dim Variable As Tipovariable
En un Procedimiento, como permanente (La variable no puede usarse fuera de este procedimiento, y dentro de l
conserva el valor aunque se salga y se vuelva a entrar)
Static Variable As Tipovariable
En un Formulario (En su seccin de declaraciones)
Como Privada (Solamente se puede usar en ese Formulario)
Dim Variable As Tipovariable
Private Variable As Tipovariable
Como Pblica (Puede usarse en toda la aplicacin)
Public Variable As Tipovariable
En un Mdulo
Como Privada (Solamente puede usarse en ese Mdulo)
Dim Variable As Tipovariable
Private Variable As Tipovariable
Como Pblica (Puede usarse en toda la aplicacin)
Public Variable As Tipovariable
Global Variable As Tipovariable
Error tpico de un programador novel de Visual Basic
Creo que esta costumbre viene del lenguaje C. Pero no vale en VB. Se trata de declarar varias variables juntas en una
misma lnea :
Dim Variable1, Variable2, Variable3, Variable4 As String
Esta declaracin est MAL hecha. Visual Basic interpretar que Variable1, Variable2 y Variable3 son del tipo Variant, y
solamente Variable4 la supone como tipo String
La forma correcta de hacerlo, si queremos declarar esas variables un una sola lnea, es la siguiente :
Dim Variable1 As String, Variable2 As String, Variable3 As String, Variable4 As String.
Lenguaje Basic del Visual Basic.
No ha sido un juego de palabras. VB emplea unas instrucciones casi iguales a las que emplea Quick Basic. Sin embargo
ha aadido otras nuevas instrucciones, inherentes con la programacin visual. Vamos a estudiar aqu las instrucciones y
definiciones mas sencillas, comunes a QB y VB.
Sentencias condicionales.
Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada condicin. Son las
sentencias por las que empieza cualquier texto de Basic, y este no va ser menos.
La sentencia condicional mas usada es:

Si se cumple una condicin Entonces


Realiza estas instrucciones
Si no se cumple
Realiza estas otras instrucciones
Fin de la sentencia.
As de fcil es programar en Basic. Lo que ocurre es que esta herramienta habla ingls, y lo descrito anteriormente toma
la forma:
If condicin Then
Instrucciones
Else
Otras instrucciones
End If
En este ejemplo, la condicin era que, o se cumple una condicin y ejecuta unas determinadas instrucciones, o no se
cumple, y ejecuta otras condiciones distintas. Puede ocurrir que, caso de no cumplirse la condicione primera, se abra un
abanico de dos o tres posibilidades. La sentencia condicional tendra entonces la forma:
If condicin 1 Then
Instrucciones
ElseIf Condicin 2
Otras instrucciones
ElseIf Condicin 3
Otro juego de instrucciones
Else
Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3.
End If
Como decamos anteriormente, este es el tipo de sentencia condicional mas usada. Existe otra:
Select Case
Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un determinado juego de instrucciones:
Select Case variable ' variable es una variable que puede tomar los valores (p.e.) de 1 a 4
Case 1
Instrucciones a ejecutar en caso de que variable = 1
Case 2
Instrucciones a ejecutar en caso de que variable = 2
Case 3
Instrucciones a ejecutar en caso de que variable = 3
Case 4
Instrucciones a ejecutar en caso de que variable = 4
End Select
Este procedimiento resulta mucho mas sencillo y rpido que las sentencias If Then Else
vistas anteriormente, cuando el margen de eleccin es mayor que 2.
Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como hacamos anteriormente, disponemos de
otras dos funciones: Choose y Switch.
Switch toma una serie de parmetros, todos por parejas. El primer trmino de cada pareja es la expresin a evaluar. El
segundo es el valor que tiene que devolver. En realidad Switch es una funcin (las funciones las veremos muy pronto)
A = Switch (B=1, 5, B=2, 7, B=3, 11)
Esta instruccin obtiene un valor para A que depender del valor que tome B entre los valores posibles (1, 2 3)
La sentencia Choose es casi igual, cambia solamente la forma. La misma intruccin anterior puede realizarse con Choose
de la siguiente forma:
A = Choose ( B, 5, 7, 11 )

En estas sentencias, Switch y Choose, si el valor de B no coincide con ninguno de los valores que se le haban
establecido (1, 2 3 en nuestro caso), la sentencia devuelve el valor Nulo ( Null ). Esto puede producir algn error si no
se contempla esa posibilidad.
Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar las propiedades de un objeto,
obtener resultados de operaciones, ....
Sentencias de bucle.
Es muy comn utilizar bucles a lo largo de un programa. Un bucle es una sucesin repetitiva de instrucciones, que se
estarn realizando mientras se cumpla una condicin o mientras no se cumpla otra condicin. Es tan sencillo como esto:
Mientras condicin
Instrucciones
Fin del bucle
Existen dos formas de bucle: Una, que realiza un nmero determinado de recorridos por el bucle. Es el denominado bucle
por contador. Otra, realiza el bucle hasta que se cumpla (o deje de cumplirse) una condicin. Es el llamado bucle por
condicin.
Bucle por contador
Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle nos va a presentar las 26 letras
maysculas del alfabeto ingls
For N=65 To 90
Label1.caption = Chr ( N )
Next N
Este "programa" nos presentar en una caja (Label) los caracteres cuyo nmero ASCII vaya desde el 65 (A) al 90 (Z)
Comenzar presentando el correspondiente al nmero 65, e ir presentando sucesivamente el 66, el 67, etc., hasta
llegar al 90, donde se parar.
Bucles por condicin
Ejecuta las instrucciones del bucle mientras se cumple una condicin
X=0
Do While X < 1000
X=X+1
Loop
El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a cero, e incrementa su valor una
unidad. Analiza si el valor de X es menor que 1000, y si es cierto, vuelve a realizar el bucle. As hasta que X ya no sea
menor que 1000. Al dejar de cumplirse que X sea menor que 1000, sale del bucle. Acabamos de realizar un
temporizador, y tambin de exponer las sentencias condicionales y los bucles, inicio de cualquier curso de Basic. Como
final de leccin, se propone un problema. Con el primer bucle, donde visualizbamos los caracteres A a la Z,
posiblemente no nos diese tiempo de ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta
Label1, dado que cambiara con mucha velocidad, y solamente veramos la Z, que es donde se detuvo el programa.
Podemos poner un temporizador cada vez que presente una letra, y as nos dar tiempo a verla. Con los dos bucles
vistos anteriormente ya podemos hacerlo.
Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada condicin, la sentencia ser:
X=0
Do Until X > 1000
X=X+1
Loop
Observe que la diferencia entre una y otra es la condicin, While para indicar Mientras se cumpla que ... y Until para
indicar Mientras no se cumpla que ....
Para terminar bien el programa anterior utilizaremos la condicin de While (Mientras se cumpla la condicin)
For N=65 To 90
Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta
X=0

Do While X < 1000


X=X+1
Loop
Next N
Este es nuestro primer programa en BASIC. En VISUAL BASIC es idntico, pero nos falta la interface grfica. Para
realizarla basta con abrir el VB y sobre el formulario que aparece al abrirlo, introducir una etiqueta, (Label) que llevar el
nombre por defecto de Label1. Solo nos queda pensar donde introducimos el cdigo anterior. Podemos introducir un
botn de comando (Command Button) que saldr con el nombre por defecto de Command1. Haga doble click sobre el
botn. Aparecer el procedimiento Click. Este procedimiento es el que se realiza cuando hacemos click sobre ese botn.
Escriba en ese procedimiento este cdigo.
Private Sub Command1_Click() ' Esta lnea sale automticamente
For N=65 To 90
Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta
X=0
Do While X < 1000 ' Bucle de temporizacin
X=X+1
Loop
Next N ' Termina el bucle de temporizacin
End Sub ' Esta lnea sale automticamente
Hemos puesto nuestra primera piedra en Visual Basic. Este ejemplo es muy sencillo. Visual Basic es tan sencillo como
este ejemplo.
BASIC DE VISUAL BASIC (2)
Funciones de cadenas
Se denomina CADENA a una sucesin de caracteres. Una cadena puede tener uno o varios caracteres alfanumricos. Una
cadena es tambin una sucesin de nmeros.
Ejemplo de cadenas:
Curso de Visual Basic
abcdefghijklmnopqrstuvwxyz1234567890
123456789
Hagamos una distincin entre una cadena que contenga nmeros y un nmero. Un nmero tiene un valor, pero tambin
tiene una presentacin escrita. El valor es algo que estar en el ordenador como una sucesin de bits. Dependiendo de
como lo hayamos declarado, tendr mas o menos bits. Pero esa informacin no es un nmero legible por el usuario. Lo
que s es legible por el usuario es la representacin en numeracin decimal (u octal, o hexadecimal, o incluso en binario)
de ese nmero. Esa representacin del nmero en un determinado sistema de numeracin es una cadena.
As, el nmero nueve, que en la memoria del ordenador ser una sucesin de bits, el ordenador puede presentrnoslo
como:
9 En numeracin decimal
9 En numeracin hexadecimal
11 En numeracin octal
1001 En numeracin binaria
Esas formas de presentarnos el nmero son CADENAS de caracteres. El valor del nmero dentro del ordenador es un
NUMERO.
Para presentar un nmero en la pantalla, el ordenador debe convertirlo previamente a una cadena.
Cuando introducimos un valor numrico por teclado o pantalla, el ordenador para hacer operaciones con l, debe
transformarlo a un nmero.
Estas consideraciones nos llevan a las dos primeras funciones con cadenas:
Str (nmero) Convierte un nmero a una cadena en numeracin decimal.
Val (cadena numrica) Obtiene el valor (el nmero) correspondiente a esa cadena.
Ejemplos

Variablenumerica = Val (TextBox1.Text)


Este ejemplo convierte la cadena de caracteres (numricos) que hubiese en la caja de texto TextBox1 en un nmero, y
asocia este nmero a la variable Variablenumerica.
Si el contenido de la caja de textos no fuesen caracteres numrico (abcd, por ejemplo), Variablenumerica tomara el
valor 0.
Label1.Caption = Str (Variablenumerica)
Este

ejemplo

pondra

en

la

etiqueta

Label1

los

caracteres

correspondientes

al

valor

que

tuviese

la

variable Variablenumerica .
Nota para recordar: Siempre habr que convertir un nmero a una cadena cuando queramos presentarlo en la pantalla.
Siempre habr que convertir a nmero la cadena de caracteres numricos que hayamos introducido por teclado o por
pantalla, cuando queramos operar con ese nmero. Un Label, cuando tiene que presentar un nico nmero, no le pedir
que se lo convierta a cadena, pues VB hace automticamente esa conversin. Sin embargo, cuando tiene que presentar
un nmero, y adems un texto en el mismo Label, VB no realizar automticamente ese cambio, por lo que le dar un
error. Le recomiendo que convierta los nmeros a variables de cadena siempre que los quiera presentar en un Label o
TextBox.
Existe una funcin mas amplia que Str. Se trata de Cstr. Esta funcin no solamente transforma un nmero a una cadena,
como hace Str, sino que convierte cualquier tipo de variable a una variable tipo String (cadena).
Esta funcin transforma, por ejemplo, una variable tipo Booleana en una variable de cadena, devolviendo la cadena
"Verdadero" si el valor de la variable booleana es True, y "Falso" si es False.
Puede tambin transformar a una cadena de caracteres el valor de un CheckBox o de un OptionButton. En estos casos
devuelve 0 y 1 para el CheckBox (Desactivado / Activado) y Verdadero Falso para el OptionButton (Activado /
Desactivado)
label1.Caption = CStr(booleana) Label1.Caption = Verdadero si booleana es true
Label1.Caption = Falso si booleana es False
Label2 = CStr(Check1.Value) Label2.Caption = 1 si Check1 est activado
Label2.Caption = 0 si Check1 est desactivado
Label3 = CStr(Option1.Value) Label3.Caption = Verdadero si Check1 est activado
Label3.Caption = Falso si Check1 est desactivado
Si se aplica Cstr a una variable tipo Fecha/Hora devuelve la fecha / Hora en formato corto.
Mas funciones de cadena:
Left (cadena, n)
Extrae los n primeros caracteres de una cadena, comenzando por la izquierda.
Si cadena = Curso de Visual Basic (Para todos los ejemplos)
Resultado = Left (cadena, 10) ----> Resultado = Curso de V
Right (cadena, n) Extrae lo n ltimos caracteres de la cadena
Resultado = Right (cadena, 10) ----> Resultado = sual Basic
Mid (cadena, m, n) Extrae n caracteres de la cadena, siendo el primer carcter extrado el que ocupa el lugar m.
(Vea Instruccin Mid mas abajo)
Resultado = Mid (cadena, 3, 10) ----> Resultado = rso de Vis
LCase (cadena) Devuelve otra cadena igual, pero con todos los
caracteres en minsculas. (LCase = Lower Case)
Resultado = Lcase (cadena) ----> Resultado = curso de visual basic
UCase (cadena) Devuelve otra cadena igual, pero con todos los
caracteres en maysculas. (UCase = Upper Case)
Resultado = UCase (cadena) ----> Resultado = CURSO DE VISUAL BASIC
Len (cadena) Devuelve la longitud de la cadena
Resultado = Len (cadena) ----> Resultado = 21
LenB (Cadena) Devuelve el nmero de Bytes empleados para almacenar la
cadena. Sorprndase, es el doble que Len (Cadena)
String (n, carcter) Devuelve una cadena de n caracteres como el indicado

Resultado = String (8, "a") ----> Resultado = aaaaaaaa


Resultado = String (8, Chr(65)) ----> Resultado = AAAAAAAA
Resultado = String (8, 65) ----> Resultado = AAAAAAAA
Space (n) Devuelve una cadena formada por n espacios.
Resultado = "A" + Space (6)+ "B" ----> Resultado = A B
LTrim Elimina los posibles espacios que tenga una cadena por su izquierda.
Rtrim Elimina los posibles espacios que tenga una cadena por su derecha.
Trim Elimina los espacios que tenga una cadena, tanto por su izquierda como por su derecha. (No elimina los espacios
centrales de la cadena)
Estas tres funciones se emplean para quitar los posibles espacios que pueden resultar de una entrada de datos. Tienen
especial importancia cuando se toman los datos de un archivo o base de datos, donde fueron introducidos por otro
programa.
No se pone ningn ejemplo de estas funciones, pues sera difcil verlo impreso.
InStr (cadena, cadena1) Busca la cadena1 dentro de cadena y devuelve el nmero de orden dentro de cadena donde se
encuentra la primera letra de cadena1
Resultado = InStr (cadena, "sua") ----> Resultado = 12
StrConv Convierte una cadena de caracteres en otra, segn las instrucciones
que le sigan. Puede sustituir a UCase o LCase si la instruccin es
UpperCase o LowerCase respectivamente, o poner la primera letra de todas las palabras de la cadena en maysculas, si
la instruccin es ProperCase.
Resultado = StrConv (cadena, UpperCase) ----> Resultado = CURSO DE VISUAL BASIC
Resultado = StrConv (cadena, LowerCase) ----> Resultado = curso de visual basic
Resultado = StrConv (cadena, ProperCase) ----> Resultado = Curso De Visual Basic
Instruccin Mid
Mid puede usarse tambin para cambiar el contenido de una cadena. Observe la sutileza entre Mid como Funcin de
cadena y Mid como Instruccin.
La Instruccin Mid reemplaza un nmero especificado de caracteres en una variable de cadena con caracteres de otra
cadena.
Sintaxis Mid(cadena1, inicio[, longitud]) = cadena2
Resultado Mid (cadena, 7,2)="Sobre" ---- > Resultado = Curso sobre Visual
Basic
FUNCIONES CON NUMEROS
Visual Basic puede operar con nmeros tal como lo hara cualquier persona. Conoce las 4 reglas, y puede utilizar
parntesis de la misma forma que los escribimos sobre el papel.
Los operadores que utiliza para las operaciones bsicas son:
+ Suma
- Resta
* Multiplicacin
/ Divisin
\ Divisin sin decimales
Mod Resto de una divisin
^ Eleva a un exponente
Ejemplos
Resultado = 12 + 15 ----> Resultado = 27
Resultado = 15 - 12 ----> Resultado = 3
Resultado = 15 * 12 ----> Resultado = 180
Resultado = 15 / 12 ----> Resultado = 1.25
Resultado = 15 \ 12 ----> Resultado = 1
Resultado = 15 Mod 12 ----> resultado = 3
Resultado = 12 ^ 2 ----> Resultado = 144

resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> Resultado = 36


Estos operadores se denominan Operadores aritmticos.
Existen otras operaciones que se pueden realizar con nmeros: comparaciones. Los operadores que realizan
comparaciones se denominan Operadores relacionales. El resultado de las operaciones realizadas con estos operadores
solamente admiten dos resultados: True (Cierto) o False (Falso) Estos operadores son:
= Igual que
<> No igual que
< Mayor que
<= Mayor o igual que
> Menor que
=> Igual o menor que
Estos operadores se suelen utilizar en estructuras de programa donde se tome una decisin.
El operador = puede usarse tambin para comparar cadenas o fechas.
Operadores Lgicos
Estos operadores slo tienen sentido cuando hablemos de variables Booleanas, es decir, aquellas que solamente pueden
tomar los valores cero y uno.
Operador Funcin Devuelve True si Devuelve False si
And Funcin AND A=True y B=True Cualquier otro caso
Or Funcin OR A=True o B=True A=False y B=False
Xor Funcin XOR A=True y B=False A=True y B=True
A=False y B=True A=False y B=False
Eqv F. Equivalente A=True y B=True A=True y B=False
A=False y B=False A=False y B=True
Imp Implicacin A=True y B=True A=True y B=False
A=False y B=True
A=False y B=False
Not Negacin A=False A=True
Like Igualdad A=True A=False
Otras Funciones con nmeros
CInt Parte entera Devuelve la parte entera de un nmero con decimales
Abs Valor Absoluto Devuelve el valor absoluto de un nmero
Sgn Signo Devuelve el signo de un nmero
Sqr Raz cuadrada Devuelve la raz cuadrada de un nmero
Exp Exponenciacin Devuelve el nmero elevado al exponente indicado
Log Logaritmo Devuelve el logaritmo natural de ese nmero
Trigonomtricas
Sin Seno Devuelve el valor del seno de un ngulo (Expresado
en radianes)
Cos Coseno Devuelve el coseno de un ngulo (En radianes)
Tan Tangente Devuelve la tangente de un ngulo
Atn Arco Tang. Devuelve un arco cuya tangente sea el nmero
(Angulo en radianes)
Una funcin curiosa
Timer Tiempo acumulado Devuelve el tiempo (en segundos) que ha pasado desde las 12 de la noche.
Generacin de nmeros aleatorios
Randomize (Numero) Inicia el generador aleatorio tomando como dato de partida el Numero. Devuelve el resultado en
una variable llamada Rnd.
NOTA MUY IMPORTANTE.- Los nmeros aleatorios generados de esta forma son siempre iguales, eso s, dependiendo del
nmero que se le introduzca como parmetro. Esta generacin de nmeros no produce nmeros aleatorios pues como

se dijo, dependen del numero que se meta como parmetro, y si este se repite, se repite la sucesin de nmeros que
nos crea el generador aleatorio.
La forma de obtener nmeros realmente aleatorios es introducir como parmetro un nmero que sea variable con el
tiempo. Ese nmero no puede ser otro que el nmero timer visto antes. Y siempre con la precaucin de que medie mas
de un segundo entre dos instrucciones Randomize. La funcin toma entonces la forma:
Randomize Timer
La funcin Randomize devuelve una variable Rnd con un nmero comprendido entre 0 y 1 (Nunca ser 0 ni 1) Leyendo el
valor de la variable sucesivas veces, se puede obtener una sucesin de nmeros aleatorios. No es necesario ejecutar la
instruccin Randomize Timer cada vez que se quiera obtener un dato de la variable Rnd.
Un ejemplo. Generador de nmeros para la Lotera Primitiva
Supongamos que tenemos un formulario con una etiqueta de nombre Label1, un botn de comando de nombre
Command1. Cuando hagamos click sobre el botn de comando deber generar un nmero comprendido entre el 1 y el
49. En el procedimiento click de Command1 pondremos el siguiente cdigo:
Private Sub Command1.click
Randomize Timer
A = Rnd
A = Rnd * 100
A = CInt(A)
Do While A > 49
A = A - 49
Loop
Do While A < 1
A = A + 49
Loop
Label1.caption = A
End Sub
Realice este pequeo programa, con la instruccin Randomize Timer y sin ella.
Funciones con fechas.
Las fechas son cadenas especiales. Visual Basic sabe obtener y tratar la informacin relativa a la fecha y la hora.
Dispone para ello de una declaracin de variable: Date. Una variable declarada como date puede contener una fecha,
una fecha y una hora o una hora solamente.
Date Devuelve la fecha de hoy. Esta fecha la toma del reloj del ordenador.
Time Devuelve la hora actual.
Now Devuelve la fecha y hora actual.
WeekDay Devuelve el da de la semana (En nmero, 1=Domingo, 2=Lunes,...)
Day Obtiene el da, a partir de una fecha
Month Obtiene el mes a partir de una fecha.
Year Obtiene el ao a partir de una fecha.
Hour Obtiene la hora a partir de una hora
Minute Obtiene el minuto a partir de una hora.
Second Obtiene el segundo a partir de una hora.
DateAdd Aade un intervalo de tiempo a una fecha
DateDiff Obtiene el intervalo de tiempo entre dos fechas
DatePart Devuelve una parte de una fecha (semana, trimestre, etc.)
DateSerial Compone una fecha a partir de parmetros relativos
TimeSerial Compone una hora a partir de parmetros relativos.
DateValue Devuelve una fecha a partir de un dato que se le parezca y VB pueda
obtener de l una fecha vlida
Mediante estas instrucciones podemos obtener el dato necesario de una fecha u hora. Por ejemplo, para obtener el da
de hoy solamente:

Da = Day (Now) Da ser un nmero


El da de la semana lo obtendramos
Diasemana = WeekDay (Now) Diasemana ser un nmero
DateValue, una instruccin que le sacar mucho provecho
Fecha = DateValue (120796)
Fecha = DateValue (12 07 96) Fecha =12/07/96
Funcin FORMAT
Esta funcin permite presentar cadenas de numricas o fechas de una determinada forma. Permite establecer el Formato
de esa cadena.
Si recurre a la ayuda de VB acerca de esta funcin se va a enterar muy poco de lo que puede dar de s. La sintaxis que
presenta es :
Format(expresin[, formato[, primerdadesemana[, primerasemanadelao]]])
Lo mejor que puede hacer con esta definicin de la sintaxis de Format es olvidarla. No le aclara mucho lo que se puede
hacer con Format. La funcin Format se usa para poner una fecha en un determinado formato. Con la expresin :
FechadeHoy = Format (Now, "yyyy-mm-dd")
la variable FechadeHoy tendr el valor 1998-05-21, que se refiere al da 21 de mayo de 1998, segn el formato
recomendado por la norma ISO-8601 para la presentacin de fechas. Si hubisemos puesto la expresin FechadeHoy =
Format (Now, "dd/mm/yy") , la variable FechadeHoy contendra el valor 21/05/98 referido al da citado.
Las posibilidades de Format llegan tambin al campo de las cadenas numricas. Por ejemplo la cifra 123456 se
transformar en las siguientes expresiones, segn como empleemos la funcin Format
Variable = Format(123456, "Currency") Variable = 123.456 Pts
Variable = Format(123456, "Standard") Variable = 123.456,00
Veamos ahora con un poco mas de conocimiento la sintaxis de Format
Variable = Format (expresin[, formato[, firstdayofweek[, firstweekofyear]]])
Donde
expresin es una cadena o fecha vlida
formato es uno de los formatos predefinidos (Standard, Currency, etc. Vea mas abajo)
firstdayofweek. Especifica el primer da de la semana. Puede tomar uno de estos valores o constantes :
Constante Valor Descripcin
vbUseSystem 0 El especificado en el sistema operativo.
VbSunday 1 Domingo (valor por defecto)
vbMonday 2 Lunes
vbTuesday 3 Martes
vbWednesday 4 Mircoles
vbThursday 5 Jueves
vbFriday 6 Viernes
vbSaturday 7 Sbado
firstweekofyear Especifica cual es la primera semana del ao. Puede tomar uno de los siguientes valores o constantes :
Constante Valor Descripcin
vbUseSystem 0 Usa el valor del sistema operativo
vbFirstJan1 1 La primera semana es la que contiene al da 1 de Enero(Valor
por defecto
vbFirstFourDays 2 La primera semana es la que contiene al menos, 4 das de ese
ao (Rec. ISO - 8601)
vbFirstFullWeek 3 La primera semana es la que tiene todos sus das en ese ao
No se complique la vida con el tema del primer da de la semana ni la primera semana del ao. No lo usar con
frecuencia. Centrmonos mas en el parmetro Formato. Puede tomar muchos valores. Veamos los principales. Primero
para nmeros
Observe que usamos la expresin Variable =Format (1234567,"Formato") para todos los ejemplos de nmeros.
Para poner los nmeros separados por millares :

Variable = Format(1234567, "##,###,###") Variable = 1.234.567


(Cada carcter # indica que ah va un nmero. El separador debe ser una coma, no un punto, aunque esto depende del
idioma que est usando)
Puede poner una de estas expresiones, eso si, siempre entre comillas dobles :
General Number Muestra el nmero tal como lo tecle
Currency En formato de la moneda de su sistema operativo
Fixed Sin separador de millar y dos decimales (1234567,00)
Standard Con separador de millares y dos decimales (1.234.567,00)
Percent Multiplica el nmero por cien y lo presenta cono
porcentaje(123456700,00%)
Scientific Usa notacin cientfica (1,23E+06)
Para fechas (Observe que usamos el ejemplo Format(Now, "Formato") y Now = 21/07/98
a las 22:16:00 y pico)
General Date 21/07/98 22:16:00
Long Date martes 21 de julio de 1998
Medium Date 21-jul-98
Short Date 21/07/98
yyyy-mm-dd 1998-05-21
yy-mm-dd 98-07-21
Long Time 22:19:53
Medium Time 10:20 PM
Short Time 22:20
hh :mm :ss 22 :21 :29
hh :mm 22 :21
Format dispone de mas opciones. Sera muy largo explicarlas aqu. Para mas informacin, en la WEB de Microsoft puede
encontrar mas formatos posibles.
MATRICES
Cuando utilizamos varias variables que tienen un significado similar para nosotros, pero que son distintas (Por ejemplo,
el nombre de los alumnos de una clase) podemos utilizar una matriz. Esta matriz est formada por tantos elementos
como alumnos tenga la clase. El nombre asociado a cada uno de los elementos de la matriz puede ser:
Alumno (n) Donde n es el nmero por orden de lista de ese alumno.
Las matrices normalmente comienzan a numerar por el nmero 0. Este comienzo puede no ser el mas apropiado para la
variable que estamos planteando, pues ningn alumno tiene el nmero de orden 0. Para hacer que una matriz comience
a numerar por el 1 se debe definir mediante la instruccin:
Option Base 1
que debe colocarse al comienzo del mdulo o formulario donde declaremos la matriz.
Para declarar la matriz se hace como con todas las variables, especificando entre parntesis el nmero de elementos que
componen la matriz:
Dim Alumno (25) as String
Hemos declarado que la variable alumno es una cadena, y que hay 25 elementos en esa matriz.
Una matriz tambin se puede declarar de la siguiente forma :
Dim Alumno(1 To 25) as String
Donde le decimos que la variable Alumno tiene 25 elementos, que el primero tiene el ndice 1 y el ltimo tiene el ndice
25.
Pero imaginemos que queremos meter en la misma matriz el nombre, primer apellido y segundo apellido del alumno.
Necesitaremos declarar una matriz de 25 por 3. Como todos los elementos sern cadenas de caracteres, podemos
declararla de la siguiente forma:
Dim Alumno (1 To 25, 1 To 3) As String
De esta forma, el primer apellido del alumno que ocupa el puesto nmero 15 de la clase, ser el elemento:
Alumno (15, 2)

Podemos definir matrices de dimensin superior a dos. Podemos llegar a un mximo de 60 dimensiones. Una matriz de 5
dimensiones se declarara:
Dim Variable ( 1 To N, 1 To M, 1 To P, 1 To Q, 1 To R)
entendiendo que hay N, M, P, Q y R elementos en cada una de las dimensiones respectivamente.
Una variable ya declarada como una matriz puede redimensionarse a lo largo del programa mediante la
instruccin ReDim
ReDim Alumno (1To 25)
Mediante esta instruccin, estamos ReDimensionando una matriz ya declarada. No se puede redimensionar una matriz
inexistente.
Mediante la declaracin 1 To 25 le estamos diciendo que el primer elemento de la matriz es el 1, independientemente de
lo que hayamos puesto en OPTION BASE. Si se redimensiona simplemente con el nmero de elementos :
ReDim (25)
le estamos diciendo que tiene 25 elementos, pero que el primero sea el 0 el 1 depende de haber puesto OPTION BASE
0 u OPTION BASE 1.
Una matriz puede redimensionarse cuantas veces se quiera a lo largo de la aplicacin, pero esa redimensin no puede
afectar al nmero de dimensiones de la matriz. Si redimensionamos la matrizperder la informacin existente. Para
evitar perder la informacin presente en la matriz, debe utilizar la sentencia ReDim Preserve.
Si usa la palabra clave Preserve en matrices de dimensin superior a 1, va a encontrarse con comportamientos no
esperados. Como podr ver en la Ayuda de VB, usando ReDim Preserve slo puede cambiar el tamao de la ltima
dimensin de matriz y no puede modificar en ningn momento el nmero de dimensiones. NO es cierto del todo. S lo
podr hacer una sola vez.
Respecto a cambiar el nmero de dimensiones, si ha declarado la matriz con unas dimensiones determinadas, ya no
podr cambiar las dimensiones ni con ReDim ni con ReDim Preserve. Le saldr un error que dice que las dimensiones de
la matriz ya han sido declaradas.
Pero si ha declarado la matriz sin dimensiones :
Dim MiMatriz()
puede cambiar las dimensiones Dim MiMatriz (1 To 5, 1 To 9)
y volver a cambiarlas Dim MiMatriz (1 To 8, 1 To 15, 1 To 6)
Observe que no solamente la hemos cambiado dos veces de dimensiones (la primera a 2 y la segunda a 3), sino que
tambin hemos cambiado el nmero de elementos en cada dimensin.
Si hubisemos utilizado ReDim Preserve solamente podramos haber usado la primera de las dos lneas anteriores :
ReDim Preserve MiMatriz (1 To 5, 1 To 9)
pero ya no podramos volver a cambiar el nmero de dimensiones con la segunda lnea. Nos dara un error.
Con ReDim podemos cambiar el nmero de elementos de cada dimensin cuantas veces queramos. Por ejemplo,
podemos redimensionar MiMatriz de las siguiente forma :
ReDim MiMatriz (1 To 5, 1 To 9)
ReDim MiMatriz (1 To 15, 1 To 20)
ReDim MiMatriz (1 To 25, 1 To 30)
Si hubisemos empleado ReDim Preserve, podramos cambiar los elementos de todas las dimensiones de la matriz una
vez :
ReDim Preserve (1 To 5, 1 To 9)
a partir de ahora, solamente podemos cambiar los elementos de la ltima dimensin :
ReDim Preserve (1 To 5, 1 To 20)
ReDim Preserve (1 To 5, 1 To 30)
es decir, no podremos hacer esto :
ReDim Preserve (1 To 10, 1 To 30) donde se seala en negrita el error.
Esto no causa ningn error en una matriz de una dimensin, ya que si la matriz tiene slo una dimensin, puede cambiar
el tamao de esa dimensin porque es la nica y la ltima.
Cuando a lo largo de la aplicacin se va redimensionando una matriz, podemos llegar la circunstancia de que, en un
momento determinado, no sepamos las dimensiones de esa matriz.

Para conocer el ndice mximo y mnimo de una matriz se usan las funciones UBound y LBound.
UBound devuelve el mayor subndice disponible para la dimensin indicada de una matriz.
Sintaxis UBound(nombredelamatriz[, dimensin])
LBound devuelve el mayor subndice disponible para la dimensin indicada de una matriz.
Sintaxis LBound(nombredelamatriz[, dimensin])
Ejemplo Tengamos una matriz llamada Mimatriz, de tres dimensiones. En un momento de la aplicacin se ejecut la
siguiente instruccin vlida :
ReDim Mimatriz (1 To 100, 0 To 3, 5 To 20)
En otro momento queremos tener el control de los ndices de esa matriz, y queremos averiguar el ndice menor y mayor
de cada una de sus dimensiones :
(IID1= Indice Inferior Dimensin 1, ISD 1 = Indice Superior Dimensin 1, etc. )
IID 1= LBound (Mimatriz, 1) IID1 = 1
ISD1 = UBound (Mimatriz, 1) ISD1 = 100
IID 2= LBound (Mimatriz, 2) IID1 = 0
ISD2 = UBound (Mimatriz, 2) ISD1 = 3
IID 1= LBound (Mimatriz, 3) IID1 = 5
ISD1 = UBound (Mimatriz, 3) ISD1 = 20
VISUAL BASIC
Tras esta pequea introducin al lenguaje Basic ya estamos en disposicin de encender el ordenador y comenzar a
trabajar con Visual-Basic. Se supone que su PC tiene instalado el programa Visual Basic, bien en su versin de 16 bits si
dispone de Windows 3.xx o la de 32 bits si dispone ce Win95, 98, ME Windows NT.
Entre en el programa VB. Le aparecer en pantalla algo similar a esto : (Para VB Vers. 4)

Este es el comienzo del programa . Observe que en esta pantalla existen varias cosas. En la parte superior , la barra de
ttulo del programa Visual Basic, con el texto :
Proyect1 - Microsoft Visual Basic (Diseo)
Por debajo de esta barra de Ttulo del VB, encontramos la barra de men de VB, con las leyendas :
Archivo Edicin Ver Insertar Ejecutar Herramientas Complementos Ayuda
Por debajo de esta barra de men tenemos la barra de herramientas, donde podr ver varios iconos, que cada uno
representa un determinada operacin que Vd. puede realizar. Estas operaciones est todas en la lnea de men, y puede

acceder a ellas abriendo los mens desplegables que existen en cada una de las palabrea Archivo Edicin Ver ...... de
esta lnea de men. El hecho de colocar las operaciones mas usuales en un icono en la barra de herramientas se hace
para mayor comodidad del usuario.
A la izquierda de la pantalla tiene una caja rectangular con tres columnas de iconos. Esa caja es la Caja de Herramientas
(No la confunda con la barra de herramientas de la parte superior)
Esta caja de herramientas es, salvando las distancias, lo mismo que una caja de herramientas real que pueda tener un
mecnico para realizar su trabajo. En ella estn los iconos que representan a los controles con los que Vd. va a
desarrollar su aplicacin VB. No estn todos los que pueden estar, al igual que en una caja de herramientas de un
mecnico no estn todas las herramientas que puede usar. Estn solamente las mas usuales. Si necesita alguna mas,
puede cogerla de otra parte (barra de Men, Herramientas, Controles personalizados) y agregarlos a esa caja de
herramientas, al igual que lo hara un mecnico con una herramienta especial, que la metera en su caja slo cuando va
a realizar un trabajo determinado para el que la necesite.
Posiblemente esta caja de herramientas no le aparezca tal y como la ve en estos apuntes. Eso depende si Ud. tiene la
versin personal o la profesional, o si usa la versin de 16 32 bits. Esa caja de herramientas puede personalizarla a su
gusto. Para ello, deber cargar un proyecto ya existente en los discos de distribucin de Visual Basic, llamado
AUTO32LD.VBP (versin 32 bits) AUTO16LD.VBP (Versin 16 bits) que se encontrar en el directorio donde haya
cargado el programa Visual Basic. Este proyecto no tiene otra funcin que determinar las herramientas con las que
quiere abrir el VB. Para introducir herramientas nuevas en la caja de herramientas, basta con desplegar el
men Herramientas de la barra de men, e ir a Controles personalizados. Haciendo click en esta lnea de controles
personalizados, podemos seleccionar nuevos controles para aadir a la caja de herramientas, marcando la casilla que
est a la izquierda del nombre del control que quiere introducir. Una vez seleccionados todos los nuevos controles, haga
click en ACEPTAR, y podr observar que esos nuevos controles ya se le han aadido a la caja de herramientas. Para que
esos nuevos controles le aparezcan de entrada cuando inicia una sesin de VB, debe salir de Visual basic guardando los
cambios. Vuelva a entrar y observar que ya le aparecen esos nuevos controles en la caja. No es prudente meter muchos
controles en la caja. Ponga solamente los que necesite normalmente en sus aplicaciones. Ocupar menos memoria y
tardar menos tiempo en cargar el programa VB. Adems, cuando realice una aplicacin y la distribuya una vez
compilada, Visual Basic entregar en los disquetes de distribucin las DLL's u OCX's correspondientes a todos los
controles personalizados que Vd. tenga en la caja de herramientas, los necesite el programa o no los necesite. Esto le va
a suponer que est cargando subprogramas intiles en el ordenador destino de su aplicacin. A la hora de compilar el
programa (Crear archivo .EXE) quite todos los controles personalizados que no necesite su aplicacin. (Slo los controles
personalizados. Los controles comunes - CommandButton, Label, TextBox, etc.-, no se pueden eliminar de la caja de
herramientas)
Para quitar controles de su caja de herramientas, debe proceder de forma anloga, cargando el programa
AUTOxxLD.VBP, abriendo men de herramientas, Controles personalizados, quitando la marca al cuadro situado en la
parte izquierda del control a eliminar, y guardando el proyecto al salir.
En el centro, y ocupando casi toda la pantalla, tenemos el Formulario. Este Formulario es la interface grfica de su
aplicacin, sobre el que podr aadir los controles que necesite. Lo veremos mas adelante con todo detalle.
Observa dos ventanas, una denominada Ventana de Propiedades, donde puede ver las propiedades del formulario,
Form1, y otra, denominada Ventana de Proyecto. Existe otra ventana, que no est en la figura anterior, la Ventana de
Depuracin. Por cada formulario y cada control que introduzca en el proyecto, le aparecer otra ventana, denominada
ventana de cdigo.
No se extrae de que esta presentacin grfica del Visual Basic coincida con otros sistemas de desarrollo (Delphi, p.e.).
La lgica de desarrollo de una aplicacin en Windows ha llevado a varios fabricantes de software a utilizar un entorno
grfico similar (diramos idntico). A Visual basic le queda el orgullo de ser el primero en utilizarlo.
Con lo descrito anteriormente ya tenemos, al menos, fijado el argot con el que expresarnos para comenzar a estudiar el
VISUAL BASIC. Veamos con un poco mas detalle la Ventana de Cdigo.

Esta figura le muestra un Formulario con su ventana de cdigo. Cada objeto grfico de VB tiene su propia ventana de
cdigo. As, si en este formulario hubisemos introducido un Label y dos CommandButton, todos ellos tendran su propia
ventana de cdigo. La ventana de cdigo la podemos ver haciendo doble click sobre cualquier objeto de nuestro
proyecto. En este caso hemos hecho doble click sobre el nico objeto que tenamos : el formulario.
Observe las dos cajas de la parte superior, uno con la inscripcin Objeto : que en el momento que le sacamos la foto
tena Form, y el otro con la inscripcin Proc : (procedimiento), que en el momento de la foto tena Load. A estas cajas les
denominamos Lista de Objetos y Lista de Procedimientos respectivamente.
Haciendo click sobre la flecha de cada lista, se despliega un men, en la lista de objetos se desplegar una lista con los
nombres de cada objeto existente en ese momento dentro del formulario. Haciendo click sobre uno de los nombres, nos
presentar la ventana de cdigo de ese objeto. Todos los objetos grficos (controles) existentes dentro de un formulario y
el propio formulario aparecern en la misma lista de objetos.
Haciendo click sobre la flecha de la lista de procedimientos, se despliega la lista con todos los procedimientos posibles
para ese objeto. Siempre saldr uno. Si tenemos escrito cdigo en uno de los procedimientos, saldr por defecto ese
procedimiento para el cual hemos escrito el cdigo. Si no hay cdigo en ninguno de los procedimientos, saldr el que
tenga por defecto cada objeto.
Solamente nos queda por decir, para cerrar este captulo, que es un procedimiento.
Para ello vamos a explicar lo que es un evento. Un Evento es algo que le puede ocurrir a un objeto. En una internase
grfica, lo que le puede ocurrir a un objeto es que se le haga click, doble click, que se pase el cursor del ratn por
encima, etc. Este es el Evento. El Procedimiento es la respuesta por parte de ese objeto, al evento que le est
sucediendo.
Esa respuesta, esa forma de Proceder del objeto al evento que le est sucediendo, debemos programarla segn nuestras
necesidades, es decir, debemos escribir el cdigo que necesite nuestra aplicacin como respuesta al evento que acaba
de ocurrir. Posiblemente, no queramos ninguna respuesta a muchos de los eventos que pueden acaecer a un objeto.
Cada objeto tiene muchos eventos y solamente queremos aprovechar los que nos interesan. Para que un evento no
produzca ningn efecto, basta con dejar sin cdigo el procedimiento correspondiente a ese evento. En los eventos que
queramos que realice alguna operacin, le escribiremos en su procedimiento el cdigo necesario para que esa operacin
se realice. Sin darnos cuenta, hemos comenzado a escribir el cdigo de la aplicacin.
Observar que el primer elemento del men desplegable de la lista de objetos se denomina General. Este no es en
realidad ningn objeto, sino un apartado existente en cada formulario, que, al desplegar su lista de procedimientos tiene
la seccin de declaraciones, donde debemos declarar las variables que queremos que afecten a todo el formulario y sus
controles, y tendr adems, los nombres de todos los procedimientos que introduzcamos (vase un poco mas adelante).
En este men desplegable de la lista de procedimientos del General ver con frecuencia cosas que Vd. no puso all.
Cosas tales como Command1_click, y en la ventana un determinado cdigo. Esto ocurre cuando se borra algn control
que tena escrito cdigo en alguno de sus procedimientos. Visual Basic sabe lo mucho que cuesta escribir el cdigo
asociado a un control. Si borramos un control de nuestro formulario accidentalmente, despus de haber introducido todo
el cdigo asociado a l, Visual Basic nos sorprende con que ese cdigo no lo tira inmediatamente, sino que lo reserva
como un procedimiento en ese apartado General del formulario. Si en realidad queramos borrar el control y todo su

cdigo, debemos quitarlo de ese apartado General de nuestro formulario, pues en realidad, si no lo queremos, no har
otra cosa que estorbar. Para quitarlo basta con borrar todo el cdigo que aparece en la ventana de cdigo cuando
hacemos click sobre el nombre del control eliminado. Deberemos borrar todo el cdigo, incluida la cabecera donde figura
el nombre del control eliminado, y la parte final, que siempre termina con EndSub.
El primer estorbo lo observar si crea otro control con el mismo nombre, cosa fcil ya que VB da un nombre por defecto a
cada control (Command1, Command2....). El cdigo asociado al control eliminado pasar automticamente al nuevo
control con el mismo nombre.
Una aplicacin puede tener todo su cdigo escrito en los sucesivos procedimientos del formulario y de los controles que
tenga ese formulario.
Puede ocurrir que un determinado evento no est entre los posibles eventos de los controles de nuestra aplicacin.
Piense por ejemplo, el evento de que la variable A sea igual a la variable B. No existe en ninguno de los controles ese
procedimiento. No se preocupe, puede crear un procedimiento que se ejecute cuando su programa lo decida. Podemos
aadir cuantos procedimientos queramos. Estos procedimientos se aaden al formulario, y debern definirse por un
nombre que Vd. debe elegir. Para que se ejecuten las instrucciones (cdigo) incluido en ese procedimiento, basta
simplemente con nombrarlo por ese nombre.
Para insertar un procedimiento debe ir a la barra de men, hacer click sobre Insertar, y en el men que le desplegar,
volver a hacer click sobre Procedimiento. VB le presentar un cuadro donde le pedir el nombre, si quiere que sea un
procedimiento, una funcin o una propiedad. A lo largo del curso ir viendo que es cada cosa.
Escribiendo el cdigo en los sucesivos procedimientos, bien en los propios de cada objeto, bien en los procedimientos
que vayamos creando, es posible completar la aplicacin. Pero en una aplicacin larga esta forma de escribir el cdigo
no sera la mas adecuada. Es mas, posiblemente sera demasiado engorroso escribirla de esta forma, y muy
probablemente deberamos escribir el mismo cdigo para varios procedimientos, lo que alargara intilmente el
programa y el tiempo de desarrollo.
Para disponer de un sitio donde escribir parte (o la mayor parte) de su programa, puede introducir uno o varios mdulos.
Expliquemos lo que es un mdulo.
Un Mdulo es una parte del programa donde solamente puede escribir cdigo. Es igual que un formulario, sin interface
grfica. Un profesor de Visual Basic lo expresaba diciendo que un Mdulo es un Formulario sin cara. En un mdulo
pueden existir procedimientos al igual que en los formularios, pero como un mdulo no tiene interface grfica, esos
procedimientos debe introducirlos el programador tal y como explicamos un poco mas atrs. El mdulo tiene su propia
ventana de cdigo, al igual que un formulario, con un objeto nico, el apartado General. Aqu tambin tenemos la
seccin de declaraciones, al igual que los formularios. En esta seccin de declaraciones se comporta de manera similar a
la de los formularios, pero permite algo que no nos permite la seccin de declaraciones de un formulario : Declarar
variables que se pueden utilizar en todo el programa. Esto ya lo ha visto mas atrs, con las sentencia de
declaracin Global y Public.
Los mdulos se emplean para la declaracin de variables globales, y para escribir el cdigo de la aplicacin que sea
comn a varios formularios. Esto nos evita tener que repetir cdigo intilmente. Ese cdigo comn se escribir en un
procedimiento que previamente habremos insertado en este mdulo, y lo citaremos por su nombre desde cualquier parte
del programa.
Cual es el nombre de un procedimiento existente dentro de un mdulo ? Depende. Si estamos ejecutando cdigo escrito
en otro procedimiento dentro del mismo mdulo, es decir, si estamos dentro de ese mismo mdulo, basta con citarlo por
su nombre : p.e., si en el MduloA tenemos un procedimiento llamado Procedimiento1, y queremos llamarle desde una
lnea de cdigo dentro de ese mismo mdulo, basta con referirse a l con :
Procedimiento1
Si la lnea de cdigo donde nos vamos a referir a l est fuera de MduloA, deberemos referirnos a ese procedimiento
con :
MduloA.Procedimiento1
Lo mismo podemos decir para cualquier procedimiento insertado en un formulario. Desde dentro del formulario basta
con referirse a l citndolo por su nombre. Desde fuera de ese formulario deberemos citarle como :
Formulariox.Procedimientoy

donde damos por hecho que Formulariox es el nombre del formulario que lo contiene, y Procedimientoy es el nombre del
procedimiento.
Fjese en el punto usado como separador entre el nombre del formulario y el nombre del procedimiento. VB usa como
separador un punto. Usa el separador para separar el nombre de un control y una de sus propiedades (Label1.Caption),
para separar el nombre del formulario del nombre de uno de sus controles (Formulario1.label1.caption) Se ir
familiarizando con la terminologa VB segn vayamos avanzando en el curso.
Funciones
Al igual que introducimos Procedimientos, podemos introducir Funciones en nuestra aplicacin. Una Funcin es un
Procedimiento al que le pasamos uno o varios parmetros. (O Ninguno) Ver los Procedimientos y funciones mas
adelante (Cap. 15). Al igual que los Procedimientos, pueden ser pblicas (se vern en toda la aplicacin) o privadas (se
vern solamente en el formulario donde estn.
Main
Merece la pena pararse un poco para estudiar el Procedimiento Main. Para verlo con mas detalle, comentaremos como
comienza a trabajar una aplicacin realizada en Visual Basic.
Imaginemos una aplicacin que tiene 3 Formularios. En cada uno de ellos tiene cdigo. Logicamente la aplicacin tendr
que presentar uno de ellos en primer lugar. Deberemos decirle a Visual Basic cual es el formulario inicial, y ser ese por
el que empiece. En ese formulario dispondremos el cdigo necesario para que la aplicacin se ejecute en el orden
deseado.
Si hacemos click en la Barra de Men de Visual Basic, en Herramientas | Opciones obtendremos el siguiente cuadro de
dilogo :

Ver que tiene 4 pestaas, y actualmente tiene abierta la pestaa correspondiente a Proyecto, y tiene desplegada una
lista donde nos pide el Formulario Inicial. En esa lista figura tambin la expresin Sub Main. Si ponemos como formulario
inicial uno de los formularios, la aplicacin comenzar por ese formulario. Si en uno de los Mdulos existentes en el
proyecto, ponemos un procedimiento llamado Main, podemos comenzar la ejecucin de la aplicacin justamente por ese
procedimiento. En ese procedimiento pondremos el cdigo necesario para que, posteriormente, se muestre uno de los
formularios. Esto es muy practico cuando queremos hacer una funcin previa a mostrar cualquier formulario (abrir una
base de datos, por ejemplo). Para comenzar la aplicacin por Main se elige esa opcin en la lista Formulario Inicial.
Recuerde que Main debe estar en un Mdulo !
El cuadro de dilogo anterior sirve adems para otras cosas. Entre ellas poner el nombre del proyecto (nombre que no
aparecer por ninguna parte, solo en los datos internos de la aplicacin) y su descripcin.
En otra pestaa podemos configurar varias prestaciones del entorno de trabajo :
Guardar la aplicacin antes de ejecutar. Esta prestacin nos va a evitar muchos disgustos. Es muy prctico guardar la
aplicacin antes de ejecutarla, pues de esta forma evitamos que, si nuestra aplicacin tiene un error tal que hagamos
colgarse a Windows, siempre tendremos la aplicacin metida en el disco duro. Pero tambin es una pequea pesadez
tener que esperar a que se guarde cada vez que la ejecutamos.

Si tenemos la activada la casilla Declaracin de variables requerida nos pondr automticamente Option Explicit en el
encabezamiento de todas las secciones de declaraciones de la aplicacin.
Podemos elegir tambin las ventanas que queremos que estn siempre visibles, y que verifique automticamente la
sintaxis de una instruccin en el momento de escribirla.

La pestaa de Editor nos permite fundamentalmente 2 cosas :


Ver solamente el cdigo correspondiente al procedimiento que estamos escribiendo Ver el cdigo del Mdulo (o
Formulario) completo. En este ltimo caso es un poco mas difcil de manejar la ventana de cdigo, sobre todo si el
programador no est muy habituado a ello. Le presenta procedimiento tras procedimiento, separados por una lnea. Para
seleccionar una u otra opcin hay que seleccionar o deseleccionar la casilla Ver mdulo completo.
Cambiar el color de la letra y del fondo del cdigo, segn el tipo que sea (cdigo, comentario, error devuelto, etc.). Los
alumnos mas aventajados y con ganas de marear al profesor y, lo que es peor, a sus compaeros, conocen la forma de
poner como invisible una parte del texto del cdigo. Si observa comportamientos raros en el texto donde escribe el
cdigo, revise el cuadro de Colores de Cdigo.
FORMULARIO
El primer objeto Visual Basic con que nos encontramos es el FORMULARIO. De hecho, cada vez que iniciamos Visual
Basic (VB) nos presenta en pantalla un nuevo formulario, que tiene por defecto el nombre de Form1
El Formulario es un objeto, que sirve de soporte de otros objetos. El nombre de FORMULARIO lo toma precisamente
porque, al igual que un formulario de papel contiene textos escritos, lugares donde podemos escribir, figuras, cajas

donde podemos elegir una u otra opcin, etc., en este cuadro grfico que llamamos formulario, podemos introducir
textos escritos, lugares donde podemos escribir, figuras, cajas donde podemos elegir una u otra opcin ....
En realidad un formulario es lo que normalmente conocemos por VENTANA. El nombre de formulario le viene muy bien
cuando ese formulario es una ventana donde vamos a introducir datos alfanumricos. Cuando en vez de introducir datos,
lo que tenemos es, por ejemplo, una ventana donde se reproducen exactamente los controles de operacin de una
mquina, parece en principio que sera mas correcto el nombre de "ventana". De alguna forma lo hay que llamar, y esa
forma es FORMULARIO. Posiblemente a lo largo de estos apuntes nos referiremos al formulario con el nombre de
ventana, o incluso, pantalla. Procuraremos usar el nombre apropiado: FORMULARIO.

Forma inicial del formulario.

Ejemplo de un formulario para una aplicacin industrial. Este formulario reproduce el panel de control de un transmisor receptor de radio. En este caso, parece que el nombre de ventana le viene mejor que el de formulario. Observe que
dentro del formulario existen gran cantidad de objetos. Botones, que hacen la misma funcin que el botn real en el
equipo de radio, y un par de displays, que muestran un texto, en este caso las frecuencias de transmisin y recepcin.
Como cualquier objeto Visual Basic, un formulario tiene propiedades y procedimientos:
PROPIEDADES.
Name Nombre
Define al objeto durante la ejecucin del programa. Se introduce en tiempo de diseo y no se puede variar durante la
ejecucin. Nombre por defecto: Form1 (Form2 y sucesivos) Este nombre por defecto debe cambiarse, (debera cambiarse
por norma en el momento de introducir el formulario), ya que de no hacerlo corremos el riesgo de borrar el cdigo
existente de otro formulario del mismo nombre en el momento de guardar la aplicacin.

Caption Ttulo
Es el texto que aparecer en la barra de Ttulo cada vez que aparezca en pantalla este formulario. No tiene otra funcin
dentro del programa. El programa no accede a este formulario por el ttulo, sino por el nombre. Puede cambiarse en
tiempo de ejecucin.
NOTA.- No confundir Nombre (Name) con Ttulo (Caption)
Control Box Control "menos" del Formulario Valor por defecto : True
Propiedad booleana que admite los valores de true (verdadero) o False (Falso). Si esta propiedad es True, aparecer en la
esquina superior izquierda el "menos" para desplegar el men de control de este formulario. Si esta propiedad se pone
como False, no existir dicho "menos" y por tanto no se puede desplegar dicho men.
MinButton
MaxButton Valor por defecto: True
Botones (flechas) de minimizar y maximizar este formulario. Son igualmente propiedades booleanas, que admiten el
valor True o False. Si estn en true, aparecer la flecha correspondiente. Si estn en False, no aparecer dicha flecha.
Deben configurarse de una u otra forma, dependiendo si se quiere minimizar / maximizar este formulario durante la
ejecucin.
Nota. En los formularios MDI child, es necesario poner a true las propiedades ControlBox, MinButton y MaxButton para
poder maximizar el formulario hijo. De no ponerlas a true, s se pretende maximizar el formulario hijo, (Propiedad
WindowState=2) el formulario no aparece.
BorderStyle Tipo de borde
Define el tipo de borde que tendr el formulario durante la ejecucin. No se puede cambiar en tiempo de ejecucin,
Admite los siguientes valores:
0 - None El formulario no tiene borde alrededor
1 - Fixed Single
El formulario tendr un borde fino, y no podr cambiarse su tamao durante el tiempo de ejecucin. Con este valor, el
formulario puede tener un men de control, barra de ttulo y botones de maximizar y minimizar. Solo podr cambiarse de
tamao utilizando estos botones.
2-Sizable
El formulario tendr borde grueso, y se podr cambiar su tamao en tiempo de ejecucin mediante los botones de
maximizar y minimizar, y mediante el arrastre de uno de los bordes con el ratn.
3 - Fixed Dialog
El formulario tendr borde grueso, y no se podr redimensionar durante la ejecucin. No puede tener los botones de
maximizar ni minimizar.
4 - Fixed ToolWindow
En las versiones de 16 bits de Windows y Windows NT 3.51 y anteriores se comporta como Fixed Single. No puede
cambiar de tamao. En Windows 95 muestra el botn Cerrar, y el texto de la barra de titulo aparece con un tamao de
fuente reducido. El formulario no aparece en la barra de tareas de W95.
5 - Sizable ToolWindow
En las versiones de 16 bits se comporta como Sizable. En W95 muestra el botn Cerrar y el texto de la barra de titulo
aparece con un tamao de fuente reducido. El formulario no aparece en la barra de tareas de W95.
Valor por defecto: 2 . Sizable
Nota: Al cambiar a determinados valores, las propiedades MaxButton y MinButton se ponen a False. Pueden cambiarse a
True posteriormente.
Appearance Apariencia Valor por defecto: 3D
Admite los valores 0 (=Flat, plano) y 1 (=3D) Si tiene el valor 1 (3D), el formulario aparecer con cierto efecto
tridimensional, y los controles que le introduzcamos a este formulario aparecern como esculpidos dentro de l. Con
valor 0 (Flat) en esta propiedad, el formulario aparecer durante la ejecucin como una superficie plana. El color de
fondo se ve afectado al cambiar esta propiedad. Si se cambia a 3D, el fondo (Backcolor) toma el color definido en
Windows en el Panel de Control. Si se cambia a Flat, toma el color blanco
Autoredraw Valor por defecto: False

Propiedad booleana. Esta propiedad, estando en True, permite actualizar el contenido del formulario y de sus controles
incluso cuando no estn visibles. Imaginemos que en este formulario existe un texto, una etiqueta (Label) o caja de texto
(Text Box) cuyo texto se haya cambiado, bien por programa, bien por una entrada, mientras este formulario no estaba
visible. Lo mismo podemos decir de las propiedades de cualquier otro control. Si esta propiedad Autoredraw est en
False, al hacer visible este formulario, aparecer igual que cuando se ocult. Si esta propiedad est en True, aparecer
actualizado.
Backcolor Color del fondo
Establece el color del fondo del formulario. Puede cambiarse en tiempo de ejecucin.
Valor por defecto: El establecido en el Panel de Control de Windows.
ClipControls Valor por defecto: False
Propiedad Booleana. Establece si un evento Paint vuelve a dibujar el objeto entero (True) o si solamente dibujan las
partes que han sufrido cambios (False)
DrawMode
Establece un valor que determina el aspecto de la salida de un mtodo grfico o el aspecto de un control Shape o Line.
Ver mas adelante los efectos de esta propiedad.
DrawStile Valor por defecto : 0
Establece el estilo de lnea de la salida de mtodos grficos:
Valores: 0 - Lnea continua
1 - Rayas
2 - Puntos
3 - Raya-Punto
4 - Raya - Punto - Punto
5 - Transparente
6 - Continuo interior.
DrawWidth Valor por defecto: 1
Establece el ancho de una lnea dibujada. El valor debe expresarse en pixeles.
Enabled Activado Valor por defecto: True
Propiedad booleana. Si est en True, el formulario est activado y se puede interactuar con l. Si est en False, se
desactiva el formulario, impidiendo de esta forma, que se pueda trabajar con l.
ForeColor Valor por defecto: Negro
Establece el color del primer plano del formulario. Es el color que tendrn las letras si escribimos en l, o los dibujos, si lo
que hacemos es dibujar. En tiempo de diseo, determina el color de la rejilla,.
FillStyle Tipo de relleno Valor por defecto: 2
Establece el modo de rellenar controles Shape, o figuras (crculos o cuadrados) creados con los mtodos grficos Circle y
Line.
Valores: 0 - Continuo
1 - Transparente
2 - Lnea Horizontal
3 - Lnea Vertical
4 - Diagonal hacia arriba
5 - Diagonal hacia abajo
6 - Cruzado
7 - Diagonal cruzada
FillColor Color de relleno
Especifica el color del relleno contemplado en FillStyle.
Font Tipo de letra Valor por defecto: El determinado en la personalizacin.
Especifica el tipo y tamao de la letra que se usar en el formulario. Al seleccionar esta propiedad en la ventana de
propiedades, aparece un cuadro de dialogo donde se eligen ambos parmetros.

Cuando introduzca nuevos controles en el Formulario, la propiedad Font de estos controles tomar el valor que tenga
esta propiedad en el Formulario. Puede servirle este pequeo truco para utilizar en todos los controles una determinada
fuente sin tener que teclearla para cada control.
FontTranparent Texto Transparente Valor por defecto: True
Establece si el texto o grfico de fondo del formulario se muestra (True) o no se muestra entre los caracteres de texto
escritos en el propio formulario.
FontSize Tamao de letra
Establece el tamao de la letra. Esta propiedad, que puede variarse en tiempo de ejecucin, vara solamente el tamao,
y no el tipo de letra. El tamao debe expresarse en puntos. Mximo, 2160 puntos.
FontBold, FontItalic, FontStrikethru, FontUnderline
Permiten, en tiempo de ejecucin, cambiar un texto a negrita, cursiva, tachado y subrayado. Son propiedades booleanas
True / False
Height Altura Valor por defecto: No existe
Define la altura del formulario. El valor de esta propiedad no se introduce normalmente como un dato numrico, sino que
toma el valor automticamente, dependiendo de las dimensiones del formulario durante el tiempo de diseo. Puede
cambiarse durante el tiempo de ejecucin.
HelpContextID Valor por defecto: 0
Establece un nmero de contexto asociado para este formulario. Este nmero se aplica para determinar la ayuda
interactiva asociada a este formulario. Vea mas adelante, el tema Ayuda de Windows.
Puede tomar los siguientes valores : 0 - No se especifica nmero de contexto
>0 Un entero que especifique un contexto vlido.
Icon Icono
Esta propiedad define el icono que va a representar a este formulario cuando est minimizado. Si el formulario es el
formulario padre o formulario de inicio de una aplicacin, este icono es el que toma el Asistente de Instalacin para
colocarlo como icono de apertura del programa en el grupo de programas Windows correspondiente. Como valor de esta
propiedad se le puede asignar directamente el icono o el nombre de un archivo (con su path correspondiente) que lo
contiene, hacindolo directamente sobre la caja de propiedades.
Valor por defecto: el icono que se le haya programado en la personalizacin.
KeyPreview Valor por defecto: False
Propiedad Booleana. Cuando un formulario tiene dentro de s varios controles, uno de ellos es el que est activo. En estas
condiciones, si se pulsa una tecla, esa pulsacin la recibe en primer lugar el control que est activo, y si ste no la
procesa, pasa esa pulsacin al formulario. Para hacer que esa pulsacin pase directamente al formulario, debe ponerse
esta propiedad en True.
Left Borde Izquierdo Valor por defecto: No existe
Indica la posicin del borde izquierdo del formulario. Normalmente no se introduce como valor numrico, sino que lo
toma automticamente de la posicin que tenga el formulario en el tiempo de diseo. Puede cambiarse en tiempo de
ejecucin, para mover el formulario.
LinkMode Valor por defecto: 0
Permite que una aplicacin destino inicie una conversacin DDE con el formulario (origen de datos). Puede tomar los
siguiente valores:
0 - No hay interaccin DDE
1 - Source. Indica que este Formulario es origen de una comunicacin DDE. El dato que se va a traspasar en esa
comunicacin DDE estar en un TextBox, en un Label o en un PictureBox de este Formulario.
LinkTopic
Establece el tema al que este formulario va a responder a una conversacin DDE, cuando funciona como origen. Es por
este tema por el que se debe llamar a este formulario cuando acta de origen en una conversacin DDE
MDIChild Valor por defecto: False
Establece que este formulario es un formulario Hijo dentro de un formulario MDI. No se puede cambiar en tiempo de
ejecucin. Es una propiedad booleana
True = es formulario hijo False =No lo es

MouseIcon Valor por defecto: ninguno


Establece un icono personalizado para el puntero del ratn cuando est encima de este Formulario. Este icono puede ser
un bit-map de los existentes en el directorio Icons de Visual Basic o cualquiera que tengamos. Si se pone 99 como valor
de la propiedad MousePointer (siguiente), cada vez que el puntero del ratn pase por este Formulario, cambiar su forma
y adoptar la del icono elegido.
MousePointer Valor por defecto: flecha
Determina la forma del puntero del ratn cuando se coloca encima del formulario. Puede elegirse uno de los punteros
preestablecidos (15 en total) o el personalizado visto en la propiedad anterior. Para elegir ese icono personalizado,
debemos poner en esta propiedad el valor 99.
Picture Grfico Valor por defecto: No existe
Mediante esta propiedad podemos poner un grfico como fondo del formulario. El grfico puede ser un bit-map o un
fichero .ICO
ScaleHeight, ScaleWidth, ScaleMode,
Indican la unidad de medida de dimensin de altura y anchura del Formulario. ScaleMode indica en qu unidades de
medida se van a medir esas dimensiones. Acepta Twips (1), Point(2), Pixel (3), Character (4), Pulgadas (Inch) (5),
Milmetros (6), Centmetros (7). Si colocamos la propiedad ScaleMode en cualquiera de estos valores, las propiedades
ScaleHeight y ScaleWidth nos vendrn dadas automticamente dependiendo del ancho del Formulario, y no se extrae si
encuentra para estas propiedades valores tan peregrinos como 4815 y 7423. Al haber elegido la unidad de medida, los
valores de ancho (ScaleWidth) y alto (ScaleHeight) sern los que tengan que ser, medidos en la unidad que hemos
elegido. Podemos elegir una cifra para el ancho y el alto del Formulario de forma que podamos controlar mejor las
distintas posiciones que van a ocupar en l los controles, los textos o los dibujos. Podemos poner, por ejemplo, que el
Formulario mida 400 de ancho (ScaleWidth = 400) y 300 de alto (ScaleHeight = 300) forzndole estas propiedades, bien
en tiempo de diseo en la caja de propiedades, o en tiempo de ejecucin mediante cdigo. Entonces sabemos que el
formulario, independientemente de las dimensiones fsicas que tenga sobre la pantalla, medir 400 de ancho y 300 de
alto, y si en estas condiciones queremos colocar un control o un dibujo justo en el medio del Formulario, sabemos que
tenemos que colocarle en las coordenadas 200, 150. Que unidad de medida estaremos utilizando entonces en el
Formulario ? Unas definidas por el usuario (distintas para el ancho y el alto) que sern las necesarias para que el
Formulario mida de ancho lo que le hayamos puesto en la propiedad ScaleWidth y de alto lo que le hayamos puesto en la
propiedad ScaleHeight. Observe que la propiedad ScaleMode se ha cambiado automticamente a User (0) al introducir
las dimensiones de ancho y alto que nosotros queremos.
Estas unidades de medida afectarn a los controles que metamos en este Formulario. Se medirn en su ancho y alto con
la unidad de medida definida para el ancho y alto del Formulario. Lgicamente tambin afectar a las propiedades Left y
Top de los controles, pero estas propiedades se vern afectadas adems por las propiedades ScaleLeft y ScaleTop del
Formulario que se vern a continuacin.
ScaleLeft, ScaleTop
Estas propiedades, medidas en la unidad de medida elegida para el ancho y alto mediante las propiedades ScaleMode,
ScaleWidth y ScaleHeight anteriores, expresan las coordenadas iniciales de la parte izquierda y de la parte superior
respectivamente del Formulario. Estas propiedades no afectan a la posicin del Formulario en la pantalla (Si est
maximizado seguir ocupando toda la pantalla, si est en "Normal" ocupar el mismo sitio que se dio en tiempo de
diseo). Supongamos que se le asigna a un Formulario, las propiedades ScaleWidth = 400, y ScaleHeight = 300. Si
colocamos un control justamente en el centro del Formulario tendr sus propiedades Top =150 y Left=200. Si ponemos
ahora las propiedades del Formulario ScaleLeft a 30 y ScaleTop a 10, ese control, para seguir en el centro del Formulario
deber tener sus propiedades Top a 160 (150 + 10) y Left a 230 (200 + 30).
Recuerde que las medidas de un formulario crecen, desde la esquina superior izquierda, segn avanzamos hacia abajo y
hacia la derecha.
Como aclaracin de las relaciones entre distintas unidades de medida, puede ver en la siguiente table la
correspondencia entre cada una de ellas y la unidad imaginaria Twip.
1 Point=20 Twips ; 1Pixel=15 Twips : 1 Charecter=240 Twips ; 1 Inch (pulgada) =1440 Twips 1mm=56,52 Twips 1
cm=566 Twips
Tag Valor por defecto: No existe

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar al formulario informacin adicional para fines
externos a la programacin. Pero tambin le puede servir para almacenar en ella una variable para que la use un cdigo
ajeno al formulario. El autor de estos apuntes tiene por costumbre utilizar la propiedad Tag del formulario inicial para
guardar el parmetro que se le pasa a algunos programas para acceder a ellos con unos determinados privilegios.
Resumiendo, est ah para lo que el programador quiere.
Top Posicin del borde superior Valor por defecto: No existe
Esta propiedad establece la posicin del borde superior del formulario. Normalmente no se introduce como valor
numrico sino que lo toma automticamente de la posicin que tenga el Formulario durante el tiempo de diseo Este
valor puede cambiarse durante la ejecucin para, conjuntamente con Left, variar la posicin del Formulario. Los valores
de Top y Left definen la esquina superior izquierda del Formulario.
Visible Valor por defecto: True
Propiedad Booleana. Asignndole el valor True la pantalla es visible, y asignndole el valor False, no se ve. Este valor
puede cambiarse durante el tiempo de ejecucin para ocultar y hacer visible el formulario.
Width Ancho Valor por defecto: No existe
Define la anchura del formulario. Normalmente no se introduce como valor numrico sino que lo toma automticamente
del tamao que tenga el formulario durante el tiempo de diseo. Juntamente con Height define el tamao del formulario.
Puede cambiarse durante el tiempo de ejecucin.
WindowState
Establece el estado en el que aparecer el formulario cuando se activa y presenta en pantalla. Admite tres opciones:
0 - Normal El formulario recupera la posicin y tamao que tena en el tiempo de diseo.
1 - Minimizado El formulario aparece minimizado, representado por su icono.
2 - Maximizado El formulario aparece maximizado, ocupando toda la pantalla.
PROCEDIMIENTOS
Activate Activacin Click Click
DblClick Doble click Deactivate Desactivacin
DragDrop Arrastrar y soltar DragOver Arrastrar por encima
GotFocus Obtener el foco KeyDown Mantener pulsada una tecla
KeyPress Pulsar una tecla KeyUp Soltar una tecla
LinkError Error de enlace LinkExecute Ejecucin de un enlace de datos
LinkOpen Romper el enlace Load Cargar el formulario
LostFocus Perder el foco MouseDown Pulsar una tecla del ratn
MouseMove Mover el ratn (Detecta la posicin del ratn sobre el formulario)
MouseUp Soltar una tecla del ratn Paint Pintar
QueryUnload Confirmacin de descarga Resize Cambio de tamao
Unload Descargar el formulario
Un Formulario sirve, fundamentalmente, de contenedor de controles. Es la ventana de Windows de nuestra aplicacin.
Una aplicacin puede tener varios Formularios y dentro de cada uno de ellos, los controles necesarios para cada paso o
estado de la aplicacin.
Un Formulario puede servir tambin como soporte de textos o dibujos.
CONTROLES
Una vez introducido un Formulario, se pueden colocar los objetos (controles) que forman parte de la aplicacin. Estos
controles se irn viendo en prximos captulos.
Los controles, lo mismo que el Formulario, tienen Propiedades y Procedimientos.
Las Propiedades definen las caractersticas del Control. Los Procedimientos definen la forma de actuar (la forma de
proceder) de un control frente a un evento.
Tanto las propiedades como los procedimientos deben ser definidos por el programador. Las propiedades dejan un
pequeo margen de actuacin, los procedimientos son en su totalidad, definidos por el programador. Estos
procedimientos forman parte del programa. Podra incluso hacerse una aplicacin que no tuviese mas cdigo que el
introducido en los procedimientos.

Para colocar un control en un Formulario, basta con "tomarlo" de la caja de herramientas existente en la parte izquierda
de la pantalla de VB y llevarlo al Formulario. Si no existiese el control deseado en la caja de herramientas, deberemos ir a
"cogerlo" a Controles personalizados que est en el men desplegable Herramientas de la barra de Men de VB. Se elige
el nuevo control, marcando la caja de opcin a la izquierda de su nombre, y haciendo click en ACEPTAR. Este control ya
pasa a la caja de herramientas.
COMMAND BUTTON BOTON DE COMANDO
El Command Button es un objeto que sirve para introducir datos a travs de la pantalla. El Botn de Comando tiene la
siguiente forma:

El botn de comando puede usarse para la entrada de datos con el ratn, o para validar cualquier operacin. El tamao
puede cambiarse a voluntad, pero la forma siempre es rectangular. En la figura anterior vemos dos botones de comando,
uno de ellos (el Command2) marcado con unos puntos en su contorno. Estos puntos nos permiten variar su tamao en
tiempo de diseo. Tambin puede cambiarse su tamao y posicin en tiempo de ejecucin.
PROPIEDADES
Name Nombre
Es el nombre que define a este objeto durante la ejecucin del programa. No se puede cambiar en tiempo de ejecucin.
El nombre por defecto es Command1, Command2, etc. Estos nombres por defecto deberan cambiarse por otros que nos
indiquen algo respecto a este control, aunque en este caso no es tan imprescindible como para los formularios.
Caption Ttulo
Es el texto que aparece en el botn. Puede cambiarse en tiempo de ejecucin. No tiene otra funcin dentro del
programa.
NOTA.- No confundir Nombre (Name) con Ttulo (Caption)
Appearance Apariencia
Determina la forma del botn. Admite los valores de Flat (Plano) y 3D. No se aprecia en gran medida la diferencia.
Backcolor Color de fondo
Es el color de un pequeo cuadrado que aparece rodeando el ttulo, NO el color del botn, que es invariable. Puede
cambiarse en tiempo de ejecucin.
Cancel
Establece un valor que indica si un botn de comando es el botn Cancelar de un formulario. Es una propiedad booleana,
y admite los valores True o False. Puede utilizar la propiedad Cancel para dar al usuario la opcin de cancelar los cambios
que no se han hecho efectivos y devolver el formulario a su estado anterior. En un formulario slo puede haber un botn
de comando con la propiedad Cancel = True.
Default
Establece un valor que determina el control CommandButton que es el botn de comando predeterminado de un
formulario. Slo un botn de comando de un formulario puede ser el botn de comando predeterminado. Cuando Default
se define a True para un botn de comando, se define automticamente a False para el resto de los botones de comando
del formulario. Cuando la propiedad Default del botn de comando est establecida a True y su formulario primario est
activo, el usuario puede elegir el botn de comando (invocando su evento Click) presionando ENTRAR. Cualquier otro
control que tuviera el enfoque no recibe evento de teclado (KeyDown, KeyPress o KeyUp) de la tecla ENTRAR a menos
que el usuario haya movido el enfoque a otro botn de comando del mismo formulario. En este caso, al presionar
ENTRAR se elige el botn de comando que tiene el enfoque en lugar del botn de comando predeterminado.
DragIcon
Establece el icono que se presenta como puntero en una operacin de arrastrar y colocar.
DragMode
Establece un valor que determina si se usa el modo de arrastre manual o automtico en una operacin de arrastrar y
colocar. Los valores posibles de nmero son:
0 Manual (Predeterminado)

1 Automtico
Enabled Habilitado
Propiedad Booleana que habilita o deshabilita el botn. Cuando est deshabilitado (Enabled = False), el botn no tiene
efecto, y su apariencia vara, presentando un tono plido tanto en su cuerpo como en su ttulo. Puede variarse en tiempo
de ejecucin.
Font Fuente
Es el tipo de letra para el ttulo. Puede cambiarse en tiempo de ejecucin.
Height Altura
Establece la altura del botn. Normalmente esta propiedad no se introduce numricamente, sino que la toma
automticamente de las dimensiones que se le den al botn en tiempo de diseo. Puede cambiarse, cambiando el valor
a esta propiedad, en tiempo de ejecucin.
HelpContextID
Establece un nmero de contexto asociado para este control. Este nmero se aplica para determinar la ayuda
interactiva.
Puede tener los siguientes valores:
0 = No se especifica nmero de contexto
>0 Un entero que especifica un contexto vlido.
Index Indice
En el caso de que se tengan varios botones que realicen una funcin similar (Las teclas numricas de una calculadora,
p.e.) puede hacerse un array con estos botones de comando. Todos tendrn el mismo nombre, y se diferencian por un
ndice. Esta propiedad Index toma el nmero de ese ndice.
Left
Posicin de su parte izquierda. Indica la posicin del botn, concretamente de la parte izquierda del mismo.
Normalmente esta propiedad no se introduce numricamente, sino que la toma automticamente de la posicin que se
le de al botn en tiempo de diseo. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecucin.
MouseIcon Icono para el puntero del ratn
Determina el icono que presenta al puntero del ratn cuando pasa por encima del botn, cuando se especifica en la
propiedad MousePointer que el puntero del ratn es el definido por el usuario. (Custom)
MousePointer Puntero ratn
Determina la forma del puntero del ratn cuando ste pasa por encima del botn. Puede elegirse uno de los punteros
preestablecidos (15) o incluso uno diseado especialmente. Para especificar que el puntero es uno diseado
especialmente, hay que poner a esta propiedad el valor 99 (Custom), y en este caso aparecer el icono determinado por
la propiedad MouseIcon
TabIndex N de orden para tabulador
Cuando disponemos de varios controles en un mismo formulario, solamente uno de ellos tiene el foco. Esta expresin de
tener el foco significa que ese control est remarcado y en esa condicin, si pulsamos la tecla ENTER hara el mismo
efecto que hacer click con el ratn en ese control. Esto es necesario, ya que existen ordenadores que no disponen de
ratn (tpico de algunos porttiles). En estos casos, para elegir uno u otro control debemos pulsar repetidas veces la
tecla TABulador. El foco ir cambiando de uno a otro control (pueden ser controles de distinto tipo) cada vez que
pulsemos la tecla TABulador. Esta propiedad TabIndex marca el orden que seguir el foco a travs de cada control.
TabStop Sale del control de la tecla TAB
Propiedad booleana. Cuando esta propiedad est a False, el botn no tomar el foco cuando se pulse la tecla del
Tabulador. Sin embargo sigue manteniendo el ndice de la propiedad TabIndex descrita anteriormente. Puede cambiarse
en tiempo de ejecucin. Esto nos permite descartar algn botn de tomar el foco, cuando por facilidad para el usuario,
sea conveniente en determinados puntos del programa.
Tag
Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar a este control alguna informacin adicional para
fines externos a la programacin. Similar a la del formulario.
Top

Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de ejecucin. Esta propiedad,
juntamente con Left definen la esquina superior izquierda del botn de comando. Normalmente esta propiedad no se
introduce numricamente, sino que la toma automticamente de la posicin que se le den al botn en tiempo de diseo.
Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecucin.
Visible Visible
Propiedad Booleana. Si es true, el botn se ve, si es False el botn no se ve. Puede cambiarse en tiempo de ejecucin. De
hecho, es un recurso muy usado para dejar visibles en un formulario, solamente los objetos (controles) necesarios.
WhatThisHelpID (Propiedad, Windows 95)
Devuelve o establece un nmero de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda
interactiva con el men emergente Qu es esto? de la Ayuda de Windows 95.
Width Ancho
Define el ancho del botn. Con Height determina la dimensin del botn.
PROCEDIMIENTOS DEL BOTON DE COMANDO
Click DragDrop DragOver GotFocus
KeyDown KeyPress KeyUp LostFocus
MouseDown MouseMove MouseUp
El botn de Comando no tiene el procedimiento DbClick !
LABEL ETIQUETA
Una etiqueta es un control que nos permite presentar un texto. La etiqueta debe usarse en aquellos casos en los que
exista una informacin esttica o dinmica que no deba ser cambiada por el operador.
Puede adoptar estas formas: con borde tridimensional, borde plano o sin borde, y el texto justificado a la izquierda, a la
derecha o centrado.

Se ha incluido la trama para poder observar los lmites de la etiqueta sin borde.
PROPIEDADES
Alignment Justificacin
Establece si el texto se justifica a la izquierda, a la derecha, o se centra sobre la etiqueta.
Appearance Apariencia Plana o tridimensional.
Autosize Tamao
Propiedad booleana. Si se pone a True, el tamao de la etiqueta se ajusta al texto que contiene.
Backcolor Color de fondo
Es el color de fondo de la etiqueta. Puede cambiarse en tiempo de ejecucin.
BackStyle Tipo de fondo
Opaco o transparente. Cuando se selecciona transparente, se ve solamente el texto de la etiqueta. Cuando se selecciona
opaco, este texto se v sobre un fondo gris.
BorderStyle Tipo de borde
Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo tridimensional, y eligiendo con
borde en esta propiedad, el aspecto adopta una forma como incrustada en el formulario.
Caption Ttulo
Es el texto de la etiqueta. Puede cambiarse en tiempo de ejecucin, lo que permite usar la etiqueta como dispositivo de
presentacin de textos. No se puede cambiar por el procedimiento de arrastrar con el ratn, por lo que es el control
adecuado cuando se quiere presentar un texto que no se pueda cambiar por el operador.

DataField DataSource
Establecen la base de datos y el campo donde est el texto Datos que se llevar a la propiedad Caption. Estas
propiedades permiten presentar los datos de una Base de Datos mediante un procedimiento muy sencillo, con la ayuda
de un control Data (Se ver mas adelante)
DragIcon
Establece el icono que se presenta como puntero en una operacin de arrastrar y colocar.
DragMode
Establece un valor que determina si se usa el modo de arrastre manual o automtico en una operacin de arrastrar y
colocar. Los valores posibles de nmero son:
0 Manual (Predeterminado)
1 Automtico
Enabled Habilitado
Propiedad Booleana que habilita o deshabilita la etiqueta Cuando est deshabilitado (Enabled = False), no tienen efecto
los eventos que se produzcan sobre ella, y su apariencia vara, presentando un tono plido tanto en su cuerpo como en
su ttulo. Puede variarse en tiempo de ejecucin.
Font Fuente
Es el tipo de letra para el ttulo. Puede cambiarse en tiempo de ejecucin.
ForeColor
Es el color de la letra de la etiqueta. Puede cambiarse en tiempo de ejecucin.
Height Altura
Establece la altura de la etiqueta. Normalmente esta propiedad no se introduce numricamente, sino que la toma
automticamente de las dimensiones que se le den a la etiqueta en tiempo de diseo.
Index Indice
En el caso de que se tengan varios etiquetas que realicen una funcin similar puede hacerse un array con etiquetas.
Todas tendrn el mismo nombre, y se diferencian por un ndice. Esta propiedadIndex toma el nmero de ese ndice.
Left Posicin de su parte izquierda
Indica la posicin de la etiqueta, concretamente de su parte izquierda. Normalmente esta propiedad no se introduce
numricamente, sino que la toma automticamente de la posicin que ocupaba en tiempo de diseo. Puede cambiarse,
cambiando el valor a esta propiedad, en tiempo de ejecucin.
LinkItem LinkMode LinkTimeout LinkTopic
Estas propiedades establecen la forma en que debe llevarse a cabo una conexin DDE con otra aplicacin. Se vern con
mas detalle al estudiar los enlaces DDE
MouseIcon Icono del puntero del ratn
MousePointer Puntero ratn
Para estas propiedades es aplicable todo lo dicho para las mismas en el Botn de Comando
Name Nombre
Es el nombre de la etiqueta con el que se le conocer a lo largo del programa
TabIndex N de orden
Al igual que para los botones de comando, la etiqueta tiene propiedad TabIndex. Sin embargo, una etiqueta NUNCA
tomar el foco. Vea la propiedad UseMneumonic mas adelante.
Tag
Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar a este control alguna informacin adicional para
fines externos a la programacin.
Top
Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de ejecucin. Esta propiedad,
juntamente con Left definen la esquina superior izquierda del botn de comando. Normalmente esta propiedad no se
introduce numricamente, sino que la toma automticamente de la posicin que se le den a la etiqueta en tiempo de
diseo. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecucin.
UseMneumonic

Devuelve o establece un valor que indica si al incluir el signo (&) en el texto de la propiedad Caption del control Label se
define una tecla de acceso. Es una propiedad Booleana.
Los valores que puede tomar son True o False.
True (Predeterminado) Los caracteres (&) que aparezcan en el texto de la propiedad Caption definen al carcter siguiente
como tecla de acceso. El signo (&) no aparece en la interfaz del control Label.
False Los caracteres (&) que aparezcan en el texto de la propiedad Caption aparecen como tales en la interfaz del control
Label.
En tiempo de ejecucin, al presionar ALT+ la tecla de acceso definida en la propiedad Caption del control Label, el
enfoque se desplaza al control siguiente al control Label en el orden de tabulacin.
Visible Visible
Propiedad Booleana. Si es true, la etiqueta se ve, si es False no se ve. Puede cambiarse en tiempo de ejecucin.
WhatThisHelpID (Propiedad, Windows 95)
Devuelve o establece un nmero de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda
interactiva con el men emergente Qu es esto? de la Ayuda de Windows 95.
Width Ancho
Define el ancho de la etiqueta. Con Height determina la dimensin de la misma.
WordWrap
Devuelve o establece un valor que indica si un control Label con el valor True en su propiedad AutoSize se expande
vertical u horizontalmente para adaptarse al texto especificado en su propiedad Caption. Es una propiedad Booleana.
Esta propiedad puede cambiarse en tiempo de ejecucin
True El control Label se expande o contrae horizontal y verticalmente para adaptarse al texto y al tamao de la fuente.
Contempla para la expansin horizontal la colocacin de los espacios del texto.
False (Predeterminado) El texto no se ajusta a la siguiente lnea; el control Label se expande o contrae horizontalmente
para adaptarse a la longitud del texto y verticalmente para adaptarse al tamao de la fuente y al nmero de lneas.
Nota Si se establece False en AutoSize, el texto siempre se ajustar a la lnea siguiente, independientemente del tamao
del control Label y del valor de la propiedad WordWrap. Esto puede ocultar parte del texto, ya que el control Label no se
expande en ninguna direccin.
PROCEDIMIENTOS DEL LABEL
Click Change DbClick DragDrop
DragOver LinkClose LinkError LinkNotify
TEXT BOX CAJAS DE TEXTO
Las cajas de texto son los controles en los que Visual Basic presenta o introduce textos. Es por tanto un control
bidireccional. Normalmente se usan para introducin de textos, o para la presentacin de aquellos que el operador
pueda cambiar. Para cambiar o escribir un texto en una caja de texto, basta con conseguir que esa caja de texto tenga el
foco y teclear el texto en el teclado. Esto se puede lograr, bien haciendo click con el ratn en esa caja de texto, bien con
la tecla TAB, bien por programa.
La caja de texto no se debe usar nunca para presentar textos que el operador de la aplicacin no deba cambiar. sese
para ello la etiqueta, control no bidireccional, que adems tiene la ventaja de ocupar menos memoria de programa.
Las cajas de texto pueden tener una o varias lneas, segn est la propiedad Multiline. La capacidad mxima de una caja
de textos es de 64 Kbytes.
La forma de una caja de texto es la siguiente, dependiendo de las propiedades BorderStyle y Appearance:

PROPIEDADES
Alignment Justificacin

Establece si el texto se justifica a la izquierda, a la derecha, o se centra sobre la etiqueta. Esta propiedad solamente
tiene efecto cuando la propiedad Multiline est a True, ignorndose en caso contrario. Es decir, permite colocar el texto
justificado a la derecha cuando ese texto puede ser de varias lneas. Para una nica lnea, se justifica siempre a la
izquierda.
Esta propiedad no puede cambiarse en tiempo de ejecucin, pero s puede leerse en que condicin est.
Appearance Apariencia
Plana o tridimensional.
Backcolor Color de fondo
Es el color de fondo de la caja de texto. Puede cambiarse en tiempo de ejecucin.
BorderStyle Tipo de borde
Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo tridimensional, y eligiendo con
borde en esta propiedad, el aspecto adopta una forma como incrustada en el formulario.
DataField
DataSource Fuente de Datos
Establecen la base de datos y el campo donde est el texto que se llevar a la propiedad Text. Estas propiedades
permiten presentar de una forma muy sencilla datos de una Base de Datos. Se vern cuando se estudie el control Data y
el motor de bases de datos
DragIcon
Establece el icono que se presenta como puntero en una operacin de arrastrar y colocar.
DragMode
Establece un valor que determina si se usa el modo de arrastre manual o automtico en una operacin de arrastrar y
colocar. Los valores posibles de nmero son:
0 Manual (Predeterminado)
1 Automtico
Enabled Habilitado
Propiedad Booleana que habilita o deshabilita la etiqueta Cuando est deshabilitado (Enabled = False), no tienen efecto
los eventos que se produzcan sobre el TextBox. No se puede escribir el l ni pasarle el foco, pero s se le puede cambiar
el texto mediante el programa. Puede ser una buena alternativa para impedir que el usuario pueda cambiar un
determinado texto. Esta propiedad puede variarse en tiempo de ejecucin.
Font Fuente
Es el tipo de letra que se utilizar en el TextBox. Puede cambiarse en tiempo de ejecucin.
ForeColor Color de la letra
Determina el color de las letras del texto.
Height Altura
Establece la altura de la caja de texto. Normalmente esta propiedad no se introduce numricamente, sino que la toma
automticamente de las dimensiones que se le den a la caja en tiempo de diseo.
HelpContextID
Establece un nmero de contexto asociado para este control. Este nmero se aplica para determinar la ayuda
interactiva.
Puede tener los siguientes valores:
0 = No se especifica nmero de contexto
>0 Un entero que especifica un contexto vlido.
Index Indice
En el caso de que se tengan varias cajas de texto que realicen una funcin similar puede hacerse un array con ellas.
Todas tendrn el mismo nombre, y se diferencian por un ndice. Esta propiedadIndex toma el nmero de ese ndice.
Left Posicin de su parte izquierda.
Indica la posicin de la caja de texto, concretamente de su parte izquierda. Normalmente esta propiedad no se introduce
numricamente, sino que la toma automticamente de la posicin que ocupaba en tiempo de diseo. Puede cambiarse,
cambiando el valor a esta propiedad, en tiempo de ejecucin.
LinkItem LinkMode LinkTimeout LinkTopic

Estas propiedades establecen la forma en que debe llevarse a cabo una conexin DDE con otra aplicacin. Se vern con
mas detalle al estudiar los enlaces DDE
Locked
Establece si el texto se puede editar, es decir, cambiar. Cuando se pone esta propiedad a True, el texto existente en la
caja puede resaltarse con el ratn, e incluso copiarlo al portapapeles, pero no puede variarse tecleando un nuevo texto.
Se puede cambiar por programa, cambiando la propiedad Text.
Si est en False, puede cambiarse el texto mediante teclado.
MaxLenght
Indica, si se establece, la longitud mxima del texto.
MouseIcon Puntero del ratn personalizado
MousePointer Puntero ratn
Determina la forma del puntero del ratn cuando ste pasa por encima de la caja de texto. Puede elegirse uno de los
punteros preestablecidos en esta propiedad, (15 en total) e incluso un puntero personalizado en la propiedad MouseIcon.
Para que aparezca este puntero personalizado, MousePointer debe ponerse al valor 99. Lo tpico para esta propiedad es
el I-Beam (barra vertical)
Name Nombre
Es el nombre de la caja de texto con el que se le conocer a lo largo del programa
PasswordChar
En ocasiones, es conveniente que no se pueda leer lo que se escribe en la caja de texto, caso por ejemplo de la entrada
de un password o palabra de paso. Esta propiedad nos permite indicar un carcter que sustituye a cualquier carcter que
tenga la caja de texto. (Tpicos el * o ?). El texto que tenga en la propiedad Text no cambia por el hecho de presentar en
pantalla un carcter distinto. Esta propiedad puede cambiarse en tiempo de ejecucin. Para quitar el PasswordChar basta
con forzarlo al carcter nulo : Text1.PasswordChar = ""
Esta propiedad se ignora cuando la propiedad Multiline est a True.
ScrollBars
Cuando la propiedad Multiline de la caja de texto est a True, se pueden colocar barras de desplazamiento del texto
hacia arriba y abajo, o hacia los lados. Esto nos permite tener una caja de texto de tamao reducido y poder leer en ella
un texto mayor que la propia caja. Esta propiedad puede tomar los siguiente valores :
0 - No salen barras
1 - Barras de desplazamiento horizontal
2 - Barras de desplazamiento vertical
3 - Ambas barras.
TabIndex N de orden para obtener el foco
Al igual que para los botones de comando, esta propiedad para tabulador marca el orden en el que le llegar el foco al
pulsar la tecla TAB
Tag
Esta propiedad no la usa directamente Visual Basic. Sirve para asociar a este control alguna informacin adicional para
fines externos a la programacin.
Top
Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de ejecucin. Esta propiedad,
juntamente con Left definen la esquina superior izquierda de la caja de texto. Normalmente esta propiedad no se
introduce numricamente, sino que la toma automticamente de la posicin que se le de en tiempo de diseo. Puede
cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecucin.
Visible Visible
Propiedad Booleana. Si es true, la caja de texto se ve, si es False no se ve. Puede cambiarse en tiempo de ejecucin.
WhatThisHelpID (Propiedad, Windows 95)
Devuelve o establece un nmero de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda
interactiva con el men emergente Qu es esto? de la Ayuda de Windows 95.
Width Ancho
Define el ancho de la caja de texto. Con Height determina la dimensin de la misma.

PROCEDIMIENTOS DE LA CAJA DE TEXTO


Click Change DblClick DragDrop DragOver GotFocus
KeyDown KeyPress KeyUp LinkClose
FRAME RECUADRO
Se obtiene directamente de la caja de herramientas

Tiene la siguiente forma :

Un control Frame proporciona un agrupamiento identificable para controles. Tambin puede utilizar un Frame para
subdividir un formulario funcionalmente por ejemplo, para separar grupos de controles OptionButton.
Para agrupar controles, en primer lugar trace el control Frame y, a continuacin, meta los controles dentro de Frame. De
este modo podr mover al mismo tiempo el Frame y los controles que contiene. Si traza un control fuera del Frame y, a
continuacin, intenta moverlo dentro de ste, el control se colocar sobre el Frame, pero no pertenecer a el. Es decir, si
es un OptionButton este se comportar como si estuviese fuera del Frame, aunque fsicamente est dentro de el.
Cuando un control Frame tiene dentro otros controles, y hacemos invisible al Frame, mediante su propiedad Visible =
False, los controles interiores al Frame quedan tambin invisibles.
PROPIEDADES
Las sealadas con (*) no presentan novedades respecto a las ya comentadas para los controles precedentes.
Appearance (*)
Backcolor (*)
Caption Es el ttulo que aparece en el borde del Frame.
ClipControls
Si esta propiedad est a True, los mtodos grficos en eventos Paint vuelven a dibujar el objeto entero. Antes del evento
Paint se crea una zona de recorte alrededor de los controles no grficos del formulario. Si esta propiedad est a False
dibujarn solamente las reas ltimamente expuestas. En tiempo de ejecucin, esta propiedad es de slo lectura.
DragIcon (*)
DragMode (*)
Enabled
Cuando esta propiedad est a False, tanto los procedimientos asociados al propio control Frame como todos los controles
dentro del Frame estarn inhabilitados. Si esta propiedad est a True, todos ellos estn habilitados.
Font
En esta propiedad, el tipo de letra afecta solamente al ttulo del Frame, no a los controles internos a el.
ForeColor
Color de las letras del ttulo del Frame.
Height (*)
HelpContextID (*)
Index (*)
Left (*)
MouseIcon (*)
MousePointer (*)
Name (*)
TabIndex (*)
Tag (*)
Top (*)

Visible
Cuando un Frame est con la propiedad Visible = False, tanto el propio Frame como todos los controles interiores a el
sern invisibles.
WhatsThisHelpID (*)
Width (*)
PROCEDIMIENTOS DEL FRAME
Click DblClick DragDrop DragOver MouseDown
MouseMove MouseUp
CHECK BUTTON Y OPTION BUTTON (BOTONES DE ELECCION Y OPCION)
Se obtienen directamente de la caja de herramientas.

Dada la similitud de ambos controles, se comentan conjuntamente.


El control CheckBox, o casilla de verificacin, permite elegir una opcin (activada/desactivada, True/False) que el usuario
puede establecer o anular haciendo click. Una X en una casilla de verificacin indica que est seleccionada, activada, o
con valor True. Cada casilla de verificacin es independiente de las dems que puedan existir en el formulario, pudiendo
tomar cada una de ellas el valor True o False, a voluntad del operador.
Un control OptionButton muestra una opcin que se puede activar o desactivar, pero con dependencia del estado de
otros controles OptionButton que existan en el formulario.
Generalmente, los controles OptionButton se utilizan en un grupo de opciones para mostrar opciones de las cuales el
usuario slo puede seleccionar una. Los controles OptionButton se agrupan dibujndolos dentro de un contenedor como
un control Frame, un control PictureBox o un formulario. Para agrupar controles OptionButton en un Frame o PictureBox,
dibuje en primer lugar el Frame o PictureBox y, a continuacin, dibuje dentro los controles OptionButton. Todos los
controles OptionButton que estn dentro del mismo contenedor actan como un solo grupo, e independientes de los
controles OptionButton de otros grupos distintos.
Aunque puede parecer que los controles OptionButton y CheckBox funcionan de forma similar, hay una diferencia
importante: Cuando un usuario selecciona un OptionButton, los otros controles del mismo grupo OptionButton dejan de
estas disponibles automticamente. Por contraste, se puede seleccionar cualquier nmero de controles CheckBox.

En el ejemplo de la figura, existen tres grupos de OptionButton, uno en un PictureBox, que acta, al tiempo que como
cuadro de imagen, como contenedor de controles OptionButton. Otro grupo est en el interior de un control Frame, y el
otro grupo est en el formulario. Los tres grupos son independientes entre s, pero interiormente al grupo solamente
puede seleccionarse uno de los OptionButton que lo componen.
En el formulario tambin existen tres CheckBox, que como puede verse, se pueden seleccionar los que se desee, sin
ningn tipo de exclusin entre ellos.
PROPIEDADES
Las sealadas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los
controles precedentes.

Alignment Comn a ambos controles.


Admite los siguientes valores :
0 - Left Justify
1 - Right Justify
Cuando se elige el valor 0, justificado a la izquierda, el ttulo del control aparece a la derecha del botn, pegado a la
figura del botn. Cuando se elige el valor 1, justificado a la derecha, el ttulo (Caption) aparece a la izquierda del botn,
comenzando en la parte izquierda del cuerpo total del control, es decir, no tiene porqu aparecer con su parte derecha
pegado al botn, caso que el cuerpo total del control se haya hecho mas largo que la palabra del ttulo.
Appearance (*)
Backcolor (*)
Caption (*).
DataField DataSource Propiedades del CheckBox solamente.
Establecen la base de datos y el campo donde estn los datos (True / False) que se llevarn a la propiedad Value . Al
igual que en los controles Label y TextBox esta propiedad nos permite visualizar datos de una base de datos de una
forma muy sencilla. En este caso, el CheckBox solamente permite presentar (logicamente) datos de tipo Booleano.
DragIcon (*)
DragMode (*)
Enabled (*)
Font (*)
ForeColor (*)
Height Comn a ambos controles.
La altura del control solamente afecta a la colocacin del Titulo (Puede ponerse un ttulo largo en varias lneas), no al
tamao del botn, que es invariable.
HelpContextID (*)
Index (*)
Left (*)
MouseIcon (*)
MousePointer (*)
Name (*)
TabIndex (*)
TabStop (*)
Tag (*)
Top (*)
Value Comn a ambos controles
El valor de esta propiedad indica si el control est seleccionado (Value = 1) o no seleccionado (Value = 0 Value =
False). Esta propiedad puede cambiarse en tiempo de ejecucin. Mediante esta propiedad, podemos tanto forzar el valor
como leerlo.
Atencin. Presenta una diferencia entre uno y otro control respecto a la forma de expresarse respecto a su valor cuando
est seleccionado. Para forzar que el control NO est seleccionado, o para leer el Value cuando no est seleccionado,
podemos utilizar tanto Value = 0 como Value = False. Sin embargo, cuando lo que se quiere es poner la propiedad a True
hay una diferencia entre ambos controles.
Para el OptionButton podemos utilizar indistintamente las siguiente formas :
Option1.Value = True Option1.Value = 1
Con cualquiera de ellas seleccionaremos ese control por programa.
Para el CheckBox solamente se podr usar para este propsito la instruccin :
Check1.value = 1
El poner como Value el valor True nos dar en este control un error.
Para la lectura del Value, existe una diferencia entre el valor devuelto por el CheckBox y el devuelto por el OptionButton.
Para leer el dato existente en un CheckBox es necesario utilizar la forma :
variable = Check1.Value donde variable tomar el valor 1 (no True)

Para el control OptionButton emplearemos una instruccin igual :


variable = Option1.Value donde variable tomar el valor True (no 1)
Visible (*)
WhatsThisHelpID (*)
Width (*)
PROCEDIMIENTOS
Click DblClick (Solo OptionButton) DragDrop DragOver GotFocus
KeyDown KeyPress KeyUp LostFocus
LIST BOX Y COMBO BOX
Estos dos controles, debido a su similitud, se estudian conjuntamente.
Se obtienen directamente de la caja de herramientas :

Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o ms. Si el nmero de
elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de desplazamiento al
control ListBox.
Un control ComboBox combina las caractersticas de un control TextBox y un control ListBox. Los usuarios pueden
introducir informacin en la parte del cuadro de texto y seleccionar un elemento en la parte de cuadro de lista del
control. En resumen, un ComboBox es la combinacin de un ListBox, que se comporta como si de un ListBox se tratase, y
de un TextBox, con comportamiento anlogo a un TextBox sencillo, con la particularidad aqu de que el texto se le puede
introducir por teclado, o elegir uno de los que figuran en la parte ListBox del Combo.
Estos controles toman la siguiente forma :

Puede verse en la figura un ejemplo de presentacin de un ListBox (izquierda), un ComboBox con la lista desplegada
(Centro) y un ComboBox con la lista sin desplegar (Combo2 a la derecha).
La lista tiene varios elementos. Cada lnea de esta lsta es un elemento de la lista. Como el nmero de elementos de la
lista tiene mas elementos de los que le podan caber, gener automticamente la barra de desplazamiento vertical.
El ComboBox est normalmente sin desplegar. Se despliega cuando se hace click con el ratn en la flecha que tiene en
su parte derecha (vase fig. Anterior). Al desplegarse, muestra la lista con todos sus elementos. Haciendo click con el
ratn en cualquiera de sus elementos, el elemento elegido pasa a la parte TextBox del Combo y la lista vuelve a replegar.
El ListBox (y por tanto el ComboBox) tiene unas propiedades y mtodos particulares que solamente se pueden aplicar
durante el tiempo de ejecucin :
ListCount - Indica el nmero de elementos que tiene la lista
ListIndex - Indica el nmero de orden del elemento seleccionado dentro de la lista.
AddItem - Aade un elemento a la lista.
RemoveItem - Elimina un elemento de la lista.
Text - Obtiene el elemento seleccionado.
List (n) - Obtiene el elemento cuyo orden dentro de la lista es n.
ListCount valdr 0 si la lista no tiene ningn elemento, y n si tiene n elementos.
Para seleccionar un elemento de la lista, basta con hacer click con el ratn sobre l. Ese elemento se resaltar con fondo
en azul. Una vez seleccionado un elemento, la propiedad ListIndex tomar el valor del nmero de orden que ocupa ese
elemento en la lista, comenzando por el 0 para el elemento que ocupa el primer lugar. Si no se selecciona ningn

elemento, el valor de la propiedad ListIndex ser -1. El primer elemento de la lista es ListIndex 0, y el valor de la
propiedad ListCount siempre es uno ms que el valor mayor de ListIndex.
En el ComboBox la propiedad Text contiene el texto que contenga la parte TextBox del Combo, bien haya sido introducida
desde teclado o mediante la recuperacin de un elemento la parte ListBox del mismo.
Ejemplos
Supongamos que tenemos un ListBox llamado List1, y un ComboBox llamado Combo1. Se enumeran distintas formas de
obtener informacin de ellos.
Variable = List1.Listcount
Variable contendr un nmero con el nmero total de elementos de la lista List1.
Variable = List1.ListIndex
Variable contendr un nmero con el nmero de orden del elemento de la lista seleccionado en ese momento.
List1.AddItem "ELEMENTO NUEVO"
Aade un elemento a List1. En este caso, el elemento aadido es la palabra ELEMENTO NUEVO.
Variable = "VISUALBASIC"
List1.AddItem Variable
Aade un elemento a List1. En este caso, el elemento aadido es la palabra VISUALBASIC.
Variable = List1.Text
Variable contendr el elemento que estaba seleccionado en List1. (Variable ser una cadena de caracteres)
Variable = List1.List (n)
Variable contendr el elemento que ocupa el nmero de orden n dentro de la lista.
Variable = List1.List (List1.ListIndex)
Variable contendr el elemento que estaba seleccionado en List1. Se ha utilizado la propiedad List para obtener el
elemento, y en vez de introducir un nmero para definir el elemento que se desea, se introdujo el valor ListIndex de
List1, que es concretamente, el nmero de orden del elemento seleccionado en ese momento. Observe que poner
List1.List (List1.ListIndex) es idntico a poner List1.Text.
List1.RemoveItem (n)
Elimina el elemento n de List1.
List1.RemoveItem (List1.ListIndex)
Elimina el elemento que estaba seleccionado en ese momento.
List1.listIndex = n
Selecciona el elemento n de List1 (Se resalta en azul el elemento n)
PROPIEDADES DE ListBox y de ComboBox
Las sealadas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los
controles precedentes.
Appearance (*)
Backcolor (*)
Columns Propiedad de ListBox solamente.
Determina si los elementos se presentan en una sola columna o en varias columnas, y la forma de presentar los
elementos en el ListBox. Si esta propiedad se pone a 0 la lista tendr solamente una columna, y presentar los
elementos uno debajo de otro. Cuando los elementos sean mas que los que se pueden presentar en la lista, aparecen
automticamente unas barras de desplazamiento vertical.
Si la propiedad se pone a un nmero distinto a 0, el ListBox es de tipo multicolumna, presentar en cada columna los
elementos que le quepan dependiendo de su dimensin vertical, y tendr tantas columnas como sea necesario para
albergar el nmero de elementos que tenga. Presentar en su cuadro tantas columnas como se le indique en el valor de
esta propiedad, y si no puede presentar todos los elementos en las columnas que muestra, le aparecern barras de
desplazamiento horizontales para poder movernos por todas las columnas que tenga.
Recuerde : El nmero que se le asigna a la propiedad Columns no indica el nmero de columnas que tendr el ListBox
sino el nmero de columnas que presenta.
Esta propiedad puede asignarse en diseo, mediante la caja de propiedades, o en tiempo de ejecucin mediante una
instruccin como esta :

Nombrelista.Columns = nmero
Esta propiedad no puede definirse a 0 o cambiada desde 0 en tiempo de ejecuciones decir, no se puede convertir en
tiempo de ejecucin un ListBox de mltiples columnas en un ListBox de columna nica o un ListBox de columna nica en
un ListBox de mltiples columnas. Sin embargo, s es posible cambiar durante la ejecucin el nmero de columnas de un
ListBox de mltiples columnas.
DataField DataSource .
Establecen la base de datos y el campo donde estn los datos que se llevarn al TextBox o ComboBox para presentar
datos procedentes de una Base de Datos.
DragIcon (*)
DragMode (*)
Enabled (*)
Font (*)
ForeColor (*)
Height (*)
HelpContextID (*)
Index (*)
IntegralHeight No aplicable a ListBox o ComboBox
ItemData Propiedad muy importante.
Devuelve o establece un nmero especfico para cada elemento de un control ComboBox o ListBox.
Sintaxis
objeto.ItemData(ndice) [= nmero]
La sintaxis de la propiedad ItemData tiene las siguientes partes:
objeto Nombre del ListBox o ComboBox.
ndice El nmero de un elemento concreto del objeto.
nmero El nmero que se asocia con el elemento especificado.
Comentarios
La propiedad ItemData es una matriz de valores enteros largos cuyo nmero de elementos es el valor de la propiedad
ListCount del control. Los nmeros asociados con cada elemento se pueden usar para cualquier fin. Por ejemplo, se
puede usar en la confeccin de una lista de telfonos, el nmero de identificacin de un empleado, etc. Cuando se
rellena el ListBox, tambin se rellena los elementos correspondientes de la matriz ItemData con los nmeros
correspondientes.
La propiedad ItemData se usa a menudo como ndice de una matriz de estructuras de datos asociados con los elementos
de un control ListBox.
Nota Cuando se inserta un elemento en una lista con el mtodo AddItem, el elemento tambin se inserta
automticamente en la matriz ItemData. Sin embargo, el valor no se reinicializa a cero; retiene el valor que estaba en
esa posicin antes agregar el elemento a la lista. Cuando se usa la propiedad ItemData, asegrese de establecer su valor
al agregar nuevos elementos a la lista.
Left (*)
List Es el contenido de la lista.
Si la lista de elementos es corta e invariable, pueden introducirse los elementos en el cuadro de propiedades durante el
diseo.
MouseIcon (*)
MousePointer (*)
Name (*)
Sorted
Establece o devuelve un valor que indica si los elementos de un ListBox o ComboBox se colocan automticamente en
orden alfabtico. Los valores que puede adoptar son True o False.
True Los elementos de la lista se ordenan alfabticamente (sin distinguir entre maysculas y minsculas).
False (Predeterminado) Los elementos de la lista no se ordenan alfabticamente.

Cuando esta propiedad tiene el valor True, Visual Basic se encarga de casi todo el procesamiento de cadenas necesario
para mantener el orden alfabtico, incluyendo el cambio de los nmeros de ndice cuando se agregan o eliminan
elementos.
Nota El uso del mtodo AddItem para agregar un elemento en una posicin especfica de la lista puede romper el orden
alfabtico, y los elementos agregados con posterioridad pueden no ordenarse correctamente.
TabIndex (*)
TabStop (*)
Tag (*)
Top (*)
Visible (*)
WhatsThisHelpID (*)
Width (*)
PROCEDIMIENTOS
Click Change (Solo ComboBox) DblClick DragDrop DragOver
DropDown (Solo ComboBox) GotFocus KeyDown KeyPress
KeyUp LostFocus MouseDown (Solo ListBox) MouseMove (Solo ListBox)
MouseUp (Solo ListBox)
NOTA MUY IMPORTANTE
El procedimiento Change del ComboBox solamente se efecta cuando el cambio se produce mediante la entrada de un
texto DESDE EL TECLADO, no por un cambio en la parte Text de este control, producido al llevar un elemento desde la
parte List a la parte Text.

CONTROLES HScrollBar y VScrollBar


Son dos controles similares, para introducir un dato cuasi-analgico en una aplicacin. Se toman directamente de la caja
de herramientas, y tienen un aspecto parecido al de un control de volumen de un equipo de msica. El HScrollBar est
en posicin horizontal, y el VScrollBar en posicin vertical.

Mediante estos controles se pueden introducir datos variando la posicin del cursor.
PROPIEDADES de HScrollBar y VScrollBar
Las sealadas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los
controles precedentes.
DragIcon (*)
DragMode (*)
Enabled (*)
Height (*)
HelpContextID (*)
Index (*)
LargeChange
Esta propiedad establece la variacin de la propiedad Value cada vez que se hace click en el interior de la barra de
desplazamiento, en la parte por donde pasa el cursor.
Left (*)
Max

Esta propiedad establece el valor mximo para la propiedad Value, es decir, el valor de esta propiedad cuando el cursor
est en su parte mxima. (Recuerde que el cursor est en el mximo, cuando est mas a la derecha, caso del HScrollBar,
o cuando est en la parte mas baja, caso del HScrollBar.
Min
Esta propiedad establece el valor mnimo para la propiedad Value, es decir, el valor de esta propiedad cuando el cursor
est en su parte mnima. (Recuerde que el cursor est en el mnimo, cuando est mas a la izquierda, caso del HScrollBar,
o cuando est en la parte mas alta, caso del HScrollBar.
MouseIcon (*)
MousePointer (*)
Name (*)
SmallChange
Esta propiedad establece la variacin de la propiedad Value cada vez que se hace click en las flechas superior o inferior
de la barra de desplazamiento.
TabIndex (*)
TabStop (*)
Tag (*)
Top (*)
Value
Esta propiedad lee o establece el valor dado por la posicin del cursor. Este valor tiene un mnimo, establecido por Min y
un mximo, establecido por Max. Esta propiedad es la que se debe leer para conocer la posicin del cursor.
Visible (*)
WhatsThisHelpID (*)
Width (*)
PROCEDIMIENTOS DE HScrollBar y VScrollBar
Change DragDrop DragOver GotFocus KeyDown KeyPress
KeyUp LostFocus Scroll
Comentario El Procedimiento Change se produce cuando, tras mover el cursor, se suelta el botn del ratn. Esto produce
el efecto de que el cambio que se tenga que producir con el movimiento del cursor no se realiza de una manera
continua. El procedimiento Scroll se realiza en el instante que se est moviendo el cursor. Por lo tanto, es este
procedimiento el que se debe usar para conseguir el efecto de un cambio continuo mientras se est moviendo el cursor.
TIMER TEMPORIZADOR
Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los controles estudiados hasta ahora.
El control Timer solamente se ve durante el tiempo de diseo. En tiempo de ejecucin, el control permanece invisible.
La temporizacin producida por el Timer es independiente de la velocidad de trabajo del ordenador. (Casi independiente.
El timer no es un reloj exacto, pero se le parece)
Se toma directamente de la caja de herramientas, y tiene el aspecto siguiente :

PROPIEDADES
Enabled (*)
Index (*)
Interval
El valor de esta propiedad nos dar el intervalo de tiempo (en milisegundos) en que se producir un evento Timer y
consecuentemente, realizar el procedimiento asociado a este evento. Si el valor de la propiedad Interval est a 0
(Predeterminado), no se produce el evento Timer. (El control Timer est deshabilitado cuando se pone la propiedad
Interval = 0)
Left (*)
Name (*)

Tag (*)
Top (*)
PROCEDIMIENTOS
Timer
Se produce cada vez que se cumple un intervalo completo.
SHAPE
Se toma directamente de la caja de herramientas :

Shape es un control grfico que se muestra como un rectngulo, un cuadrado, una elipse, un crculo, un rectngulo
redondeado o un cuadrado redondeado.
Utilice controles Shape en tiempo de diseo en lugar o adems de invocar los mtodos Circle y Line en tiempo de
ejecucin. Puede dibujar un control Shape en un contenedor, pero no puede actuar como contenedor. (Esto quiere decir
que un control Shape nunca le servir, por ejemplo, para albergar varios OptionButton y pretender que sean
independientes de otros controles OptionButton que se encuentren fuera del control Shape.
Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un determinado grfico, envolver
grficamente a otros controles, pero no tiene ninguna aplicacin en cuanto a programa. Es un "adorno" para sus
aplicaciones.
PROPIEDADES
Backcolor (*)
BackStyle
Esta propiedad establece si Shape permite ver a su travs (Transparent) o n lo permite (Opaque)
BorderColor
Establece el color del borde.
BorderStyle
Establece el tipo de borde. Puede ser : Transparent, (No se ve el borde), Solid, (Borde de lnea continua),Dash, (lnea a
rayas), Dot, (lnea a puntos), Dash-Dot, (lnea de raya - punto), dash-Dot-Dot, (lnea de raya - punto - punto), InsideSolid,
(raya continua)
El efecto de establecer la propiedad BorderStyle depende del valor de la propiedad BorderWidth. Si BorderWidth no es 1
y BorderStyle no es 0 o 6, BorderStyle se establece como 1.
BorderWidth
Establece el ancho de la lnea.
DrawMode (*)
FillColor (*)
FillStyle (*)
Height (*)
Index (*)
Left (*)
Name (*)
Shape
Establece la forma del control. Puede ser : Rectangular, cuadrado, redondo, ovalado, cuadrado con esquinas
redondeadas y rectangular con esquinas redondeadas.
Tag (*)
Top (*)
Visible (*)
Width (*)
PROCEDIMIENTOS. No tiene.
LINE

Se toma directamente de la caja de herramientas

Line, al igual que Shape, es un control grfico que solamente sirve para poner una lnea en un formulario. Del mismo
modo, no tiene procedimientos, por lo que no sirve para aportar cdigo al programa. Solo sirve para aportar una
caracterstica grfica, es un adorno.
PROPIEDADES
BorderColor
Establece el color de la lnea.
BorderStyle
Establece el tipo de lnea : Puede ser : Transparent, (No se ve la lnea), Solid, (Lnea continua),Dash, (lnea a rayas), Dot,
(lnea a puntos), Dash-Dot, (lnea de raya - punto), dash-Dot-Dot, (lnea de raya - punto - punto), InsideSolid, (raya
continua)
BorderWidth
Establece el ancho de la lnea.
DrawMode (*)
Index (*)
Left (*)
Name (*)
Tag (*)
Visible (*)
X1, X2 Establece las coordenadas x del inicio y final.
Y1, Y2 Establece las coordenadas y del inicio y final
PROCEDIMIENTOS No tiene.
CONTROL GAUGE
Este control presenta una informacin numrica de forma grfica, bien como un display lineal (tpico por ejemplo en
ecualizadores de audio ), o como una aguja. No est normalmente en la caja de herramientas, por lo que hay que traerla
desde los Controles Personalizados (Men desplegable de Herramientas). Se denomina MicroHelp Gauge Control. El
archivo que lo contiene se denomina GAUGE16.OCX, (Ver. 16 bits) GAUGE32.OCX (Ver. 32 bits)

Mediante este control, podemos presentar una magnitud numrica de una forma cuasi-analgica. Podramos decir que es
un control similar al HScrollBar, que en vez de meter informacin a la aplicacin, la presenta.
Este control puede servir, por ejemplo, para presentar el tanto por ciento de ejecucin de una tarea, como elemento
tranquilizante. Puede presentar el nivel de un depsito de agua, etc.
Presenta las dos formas siguientes :

En la figura puede verse un Gauge de aguja, uno de barra horizontal y otro de barra vertical. Para mejorar la
presentacin, el Gauge permite poner un grfico como fondo, cambiar el color de la barra, color de fondo, etc.
El control Gauge crea medidores definidos por el usuario, que puede elegir entre los estilos lineales (relleno) o de aguja.
Nota para la distribucin Cuando cree y distribuya aplicaciones con controles Gauge, tendr que instalar el archivo
apropiado en el subdirectorio SYSTEM de Windows del cliente. El Kit para instalacin que incluye Visual Basic, le
proporciona herramientas para escribir los programas que instalan las aplicaciones correctamente.
PROPIEDADES

Autosize, Backcolor, DragIcon, DragMode, Enabled, ForeColor, Height, HelpContextID,


Index, InnerBottom, InnerLeft, InnerRight, InnerTop, Left, Max, Min, MouseIcon, MousePointer, Name, NeedleWidth,
Picture, Style, TabIndex, Tabstop, Tag, Top, Value, Visible, WhatsThisHelpID, Width.
Son destacables por nuevas o particulares, las siguientes propiedades :
ForeColor Color de la barra
InnerBottom Distancia entre la parte baja del control y el comienzo de la barra o aguja.
InnerLeft, InnerRight, InnerTop. Idntico al anterior, respecto a otros lados.
Max Valor de la propiedad Value a fondo de escala
Min Valor de la propiedad Value para indicacin cero.
NeedleWidth Ancho de la aguja
Style Tipo de marcador. Puede tomar los siguientes valores :
0 = de barra, horizontal.
1 = de barra, vertical.
2 = de aguja, de 180 grados
3 = de aguja, de 360 grados.
Value
Valor numrico a presentar. Debe ser igual o menor que la propiedad Max, e igual o mayor que la propiedad Min.
PROCEDIMIENTOS
Change DblClick DragDrop DragOver GotFocus KeyDown
KeyPress KeyUp LostFocus MouseDown MouseMove MouseUp

You might also like