Está en la página 1de 44

Programar con Visual Basic

Por: Ariel Palazzesi @ viernes, 09 de mayo de 2008 Nota vista 5687 veces

Si alguna vez has sentido deseos de crear tus propios programas, estas de parabienes: en
NeoTeo te ensearemos, paso a paso, como crear programas utilizando una de las
herramientas mas sencillas y potentes que puedes conseguir: Visual Basic. Comenzamos?

Figura 1: comenzando la descarga.

A pesar de lo ampliamente difundido que se encuentra Visual Basic en todas sus versiones,
hasta no hace mucho haba que gastar un buen montn de dinero para hacerse con una
copia de esta magnifica herramienta. Sin embargo, Microsoft ha decidido distribuir
versiones gratuitas de algunos de sus lenguajes de programacin ms populares. Se trata de
copias totalmente operativas, aunque con algunas limitaciones.
Visual Basic 2005 Express es la versin gratis que utilizaremos en este tutorial. Para
acceder a ella, lo primero que debes hacer es descargar e instalar el paquete
correspondiente. Se trata de una descarga de aproximadamente 380MB, que puedes
conseguir en el sitio oficial que Microsoft ha puesto en lnea para este producto.
Veamos como instalarlo. Por supuesto, haremos clic sobre versin final en espaol, lo
que har que nuestro navegador nos pregunte si deseamos guardar o ejecutar el programa al
que lleva dicho link. Seleccionaremos ejecutar, y esperaremos unos segundos. Primero
aparecer un cuadro como el de la figura 1, indicndonos que esperemos, y luego algo
parecido a lo siguiente:

Figura 2

Figura 3

Figura 4: Que vamos a descargar?

En la ventana de la figura 2 marcaremos (o no) la casilla que nos permite enviar un


feedback a la gente de Bill Gates para que siga mejorando el producto, y en la segunda
aceptaremos las condiciones estipuladas en la licencia. Una vez que la hayamos ledo de
punta a punta, ya podemos marcar la casilla que indica nuestra conformidad, y darle al
botn siguiente para continuar.
La siguiente decisin que debemos tomar (Figura 4) se refiere a si vamos a descargar
solamente Visual Basic 2005 Express, o si tambin queremos instalar una versin reducida
del Microsoft SQL Server 2005. No hay demasiada diferencia de tiempo entre descargarla
o no, as que no es mala idea hacernos con una copia de ella. Al fin y al cabo, no seria raro
que en algn momento queramos escribir algn programa que haga uso de una base de
datos.
Al hacer clic en el botn siguiente, veremos la pantalla de la figura 5, en la que podremos
elegir la carpeta en que se instalar el paquete, y cuanto espacio necesitaremos. Hemos
optado por mantener la que nos sugiri el software de instalacin. Al darle a siguiente
otra vez, estamos listos para comenzar con la descarga del resto del paquete (Figura 6).

Figura 5: Donde instalar el paquete?

Figura 6: Comienza la descarga.

Este es un buen momento para ordenar un poco la habitacin, o para salir a por un poco de
aire. Dependiendo de la velocidad de nuestra conexin, el proceso puede demorar entre 40
minutos y un par de horas. No es mala idea cerrar las dems aplicaciones que estn
haciendo uso de Internet, para acelerar un poco esta etapa.
Tarde o temprano el proceso finaliza, y nos invita a reiniciar el ordenador. Una vez hecho
esto, el programa esta listo para ser usado. Y eso es lo que haremos.

IDE son las iniciales, en ingles, de Integrated Development Environment, algo asi como
entorno de desarrollo integrado. Se trata de un programa que nos pone a disposicin las
herramientas que necesitamos para programar en un (o en varios) lenguajes de
programacin. En el caso del Visual Basic 2005 Express, lo primero que vemos es la
imagen de la figura 7, de donde podemos elegir si vamos a encarar un proyecto nuevo o
editar uno existente.
Supongamos que vamos a trabajar en un nuevo proyecto. Si seleccionamos esa alternativa,
una ventana como la de la figura 8 nos mostrar las opciones con las que contamos a la
hora de decidir el carcter que tendr nuestro desarrollo. Son algunos menos que las
disponibles en la versin completa del Visual Studio, pero no estn nada mal para ser gratis.
Comenzaremos viendo como se construye un programa normal para Windows. Para ello,
hacemos dos veces clic sobre el primer icono, el de la leyenda Aplicacin para Windows.
Aparecer algo parecido a lo de la figura 9.

Figura 8: Que
construiremos?

tipo

de

aplicacinFigura 9: El IDE, a pleno.

Aqu debemos hacer una aclaracin. Debe haber pocos programas que brinden la
posibilidad de personalizacin de sus barras de herramientas como este IDE. Seria muy
conveniente que no cambies de lugar las barras, cuadros o botones por ahora, para que la
disposicin se parezca lo ms posible a las capturas de pantalla que ofrecemos como
muestra. Eso har ms fcil de seguir las explicaciones.
Hemos marcado la barra que contiene las opciones del men principal con un 1 (en rojo,
no puedes no verlo). Desde all es posible acceder a casi todas las opciones del Visual
Basic 2005 Express, que iremos viendo a medida que resulten necesarias.
Un 2 seala la fila de iconos que representan las tareas que utilizaremos con mayor
frecuencia. Si alguna vez utilizaste alguno de los integrantes del paquete Microsoft Office,
ya sabes como se utilizan estos iconos.
En 3 tenemos el Explorador de soluciones, que es bsicamente una lista de cada parte
que compone nuestro proyecto, y que proporciona una forma rpida de llegar a cada uno de
ellos.
La zona marcada con un 4 muestra (y nos permite modificar) las propiedades del objeto o
control que hayamos seleccionado en ese momento. Ser una de las zonas que mas
emplearemos del IDE.

En 5 vemos el formulario que contendr los elementos que conforman nuestra


aplicacin. En el momento que el programa que estamos creando este listo, ser la ventana
que lo contenga. All depositaremos los botones, menues, etiquetas, y todo lo que necesite
nuestra aplicacin para llevar a cabo su tarea.
Por ultimo, 6 muestra el Cuadro de herramientas. Este men, que se divide en varias
zonas, ser el que proporcione todos los controles que necesitamos para completar nuestra
aplicacin. La forma de colocar alguno de ellos sobre el formulario es tan sencilla como
arrastrarlo sobre este. La figura 11 muestra como hemos colocado un botn.
Lo hemos marcado con un crculo rojo, y tambin hemos puesto otro para que veas de qu
forma se modifico el contenido de la zona 4, para reflejar la lista de las propiedades que
este botn tiene.
La figura 12 muestra el mismo formulario, al que hemos agregado una serie de controles
diferentes.

Figura 10: Nuestro primer control.

Figura 11:
formulario.

Agregamos

ms

items

al

Puedes comenzar con la instalacin del paquete, y explorar las herramientas de las que
dispone el IDE.
Tienes 30 das para registrar (gratuitamente) tu paquete en el sitio Web de Microsoft. Una
vez hecho esto, tendrs acceso a una serie de tutoriales y publicaciones que harn ms fcil
tu aprendizaje. Nosotros seguiremos explicando como hacer uso de Visual Basic 2005
Express en la prxima entrega de este tutorial.

Ventana con las propiedades de Form1.


Resulta bastante complicado elegir un orden determinado al intentar explicar
una herramienta como Visual Studio Express 2005. Nosotros vamos a seguir un
camino poco ortodoxo, tomando atajos y tratando temas bastante distintos
entre si, pero que nos permitirn crear pequeas aplicaciones desde el primer
da.
Como habamos mencionado, el marco encargado de contener a nuestra
aplicacin ser el formulario. Cuando arrancamos el Visual Studio y elegimos
crear una aplicacin para Windows, automticamente el IDE nos proporciona
un formulario con el nombre Form1. Este formulario tiene una serie de
propiedades que pueden modificarse fcilmente: basta con editar el valor que
aparece a la derecha de su nombre.
Asumimos que el lector tiene a disposicin la ayuda que brinda MSDN Library,
que se instala junto a Visual Studio Express, para consultar los detalles de
cada propiedad. Solo explicaremos las que vayan siendo necesarias para
entender los ejemplos que vayamos planteando.
Una de las propiedades que primero cambiamos de un formulario es Text. El
texto que contiene este campo es el que aparecer como titulo de nuestra
ventana. En la figura siguiente puede verse como hemos hecho que nuestro
formulario lleve como titulo la frase NeoTeo Visual Basic:

Hemos cambiado el titulo de nuestro formulario.


En Visual Basic tambin pueden cambiarse el valor de estas propiedades
mediante rdenes incluidas en el programa. Por ejemplo, podemos utilizar

Me.Text = "NeoTeo - Visual Basic"


para lograr el mismo resultado. Me es el formulario actual, en este caso
representa a Form1. Siempre que el cdigo que escribimos este dentro del
mismo formulario, nos referimos a l como Me. Luego del . viene el nombre
de la propiedad que queremos cambiar, en este caso Text. Y por ultimo,
despus del igual y entre comillas (por ser una cadena de texto), NeoTeo
Visual Basic, que es el titulo que queremos para nuestra ventana. El resultado
puede verse a continuacin:

Hemos ingresado cdigo VB.


La forma de escribir el cdigo es muy fcil: basta con hacer un clic en la solapa
que lleva el nombre del formulario (en este caso Form1.vb). El IDE
automticamente escribe por nosotros los encabezados de los procedimientos,
por lo que solo escribimos nuestro cdigo.

Desde aqui accedemos al codigo de los controles.


Algunas propiedades solo aceptan valores de verdadero o falso. En esos casos,
al hacer clic a la derecha del nombre de la propiedad, se abre un men con
ambas alternativas. Por ejemplo Locked, que indica si nuestro formulario
podr o no ser cambiado de tamao mediante el procedimiento normal de
arrastrar con el ratn sus bordes, puede ser configurado como True
(Verdadero) o False (Falso):

Desde aqui elegimos el valor deseado.


Otra propiedad que posiblemente quieras cambiar es Icon. Si haces clic sobre
ella, se abrir un cuadro de dialogo que te permite elegir el archivo .ICO que
desees sea el icono que se muestre en la esquina superior de la ventana:

Este cuadro de dialogo permite seleccionar el icono del Form1


Al igual que muchas otras caracteristicas, el tamao del formulario tambin
puede ser cambiado mediante la modificacin de sus propiedades. Y esto
puede hacerse desde el cdigo. Bastar con agregar
Me.Size.Width = ancho deseado (en pixeles)
O
Me.Size.Height = altura deseada (en pixeles)
donde lo necesitemos. Esto es muy util, ya que nos prorciona un mecanismo
dinamico para el cambio de los atributos del formulario en tiempo de ejecucion.
Puedes probar agregando
Me.Size.Width = 480
(donde 480 es el ancho deseado) y ver que ocurre al correr el programa. Si
deseas conocer todos los atributos que puedes modificar de los formularios
(son muchos!) dale un vistazo a la ayuda. Ahora veremos algunos de los
controles disponibles.

Controles
Una de las primeras impresiones que se tiene al entrar al IDE de Visual Studio Express
2005 es que hay controles que no utilizaremos nunca. Sin embargo, con el tiempo vamos
viendo que todos son tiles en algn momento, y afortunadamente Microsoft los ha puesto
a
disposicin.
Los controles simplemente se arrastran con el ratn desde la paleta que est a la izquierda
de la pantalla hasta el formulario. Vamos a probar como hacerlo. Intenta arrastrar 3 botones
(Button), una etiqueta (Label), 3 casillas (CheckBoxes) y un cuadro de texto (TextBox). No
importa demasiado (por ahora) su posicin sobre el formulario, aunque si pones un poco de
cuidad,
podrs
colocarlos
tal
como
se
ven
en
la
imagen:

Agregamos los controles al Form1


Una vez hecho esto, vamos a cambiarles a todos estos controles el texto que muestran. Los
vamos seleccionando de a uno, utilizando el ratn, y modificamos en la ventana
propiedades el valor de la propiedad Text. Toma tu tiempo, y haz que tus controles
queden tal como se ve aqu:

Los controles han sido modificados.

Fcil, verdad? Bien, hemos cambiado el nombre que muestran, aunque los controles
todava tienen nombres tan poco amigables como Button1 o CheckBox3. Por ahora los
dejaremos as, pero es bueno que sepas que el nombre tambin es una propiedad que se
puede cambiar. Si bien no hace al aspecto de nuestro programa, el uso de nombres
descriptivos para los controles que usamos en nuestra aplicacin har ms fcil la
confeccin del programa.
Vamos a ver como hacer para que los controles que hemos agregado ejecuten alguna tarea
cuando el usuario interacta con ellos. La forma de hacer esto es, simplemente, escribir el
cdigo necesario en el evento deseado. Como siempre, un ejemplo puede resultar mucho
ms simple de entender. Hagamos que cuando presionamos el tercer botn (el que tiene el
texto Salir) el programa termine. En BASIC, la instruccin que finaliza la ejecucin de
un programa es End. Para escribir esta instruccin en el evento Click del Button3
simplemente le damos doble clic, y el IDE nos posicionar en el lugar correcto. Una vez
editado, este debera ser el aspecto del cdigo:

Hay que escribir el cdigo necesario en el evento deseado.

La flecha indica el lugar donde debemos escribir End. Como ves, el entorno del Visual
Basic ha escrito el encabezado del procedimiento por si solo. Una vez hecho esto, veremos
que si corremos el programa, al hacer clic sobre el botn Salir, el programa termina.
Los dems, al no tener cdigo asociado, no efectan ninguna tarea.

Tenemos dos botones mas para programar. Aprovechemos para ver como las acciones
que se llevan a cabo sobre un control pueden influir en otro. Vamos a darle doble clic al
botn Escribir para acceder a su evento clic, y escribir all el cdigo necesario para que
el TextBox1 (el pequeo cuadro de texto de la parte superior del formulario) muestre el
texto Hola mundo! cuando lo presionamos. El cdigo debera quedar as:

Volvemos a agregar cdigo.


Si ejecutamos el programa, veremos que el cuadro de texto aparece vacio. Al hacer clic
sobre Escribir, su contenido cambia a Hola mundo!. Lo que hemos hecho ha sido
modificar el evento click del Button1 para que modifique la propiedad Text del control
TextBox1. Resulta bastante ms difcil describir el proceso que llevarlo a cabo.
El contenido del TextBox1 puede ser modificado utilizando el ratn y el teclado, editando o
copiando su contenido. Pero tambin podramos modificarlo mediante cdigo.
De la misma manera que programamos el comportamiento del primer botn, podemos
modificar el segundo para que al presionarlo limpie el contenido del cuadro de texto. Los
pasos son los mismos, pero la cadena asignada a TextBox1.Text debe estar vaca:

La cadena asignada a TextBox1.Text debe estar vaca.


Listo! Ahora podemos escribir con un botn, borrar con el otro, y salir con el tercero. Y lo
mejor de todo es que hemos escrito muy poco cdigo para lograrlo.
CheckBoxes
Con todo lo visto hasta aqu, no debera resultarnos muy difcil hacer que, si el usuario
marca alguno de las casillas del formulario, se modifique el contenido del cuadro de texto.
En realidad, el procedimiento es el mismo que hemos empleado para modificar el
comportamiento de los primeros dos botones: le damos doble clic al CheckBox que

queremos editar, y escribimos el codigo necesario. Por ejemplo, en la figura siguiente


vemos como hacer para que el al marcar el CheckBox1 el TextBox1 muestre la palabra
Rojo:

Escribimos el codigo necesario.


Si ejecutamos el programa y efectivamente seleccionamos Rojo, el resultado ser el
siguiente:

Todo parece funcionar correctamente.


Ya puedes modificar por ti mismo los otros tres para que escriban Verde, Amarillo y
Azul. Tambin puedes comprobar que el botn Borrar sigue borrando el contenido del
TextBox1, y que el botn Escribir escribe Hola mundo! independientemente del
contenido del cuadro de texto.
El cdigo completo debera verse as:

Modificamos los otros tres controles.


Por supuesto, el programa tiene un defecto: El TextBox1 escribe lo que le pedimos al hacer
clic, independientemente de que estemos marcando o desmarcando el CheckBox
correspondiente. Por supuesto, no es un problema de Visual Basic (que hace exactamente lo
que le hemos indicado), sino de nuestro cdigo, que no tiene en cuenta esta situacin.
En entregas siguientes, cuando conozcamos las instrucciones necesarias para la toma de
decisiones, veremos como podemos mejorar nuestro pequeo programa de ejemplo.
Por hoy hemos terminado. Seria interesante que, mientras preparamos la prxima entrega,
realices muchas pruebas con los controles que hemos visto, y si te surgen inquietudes, las
plantees como comentarios en este articulo. Prometemos responder a todas las consultas.
Sentencias para el control del programa
Este grupo de instrucciones pueden modificar el orden en que se ejecutan las dems
sentencias que componen nuestro programa. Bsicamente, existen dos grupos de
instrucciones que pueden llevar a cabo estas tareas: las que determinan la ejecucin de un
trozo de cdigo tomando una decisin, y las que permiten repetir un grupo de sentencias un
nmero determinado de veces. Comenzaremos analizando las del primer grupo.
Sentencias de decisin
Una instruccin de este tipo representa una divisin en el flujo normal del programa. A
partir del punto del cdigo en que escribimos una instruccin de este tipo se produce una
divisin en dos o mas alternativas. Del resultado de la evaluacin de una condicin (que
forma parte de la sentencia de decisin) depender cual de las alternativas es la que
finalmente se ejecuta.
Dentro de este grupo veremos las sentencias If, Choose y Select Case. Comencemos.
Enlaces
Curso Visual BASIC, primera parte
Curso Visual BASIC, segunda parte

MSDN es una buena fuente de ayuda. Tengamoslo presente!

IfThen
Existen varias maneras de utilizar esta sentencia. Su forma ms simple ocupa solo una lnea
de cdigo, y tiene la forma siguiente:
If condicin then sentencia
A menudo los programadores se refieren a este formato como If de una lnea, y se emplea
generalmente para asignar un valor a alguna variable cuando se da una condicin
determinada. Veamos un ejemplo.
Supongamos que si la edad de una persona es mayor a 18 aos, debemos guardar en la
variable sujeto_estado el valor adulto. La edad de la persona esta almacenada en la
variable sujeto_edad. La sentencia If que realiza esta comprobacin y (eventual)
asignacin es la siguiente:
If sujeto_edad > 18 then sujeto_estado = adulto
La sentencia en cuestin, en caso de que la condicin sea verdadera (es decir, que la edad
del sujeto sea mayor a 18 aos), ejecuta la asignacin que se encuentra a la derecha del
then, haciendo que sujeto_estado contenga la cadena adulto. Y luego continuar con la
sentencia siguiente.
En caso de que sujeto_edad sea igual o menor a 18, el programa continuar con la
sentencia siguiente a la del ejemplo sin realizar ninguna asignacin.
Hay una variacin posible al If de una lnea, y consiste en el agregado de la clusula
else. Dicha sentencia tiene la siguiente forma:
If condicin then sentencia1 else sentencia2
Este tipo de construccin es muy til cuando, en funcin del resultado que arroje la
evaluacin de la condicin deban ejecutarse uno u otro (pero no ambos) grupo de
instrucciones.

Nuevamente, un ejemplo nos aclarar mejor la cuestin. Supongamos que queremos


asignar a la variable sujeto_estado el valor adulto o nio dependiendo si es mayor o no
de 18 aos. Nuestro If de una lnea quedar como sigue:
If sujeto_edad > 18 then sujeto_estado = adulto else sujeto_estado = nio

Al ejecutar esa lnea, Visual BASIC decidir si la condicin es o no verdadera, y en


funcin del resultado ejecutar la asignacin que se encuentra a la derecha del then o la
que est despus del else. Independientemente de cual sea el resultado, el programa
(luego de realizar la asignacin correspondiente) seguir con la lnea siguiente a la del
if.
Por supuesto, nada de esto sirve cuando necesitamos, luego de evaluar una condicin,
ejecutar un grupo de instrucciones y no solamente una. En esos casos, si el nmero de
instrucciones es pequeo, podemos optar por separarlas por dos puntos:
If condicin then sentencia1 : sentencia2 : sentencia3 : .
En caso de que la condicin sea verdadera, se ejecutarn todas las sentencias que estn
luego del then, en riguroso orden de izquierda a derecha. El mismo truco puede
emplearse para colocar varias sentencias despus del else.

Pero an as, hay casos en que esto no basta. Veamos que podemos hacer.
Por ejemplo, no podemos poner otra sentencia If a continuacin del then o else.
Para estos casos tenemos la versin larga del If, que ocupa todas las lneas que haga
falta, y que, en la practica, es la que ms utilizaremos. El formato de esta alternativa es la
siguiente:
If condicin then

sentencia1
sentencia2
sentencia3
.
End If
El funcionamiento es el mismo que cuando utilizamos los : en la versin de una sola linea
para separar las sentencias unas de otras, pero se agrega la clausula End If al final para
que el compilador sepa donde termina el bloque de instrucciones correspondientes al If
y donde comienzan las que pertenecen al resto del programa. Si realizamos el ejemplo
anterior con este formato, nos quedara:
If sujeto_edad > 18 then
sujeto_estado = adulto
End If
Ahora ya sabes por que, cada vez que pueden, los programadores eligen el If de una
lnea. Pero donde realmente se luce es en los casos que el cdigo a ejecutar es mas
extenso, ya que no solo permite un numero (tericamente) infinito de sentencias de todo
tipo en su interior, si no que es mucho ms legible que el If de una lnea con sentencias
separadas por :. Y por supuesto, puede usarse con el Else:
If condicin then
Sentencia_v1
Sentencia_v2
Sentencia_v3
.
Else
Sentencia_f1
Sentencia_f2
Sentencia_f3
.
End If
Pero lo ms interesante es que pueden anidarse sentencias condicionales, unas dentro de
otras. Eso permite la toma de decisiones realmente complejas. Y si somos ordenados
(comentando e indentando el cdigo a conciencia), el programa seguir siendo legible a
pesar de la longitud que pueda tener.
Veamos un ejemplo. Supongamos que tenemos una variable, llamada sujeto_sexo, cuyo
valor puede ser H o M (por Hombreo Mujer), y otra llamada sujeto_edad que
contiene (como no!) la edad del sujeto. El siguiente cdigo:

If sujeto_sexo = H then Si el sujeto es HOMBRE


If sujeto_edad > 18 then Y tiene ms de 18 aos
sujeto = Varn mayor de edad
Else
Si no.
Sujeto = Varn menor de edad
End If
Else Si el sujeto es MUJER
If sujeto_edad > 18 then Y tiene ms de 18 aos
sujeto = Mujer mayor de edad
Else
Si no.
Sujeto = Mujer menor de edad
End If
End If

coloca en la variable sujeto una descripcin de la persona basada en los datos conocidos.
Puede verse en que forma se han anidado un If dentro de otro. La indentacin del cdigo
permite identificar fcilmente cada parte del programa.

Los "if" pueden anidarse.

IIF
Para terminar con el capitulo dedicado a esta indispensable instruccin, aprenderemos a
utilizar el If como funcin. Efectivamente, es posible utilizar esta sentencia como si
fuese una funcin. Luego de ser evaluada la condicin, devuelve en la variable el valor que
se encuentra despus de la primer , (condicin verdadera) o el que se encuentra despus
de la segunda (condicin falsa). La forma es la siguiente:
Variable = IIF(condicin, valor1, valor2)
Esta puede ser una herramienta interesante, y en muchos casos puede reemplazar al If de
una lnea. Veamos uno de los ejemplos anteriores, aquel en que la variable sujeto_estado
adquiere el valor adulto o nio dependiendo si es mayor o no de 18 aos, traducido a
este nuevo formato:
sujeto_estado = IIF ( sujeto_edad > 18, adulto, nio)
Como puede verse, una vez comprendida la sintaxis puede ser una buena forma de escribir
un cdigo claro.
Pero no terminan aqu las ventajas del IFF. Tambin puede formar parte de otras sentencias,
como el FORNEXT. An a riesgo de adelantarnos, veamos como podramos hacer un
bucle que cuente hasta 20 o hasta 50 dependiendo del valor de una variable:

For i = 1 to IFF(variable = 1, 20, 50)


.
.
.
Next i

IFF: otra forma de hacer lo mismo.


Si variable es 1, el bucle se ejecutar 20 veces. Caso contrario, se ejecutar 50. El cdigo
equivalente, de no existir el IFF podra escribirse as:
If variable = 1 then
For i = 1 to 20
.
.
.
Next i
Else
For i = 1 to 50
.
.
.
Next i
End If
O asi:
If variable = 1 then limite = 20 else limite = 50
For i = 1 to limite
.
.
.
Next i

Como puede verse, la forma mas corta de todas es la que emplea el IFF.
Conclusin
Hemos aprendido como hacer que nuestro programa pueda tomar decisiones utilizando
algunas de las varias formas que posee la sentencia ifthen. A medida que vayamos

escribiendo nuestros propios programas seremos capaces de determinar rpidamente cual es


la ms conveniente en cada ocasin. En breve veremos cmo se emplean las restantes.

Hay muy pocos programas que no usen "If..then".

Con esto terminamos este captulo de nuestro pequeo curso de programacin. La semana
prxima comenzaremos con las sentencias capaces de hacer que una porcin de nuestro
cdigo se repita la cantidad de veces que necesitemos. Mientras tanto, intenta aplicar lo
aprendido para fijar los conceptos. Hasta la prxima!
Seguimos avanzando en la comprensin de esta fantstica herramienta. Continuaremos
analizando en profundidad las sentencias destinadas a controlar el flujo del programa, y
proporcionando ejemplos que sirvan para su mejor entendimiento. En esta oportunidad,
explicaremos como sacar provecho a Choose() y Select Case.

Tambin puedes programar juegos en VB2005.

Como hemos visto, existe un grupo de instrucciones que tienen la capacidad de modificar el
orden en que se ejecutan las dems sentencias de nuestro programa. En la entrega anterior
aprendimos a utilizar IfThen, la instruccin de este tipo que se utiliza con mayor
frecuencia. Hoy veremos las dos restantes: Choose() y Select Case.
Choose()
Esta funcin recibe una lista de parmetros, de los cuales el primero se utiliza como ndice
para determinar cual de los dems se devuelve al ser evaluada. Esto puede parecer difcil de
entender, pero en realidad, como demostraremos con los ejemplos, es muy simple. El
formato de Choose() es el siguiente:
Variable1 = Choose (indice, valor1, valor1, valor1, valor1,., valorN)
Al ejecutarse esta sentencia, Variable1 tomar alguno de los valores de la serie Valor1 a
ValorN. El contenido de la variable indice ser el que determine cual resulta elegido: si
indice es igual a 1, Choose() har que Variable1 tome el valor de Valor1; si indice
es igual a 2 tomar el de Valor2; y as sucesivamente.
Pero un ejemplo nos ayudara an ms a comprender el funcionamiento de Choose():
supongamos que tenemos que elegir un color de una lista, donde el valor 1 est asignado al
color rojo, el 2 al verde y el 3 al azul. Y queremos que la variable Variable1 almacene la
palabra rojo, verde o azul en funcin del valor de la variable color. Usando
Choose(), se hara de la siguiente forma:
variable1 = Choose(color, "rojo", "verde", "azul")

El contenido de la variable "indice" determinar la respuesta.

Si hubisemos querido hacer lo mismo utilizando IfThen, el programa sera mucho mas
extenso (y quizs ms confuso):
Dim variable1 As String
Dim color As Integer
color = 2
If color = 1 Then
variable1 = "rojo"
Else
If color = 2 Then
variable1 = "verde"
Else
'asumo que si color no es 1 ni 2, es 3.

variable1 = "azul"
End If
End If

Distinto programa, mismo resultado.

Un plugin permite programar para BlackBerry.


Esta instruccin es ideal para utilizar en aquellas situaciones en que debemos elegir una
alternativa de entre muchas. Si bien Choose() hace mas o menos esto mismo (IfThen
tambin), por lo general Select Case resulta ms fcil de leer. Particularmente, yo
prefiero utilizar Choose() cuando quiero que el cdigo (fuente) sea compacto, y Select
Case cuando hay muchas alternativas, pero cada programador elije la forma que cree ms
conveniente.
Su formato es el siguiente:
Select Case <expresin a evaluar>
Case <lista de expresiones1>
'Instrucciones a ejecutar
Case <lista de expresiones2>
'Instrucciones a ejecutar
Case <lista de expresiones3>
'Instrucciones a ejecutar
Case <lista de expresionesN>
'Instrucciones a ejecutar
Case Else

'Instrucciones a ejecutar si no se cumple


' ninguna de las listas de expresiones anteriores
End Select
La <expresin a evaluar> puede ser algo tan simple como una variable, o una expresin
ms compleja que Visual Basic resolver antes de elegir que grupo de instrucciones
ejecutar. Las <lista de expresiones> que siguen a cada sentencia Case se evalan, y de
ser verdaderas (solo debera serlo una de ellas) se ejecutan las sentencias que estn a
continuacin.
En caso de que ninguna de las <lista de expresiones> sea verdadera, se ejecutan las
instrucciones que estn a continuacin del Case Else. Esta seccin no es obligatoria. Si
no existe Case Else y ninguna de las <lista de expresiones> es verdadera, el programa no
ejecutar nada de lo que hay dentro de la estructura.
Veamos cmo podramos resolver el ejemplo de los colores visto antes, usando Select Case:

Select Case color


Case 1
variable1 = "rojo"
Case 2
variable1 = "verde"
Case 3
variable1 = "azul"
End Select

Seleccionando colores con Select Case.


Si quisisemos que, cuando color tiene un valor distinto de 1, 2 o 3 Variable1 fuese
igual a la palabra Error, podemos agregar la seccin Case Else:
Select Case color
Case 1
variable1 = "rojo"
Case 2
variable1 = "verde"
Case 3
variable1 = "azul"
Case Else

variable1 = "Error"
End Select
Respecto de las expresiones que pueden utilizarse a continuacin de las clusulas Case,
no tiene por que ser necesariamente un numero. Supongamos que queremos que si color
vale 1,2 o 3, Variable1 sea igual a Correcto. No necesitamos usar tres Case
diferentes, sino que podemos hacerlo en uno solo, separando los valores por comas.
Quedara as:
Select Case color
Case 1,2,3
variable1 = "Correcto"
Case Else
variable1 = "Error"
End Select

Siempre podemos agregar la seccin Case Else.

En estos casos, donde queremos hacer lo mismo para un grupo de valores comprendidos en
un rango determinado, tambin podemos utilizar la clusula To. El siguiente cdigo hace
exactamente lo mismo que el visto recin:
Select Case color
Case 1 To 3
variable1 = "Correcto"
Case Else
variable1 = "Error"
End Select
Resulta evidente que su la lista de valores es larga, To simplifica mucho el cdigo.

Tambin podemos utilizar la clusula To.


En todos los ejemplos vistos, hemos efectuado alguna accin cuando el valor de
<expresin a evaluar> es igual a un valor determinado. Pero puede darse el caso de que
necesitemos hacer algo cuando la <expresin a evaluar> sea mayor, menor o diferente a un
valor determinado. Para ello, debemos utilizar el operador Is. Literalmente, el
significado, en espaol, de este operador es Es. Su uso brinda una gran flexibilidad a la
<expresin a evaluar>. Veamos un ejemplo:

Select Case numero


Case Is < 11
variable1 = "Primera decena"
Case Else
variable1 = "mayor de 10"
End Select
El cdigo anterior guardar en Variable1 el texto "Primera decena" solo cuando el valor
de numero sea menor a 11 (es decir, este comprendido entre 0 y 10).

El significado, en espaol, de este operador es Es.


Para terminar con Select Case, vamos a resolver un problema utilizando todo lo visto
hasta aqu.

Supongamos por un momento que en un variable tenemos la edad de una persona, y que
debemos, en funcin de su valor, determinar que en que tipo de establecimiento educativo
se encuentra cursando sus estudios (por supuesto, los valores y tipos de establecimientos
son completamente ficticios). Mira el cdigo fuente siguiente e intenta comprender que
hace cada lnea:
Dim variable1 As String
Dim edad As Integer
edad = 20
Select Case edad
Case 0, 1, 2
variable1 = "No escolarizado"
Case 3, 4, 5
variable1 = "Preescolar"
Case 6 To 12
variable1 = "Escuela"
Case 13 To 18
variable1 = "Colegio"
Case 19 To 25
variable1 = "Universidad"
Case Is > 25
variable1 = "No escolarizado"
Case Else
variable1 = "No puede tener menos de CERO aos!"
End Select
Seguramente podrs descubrir, leyendo el programa, cual es el valor de Variable1 una vez
ejecutado el cdigo anterior, verdad?

Intenta comprender que hace cada lnea.

Es muy difcil encontrar un proceso de datos que requiera de algn tipo de repeticin. Si
solo tuvisemos que llevar a cabo una accin determinada en dos o tres oportunidades,
podramos limitarnos a repetir el cdigo en cuestin la cantidad necesaria de veces. Esto
funcionaria, a pesar de que a un programador serio le producira dolor de estomago. Pero
si necesitamos efectuar un proceso sobre, digamos, un milln de registros, la solucin
anterior, adems de ser muy poco eficaz, es absolutamente impracticable.
Para resolver estas situaciones, los lenguajes de programacin proporcionan una serie de
instrucciones destinadas a la repeticin de porciones de cdigo. Si bien todas ellas hacen
bsicamente lo mismo, tienen sutiles diferencias que hacen, frente a un determinado
problema, unas mas apropiadas que otras.
FOR-NEXT
Esta quizs sea la estructura de este tipo mas conocida. De hecho, se encuentra presente en
los dialectos BASIC desde los orgenes de este lenguaje. Su formato es el siguiente:
For variable = valor_inicial To valor_final Step incremento
Instrucciones
Next variable
donde variable ir cambiando su valor a lo largo de la ejecucin del bucle For-Next,
comenzando con valor_inicial hasta valor_final, en incrementos de incremento. Por
cada valor que asuma variable, la(s) instruccin(es) que se encuentran entre el For y el
Next se ejecutarn una vez.
Confuso? Seguramente el ejemplo siguiente te aclarar las cosas.
Supongamos que queremos sumar los nmeros enteros de 1 a 10 (ambos inclusive). Usando
For-Next podramos hacerlo as:
Dim i, suma As Integer
suma = 0
For i = 1 To 10 Step 1
suma = suma + i
Next i
En primer lugar, declaramos la variable i, que ser la que controlara el bucle, y la variable
suma (guardar el total de la suma) como enteras. Luego, hacemos que suma sea igual a
cero. Esto no es indispensable, por que el compilador la inicializa por defecto con ese valor,
pero es recomendable tener a la vista ese dato.
Luego, tenemos el bucle for-Next propiamente dicho. Vemos que i adoptar valores
desde 1 hasta 10, incrementndose en 1 cada iteracin.
La sentencia suma = suma + i se ejecutar 10 veces, sumando cada vez el valor de i en
la variable suma. i tomar valores 1, 2, 3, 4, 5, 6, 7, 8, 9 y 10, mientras que suma ser
1, 3, 6, 10, 15, 21, 28, 36, 45 y 55.

Nuestro primer For-Next.


Colocar el nombre de la variable a continuacin del Next es opcional. Pero a pesar de no
ser obligatorio, es una buena prctica hacerlo, ya que en aquellos programas en que se
emplean varios bucles, uno dentro de otro, ayuda a identificar a que For corresponde cada
Next.
Cuando el incremento de la variable es 1, como en el ejemplo anterior, tampoco hace
falta poner Step 1, ya que el compilador lo hace por defecto. Digamos que si queremos
escribir lo menos posible, nuestro ejemplo podra quedar como sigue:
Dim i, suma As Integer
For i = 1 To 10
suma = suma + i
Next
En programas tan sencillos, podemos omitir todas estas cuestiones que son opcionales. Pero
si nuestro programa es muy extenso, o si debe ser modificado o ledo por otra persona,
conviene incluir todo lo necesario para que su comprensin sea ms fcil.
La declaracin del tipo de la variable puede hacerse dentro del mismo For, lo que
compacta un poco ms el cdigo:
Dim suma As Integer
For i As Integer = 1 To 10
suma = suma + i
Next
Personalmente, me gusta sta forma de declarar la variable usada en el bucle.

La declaracin de la variable puede hacerse dentro del mismo For

Tambin puede ser til construir bucles que modifiquen el valor de la variable de forma
decreciente. Esto es posible gracias a que el valor a continuacin del Step puede ser
negativo. Si se da esta condicin, el valor de la variable se decrementa en cada iteracin.
Veamos un ejemplo:
Dim suma As Integer
For i As Integer = 100 To 0 Step -2
suma = suma + i
Next
En este caso, el valor inicial de i ser 100, ira descendiendo de a dos unidades en cada
iteracin, y la ltima se producir cuando el valor de i sea igual a cero. La variable
suma va incrementando su valor en cada pasada, y al finalizar contiene la suma de los
nmeros pares que se encuentran entre el 0 y el 100, ambos inclusive. Puedes comprobarlo,
el resultado final de suma ser 2550.

La prueba: el resultado final de suma es 2550.

Por supuesto, en ese caso el valor_inicial debe ser mayor que el valor_final, si no
nuestro bucle no se ejecutar ni una vez. Esto plantea un tema interesante: puede darse el
caso de que un bucle no se ejecute ninguna vez, ya que sus valores iniciales son tales que lo
hacen imposible. La situacin se produce cuando, al principio del bucle, Visual Basic

evala los valores de variable, valor_inicial,valor_final e incremento y descubre


que se ha alcanzado el mximo valor posible, saltando a la instruccin que sigue al Next.
Por ejemplo, el siguiente cdigo no realiza ninguna suma, ya que el valor inicial es inferior
al final, y el incremento es negativo:
Dim suma As Integer
For i As Integer = 1 To 10 Step -2
suma = suma + i
Next

Este cdigo no realiza ninguna suma.

Nada impide utilizar valores no enteros en cualquiera de los parmetros del For-Next.
Supongamos que, siguiendo con las sumas, queremos sumar los valores comprendidos
entre 0 y 10, de 0.1 en 0.1:
Dim suma, i As Double
For i = 0 To 10 Step 0.1
suma = suma + i
Next
(ntese el detalle de que hemos declarado las variables como Double).
El cdigo anterior sumar 0.0, 0.1, 0.2, etc hasta 10.0 . El resultado, como se ve en la
imagen siguiente es 505.

Cdigo y resultado de la ejecucin.

Por supuesto, todos los parmetros de un For-Next pueden ser variables. Esto le otorga una
gran flexibilidad a nuestros programas, ya que permite construir bucles cuyo numero de
ejecuciones dependa, por ejemplo, del numero de productos que contiene una base de datos,
o de los das que tiene el mes en curso.
El ejemplo siguiente ilustra esta posibilidad:
Dim suma, i, inicio, final, incremento As Double
inicio = 85.7
final = 100.8
incremento = 0.1
For i = inicio To final Step incremento
suma = suma + i
Next i
Por supuesto, como dijimos antes, si no se es cuidadoso se puede terminar con un bucle que
no se ejecute ni una vez. Dato curioso: el resultado, que debera ser 14.174 tiene un
pequeo error de redondeo.

Ops! Un error de redondeo.

Por ultimo, hay un par de instrucciones que pueden alterar el nmero de veces que se va a
repetir el contenido de un bucle For-Next. Supongamos que queremos sumar los nmeros
enteros hasta que la suma sea superior a 1000. Salvo que seamos muy buenos con la
matemtica, no tenemos forma de conocer cual ser el valor_final de nuestra cuenta.
Pero con Exit For podemos abortar el For-Next cuando queramos. Si Visual BASIC se
encuentra con esta instruccin, inmediatamente pasa a la instruccin posterior al Next, sin
importar que se haya alcanzado el valor_final elegido o no. As es como se usa:
Dim suma, i, inicio, final, incremento As Double
inicio = 1
final = 1000
incremento = 1
For i = inicio To final Step incremento
suma = suma + i
If suma >= 1000 Then
Exit For
End If
Next i
Usando el IF-THEN que vimos en una entrega anterior, preguntamos si la suma ya es igual
o superior a 1000. En caso de que sea as, ejecutamos el Exit For para abandonar el bucle.
En la imagen siguiente puede verse el resultado del programa, y tambin que i slo ha
necesitado incrementarse 35 veces.

Exit For en accin.

For-Next tiene una variante que permite recorrer los tems de una coleccin, mediante ForEach. Cuando hayamos visto que son y cmo se emplean las colecciones, volveremos sobre
For-Next para explicar este ltimo aspecto.
Con esto terminamos la quinta entrega de nuestro tutorial. En la siguiente veremos los
dems tipos de bucles que podemos emplear en nuestros programas Visual BASIC.
En la quinta entrega de este pequeo tutorial, vimos que con FORNEXT podamos
resolver aquellas situaciones en las que un grupo de instrucciones deban repetirse un
nmero determinado de veces. Pero existen otras situaciones, y aparecen con mucha
frecuencia, en las que no se conoce de antemano el nmero de iteraciones que debera tener
nuestro bucle.
A pesar de que un programador con experiencia siempre encontrar la forma de afrontar
esas situaciones haciendo uso de FORNEXT, resulta mas fcil, apropiado y eficiente
emplear las instrucciones que el repertorio sentencias de Visual Basic pone a nuestra
disposicin. Veamos cuales son.
DoLoop
El bucle DO...LOOP es muy verstil. Tanto, que puede reemplazar a FORNEXT en casi
todos los casos. Con l se pueden crear una gran variedad de bucles diferentes, dependiendo
si comprueban una condicin antes de ejecutar el bucle una vez; despus de la primera
ejecucin; mientras que se cumple la condicin o hasta que la mencionada condicin se
cumpla. La sintaxis bsica de esta estructura es la siguiente:
Do
Instrucciones
[Exit Do]
Instrucciones
Loop
Esta es la forma ms simple de escribir este tipo de bucle. Las instrucciones comprendidas
entre el Do y el Loop se ejecutaran indefinidamente. Resulta muy apropiado para aquellos
casos en que nuestro programa se encuentra esperando que ocurra alguna situacin
determinada, a la vez que repite un grupo de instrucciones.
La opcin Exit Do permite abandonar el bucle cuando lo deseemos. En general, una
sentencia IfThen comprueba el valor de alguna expresin, y cuando dicha expresin es
verdadera, se ejecuta el Exit Do. El siguiente ejemplo ilustra este caso:
Dim edad As Integer
edad = 20
Do
edad = edad - 1
If edad = 0 Then
Exit Do
End If
Loop
Como puede verse, el bucle se repetir mientras que el valor de edad sea diferente de
cero. Cuando esto ocurre, la condicin que evala el IfThen ser verdadera y el control
del programa saltar a la instruccin que haya a continuacin del Loop.

La opcin Exit Do permite abandonar el bucle cuando lo deseemos.

La segunda forma en que se puede escribir un bucle DoLoop es la que sigue:


Do { While | Until } condicin
Instrucciones
[Exit Do]
Instrucciones
Loop
Por supuesto, no podemos utilizar While y Until a la vez. En esta forma del bucle, la
condicin se evala al comienzo del mismo. En el caso de utilizar la opcin While, el
bucle se repetir mientras que la condicin sea verdadera. Podemos escribir el ejemplo
anterior utilizando esta posibilidad:
Do While edad <> 0
edad = edad - 1
Loop
Como puede verse, es mucho ms simple utilizar While que IfThen y Exit Do.
Aclaramos que la condicin evala que edad sea diferente de cero.
Tambin podramos haber resuelto el problema con el uso de Until:
Do Until edad = 0
edad = edad - 1
Loop
En este caso, el bucle se repetir hasta que edad sea igual a cero. En estos dos ultimo
ejemplos puede darse el caso de que, si edad es igual a cero cuando se llega a la instruccin
Do, las instrucciones existentes en el interior del bucle no se ejecuten nunca.

El bucle se repetir hasta que edad sea igual a cero.

La tercera forma que puede adoptar el bucle que estamos analizando es la siguiente:
Do
Instrucciones
[Exit Do]
Instrucciones
Loop { While | Until } condicin
Como puede verse, se ha delegado la capacidad de evaluar la condicin al final del bucle.
Esto tiene la particularidad de permitir que el grupo de instrucciones existentes en el
interior del bucle se ejecuten al menos una vez, independientemente de que la condicin a
evaluar sea o no verdadera.
Nuestro ejemplo podra resolverse as:
Dim edad As Integer
edad = 20
Do
edad = edad - 1
Loop Until edad = 0
O asi:
Dim edad As Integer
edad = 20
Do
edad = edad - 1
Loop While edad <> 0

Se puede evaluar la condicin al final del bucle.

En todos los casos puede utilizarse, entre las instrucciones que estn dentro del bucle, la
sentencia Continue Do, que hace que el control del programa salte nuevamente al
Do, repitiendo el ciclo actual.
Veamos ahora como utilizar WhileEnd
Si comprendiste la forma en que funciona el bucle "Do Loop" con la opcin While, no
tendrs ninguna dificultad en aprender a usar WhileEnd.
WhileEnd tiene la siguiente estructura:
While condicin
Instrucciones
[Exit While]
Instrucciones
[Continue While]
Instrucciones
End While
Lo primero que notamos es que en este bucle tambin existe la posibilidad de abandonarlo
en cualquier momento, gracias a Exit While; y que, al igual que antes, la sentencia
Continue While
Este es el tipo de bucle que debemos usar si deseamos repetir un conjunto de instrucciones
un nmero indefinido de veces. Esto ocurrir mientras la condicin sea verdadera. Es
menos flexible que Do...Loop, pero a muchas personas les resulta ms sencillo de utilizar.

No tendrs ninguna dificultad en aprender a usar WhileEnd.

Su funcionamiento es el siguiente: si la condicin es verdadera, se ejecutan todas las


instrucciones hasta que se encuentra la instruccin End While. Luego, el control vuelve a
la instruccin While y se comprueba de nuevo la condicin. Esto se repite hasta que la
condicin evaluada resulte falsa, en cuyo caso el control pasa a la instruccin que sigue a la
instruccin End While.
Para poder compararla con las otras opciones vistas, vamos a escribir el cdigo de los
ejemplos anteriores utilizando WhileEnd:
Dim edad As Integer
edad = 20
While edad <> 0
edad = edad - 1
End While
Como puede verse, resulta muy simple de usar. Para terminar, tengamos presente que si se
desea repetir las instrucciones un nmero fijo de veces, la instruccin For...Next siempre
es la mejor opcin.
GoTo
Esta instruccin es la oveja negra de todos los dialectos BASIC, aunque tambin existe
en otros lenguajes de programacin.
Su funcin consiste en transferir, sin condiciones, la ejecucin del programa a otro punto
del mismo, identificado por una etiqueta (o nmero de lnea) determinada. En realidad, en
la prehistoria de la programacin, en la poca en que los lenguajes de programacin eran
muy primitivos, la mayora de los bucles se construan con GoTo.
De esta forma se lo utiliza en Visual Basic:
Instrucciones
Goto etiqueta
Instrucciones
Etiqueta:
Instrucciones

Cuando el programa se encuentra con GoTo etiqueta, salta a la instruccin siguiente a


Etiqueta:. Etiqueta: puede estar antes o despus del GoTo, lo que permite hacer
saltos hacia atrs o saltos hacia adelante. Tampoco hay lmite entre la cantidad de
instrucciones que pueden escribirse entre el GoTo y la etiqueta:.

Etiqueta: puede estar antes o despus del GoTo.

Esta libertad que otorga hace que muchos programadores, en general los principiantes,
hagan un uso abusivo del GoTo, y sus programas sean muy difciles de comprender.
Adems, es posible escribir cualquier programa sin necesidad de siquiera un solo Go To.
Para terminar este capitulo, realizaremos el ejemplo de antes, pero con GoTo:
Dim edad As Integer
edad = 20
repetir:
edad = edad - 1
If edad > 0 Then
GoTo repetir
End If
Como puede verse, y a pesar de su poca longitud, el cdigo resulta algo mas confuso que
los otros ejemplos. En programas largos, de miles de instrucciones, con varios GoTo
saltando de un lado para otro, el seguimiento del programa puede convertirse en una
pesadilla, incluso para la misma persona que lo escribi.
Con esto, damos por finalizada esta entrega del tutorial de programacin en Visual Basic.
Dentro de unos das publicaremos el captulo siguiente.

Los controles, que pueden arrastrarse y soltarse sobre los formularios (Forms) de Visual
Basic, son componentes extremadamente importantes para la construccin de las
aplicaciones. Son, en resumen, los que permiten confeccionar la interfaz que el usuario
utilizara para controlar las funciones de nuestro programa.
Proveen mecanismos para proporcionar informacin al usuario (Label, ToolTip,
PictureBox, TreeView, etc.), organizar los datos para que sean fcilmente interpretados
(GroupBox, TabControl, Panel, etc.), ingresar datos (TextBox, ComboBox, MonthCalendar,
etc.), seleccionar una(s) opcion(es) de entre varias (ListBox, CheckBox, RadioButton, etc.) o
interactuar con elementos que no pertenecen, necesariamente, a nuestra aplicacin
(OpenFileDialog, SaveFileDialog, PrintDocument, etc.). Adems, algunos controles
especiales nos proporcionan herramientas para manejar o complementar otros controles
(ImageList, ToolTip, etc.)
No veremos absolutamente todos los disponibles, pero la informacin que
proporcionaremos en esta entrega y las dos o tres siguientes bastar para que el lector pueda
sacar provecho de todos los controles que posee Visual Basic. Esta es la paleta de controles
disponibles:

Figura 1
Comenzaremos viendo como utilizar los Controles comunes. Es bastante difcil encontrar
alguna aplicacin que no utilice alguno de estos controles como parte de su interfaz. El
primero de ellos, cuyo icono es una pequea flecha, no es en realidad un control, sino la
herramienta que podemos usar para mover o seleccionar alguno de los controles que
tenemos en nuestro formulario.
Hecha esta aclaracin, comencemos con el anlisis. Lo primero que haremos ser abrir el
Microsoft Visual Basic 2005 Express, seleccionemos Aplicacin para Windows, y

asegurmonos que tenemos el Form1 en la pantalla, en modo diseo. Deberamos tener a


la vista algo ms o menos as:

Figura 2

Figura 3
El primer control que usaremos ser Button. Como habrs adivinado, se trata del clsico
botn presente en prcticamente la totalidad de las ventanas de cada programa. Este control
puede ejecutar una accin cuando el usuario hace clic sobre l.
Utilizando la flecha, arrastraremos uno hasta el formulario Form1. No importa
demasiado, al menos por ahora, en que posicin lo coloquemos, ni tampoco su tamao. Es
ms, puede ser un buen momento para que pases unos minutos jugando con la flecha y el
control, para asegurarte que comprendes de qu forma puedes arrastrarlo por el formulario
o cambiar su tamao. Una vez colocado el control, el formulario se ver como sigue:

Figura 4
Lo primero que vamos a aprender es como cambiarle el nombre, ya que Button1
difcilmente sea apropiado para nuestra aplicacin. Vamos a modificar el botn para que
termine la aplicacin cuando le hacemos clic, as que un nombre apropiado para el sera
Salir. Debemos, como se ve en la imagen, utilizar el cuadro Propiedades para cambiar
el valor correspondiente al atributo Text del control. Simplemente, hacemos clic sobre
ese rengln, y escribimos Salir (o lo que queramos poner). Debera quedar como la figura
de la derecha.

Figura 5

Figura 6

Con esto tenemos el botn con el texto deseado escrito en l. Ahora, vemos como hacer
para que, cuando el usuario haga clic sobre el control, la aplicacin termine. Para ello,
debemos escribir un trozo de cdigo que se ejecute cuando esta accin tenga lugar. La
forma de hacerlo es muy sencilla: simplemente, damos un doble clic sobre el botn, y
Visual Basic pasar al Form.vb, tal como se ve en la figura:

Figura 7
El IDE de Visual Basic nos facilita mucho las cosas. Tanto, que como puede verse nos
lleva directamente al lugar exacto donde debemos escribir el cdigo que se ejecutar, en
tiempo de ejecucin, al pulsar el botn. Como queremos que la aplicacin termine cuando
esto ocurra, simplemente escribimos End:

Figura 8
Una vez hecho esto, ya podemos probar nuestro programa para ver si funciona
correctamente. Para ello, basta con presionar F5 o hacer clic sobre la flecha verde de la
barra de herramientas que tenemos en la parte superior del IDE, debajo del men. El
programa arrancar, y se ver ms o menos como sigue:

Figura 9

Obviamente, ya habrs hecho clic sobre el botn y comprobado cmo se cierra la ventana.
Por supuesto, podemos hacer cosas mucho ms interesantes con este control.
Aprovecharemos, de paso, para aprender a utilizar la funcin MsgBox(), que permite
desplegar pequeas ventanas con un mensaje (y algunos botones) en ella. Su sintaxis es la
siguiente:
MsgBox(prompt[, buttons][, title][, helpfile, context])
Donde prompt, que obligatoriamente debe estar, es una cadena que representa el texto que
aparecer en el cuadro de dilogo. La longitud mxima de prompt es de unos 1024
caracteres, variando con el ancho de los caracteres utilizados.
Buttons es un parmetro opcional. Es una expresin numrica que corresponde a la suma
de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar,
el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad
del cuadro de mensajes. Si no ponemos nada (o ponemos 0), solo aparecer un botn con
el texto Ok que cerrar el cuadro de dialogo cuando le demos clic.
Title es otra cadena opcional, que se muestra en la barra de ttulo del cuadro de dilogo. Si
se omite este parmetro, en la barra de ttulo se ver el nombre de la aplicacin.
Helpfile tambin es opcional. Es la cadena que identifica el archivo de ayuda relacionado
con el cuadro de dialogo. Volveremos sobre este tema cuando tratemos la forma de
implementar ayuda interactiva en nuestras aplicaciones. El parmetro context tambin se
relaciona con la ayuda.
Veamos un ejemplo. La siguiente lnea
MsgBox("Aprendiendo Visual Basic", 0, "NeoTeo")
genera un cuadro de dilogo con el texto "Aprendiendo Visual Basic", un solo botn con el
texto Ok y el titulo NeoTeo. Tal cual se ve en la imagen:

Figura 10
Ahora bien, seguramente te ests preguntando Cmo hago yo para enterarme que poner
para crear cada combinacin de botones?. Y nosotros, rpidamente, te damos la
respuesta:

Tabla 1
Como puede verse, Visual Basic proporciona una palabra clave para que no tengamos que
recordar nmeros extraos. El siguiente cdigo

MsgBox("Error grave, se ha perdido la informacin",VbAbortRetryIgnore +


VbCritical,"Error grave")

Muestra cmo podemos utilizarlas. Y la figura de abajo el resultado que produce:

Figura 11

Tabla 2
Lo interesante de MsgBox() es que devuelve un cdigo que nos indica que botn ha
pulsado el usuario. Esto significa que, si somos lo suficientemente hbiles a la hora de
escribir nuestros programas, podremos realizar diferentes acciones en respuesta a la
respuesta (ops!) del usuario.
El siguiente cdigo muestra un aviso de alerta con los botones Anular, Reintentar y Omitir.
Luego, utilizando la instruccin If-Then, el programa analiza la respuesta del usuario y
muestra otro cuadro de dilogo que nos confirma cual fue el botn presionado:

Dim a As Integer
a = MsgBox("Error grave, se ha perdido la informacin", vbAbortRetryIgnore +
vbCritical, "Error grave")
If a = vbAbort Then
MsgBox("Presionaste Anular")
End If
If a = vbRetry Then
MsgBox("Presionaste Reintentar")
End If
If a = vbIgnore Then
MsgBox("Presionaste Omitir")

End If

Figura 12

Figura 13

Como puede verse, resulta muy simple utilizar los controles disponibles en Visual Basic.
Hoy no hemos visto ms que una pequesima parte de las opciones de uno de sus
controles, pero afortunadamente, la mayor parte de las caractersticas y propiedades de un
control existen y se utilizan de la misma forma en casi todos los dems. Esto facilitar
mucho nuestro aprendizaje.

También podría gustarte