Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 29

Universidad Tecnológica de Chile

Sede Valdivia

PROGRAMACIÓN EN VISUAL BASIC

Sintaxis General y Procedimientos de Evento:

En términos generales la sintaxis del lenguaje Visual Basic se reduce a :

OBJETO . propiedad = valor

OBJETO . método {argumentos}

Aspectos importantes de esta sintaxis son que se debe poner atención al


punto que separa el objeto de la propiedad o método y, al signo igual que
sigue sólo a la propiedad.

El valor, o mejor dicho el tipo de valor indicará el tipo de propiedad. (Si el


valor es entero entonces la propiedad es de tipo entero, si el valor es string
la propiedad es de tipo string etc.).

Note que el signo igual no se usa en los métodos. Para ellos se debe tener en
cuenta si necesitan de argumentos para funcionar correctamente. Por otro
lado, no todos los métodos necesitan de argumentos.
 

Argumentos
En el caso de los métodos son variables de entrada o valores que deben
conocerse previamente para que el método pueda ejecutarse correctamente.
La cantidad y el tipo de argumentos dependerá del método.

Página 1 de 29
Nuevamente, la práctica y el conocimiento de Visual Basic permitirán
discriminar de aquellos métodos que requieren argumentos de los que no los
necesitan.

Nota
Un argumento puede ser un valor de tipo entero, objeto, carácter, booleano,
etc.

Para poder entender el funcionamiento de un programa escrito en Visual


Basic se debe volver a la definición de Evento.

Evento
Acción reconocida por un objeto. Estas acciones pueden ser producidas por otros
objetos, el usuario y/o el Sistema Operativo.
Dentro de la categoría otros objetos se encuentran la aplicación que posee el objeto que
es capaz de reconocer acciones, así como también, objetos de otras aplicaciones.

No todos los objetos son capaces de reconocer todos los eventos. Por ejemplo, el objeto
TextBox (cuadro de texto) es capaz de reconocer el evento de un Click del mouse sobre
él. El objeto CommandButton también es capaz de hacerlo, pero el CommanButton no
es capaz de reconocer el evento de cambio del texto escrito sobre él. El TextBox si lo
puede hacer.

Nota
Visual Basic provee herramientas para crear un nuevo CommandButton, que sea capaz
de reconocer el cambio del texto escrito sobre él. Esto se verá más adelante ya que son
materias que involucran el manejo de los Controles ActiveX.

Como ya se mencionó antes, Visual Basic es un lenguaje orientado a eventos (y no a


objetos). De hecho, la programación en este lenguaje se hace en los eventos de los
objetos, en los que se conocen como Procedimientos de Evento.

En el capítulo anterior a los Procedimientos de Evento se les llamó segmentos o bloques


de código. Estos segmentos de código tenían eventos asociados. (Imagen N° 2, Capítulo
1).

Procedimientos de Evento:

Sintaxis General
Página 2 de 29
Private/Public Sub OBJETO _ EVENTO ( {argumentos} )
<CODIGO>
End Sub

Ejemplo
Supongamos que se desea crear un aplicación Visual Basic que reciba el nombre del
usuario en un cuadro de texto y al presionar un botón tanto el botón como el cuadro de
texto desaparezcan. Luego, el nombre del usuario debe aparecer en letras grandes en el
Form.

Solución
Primero se deben poner en el Form los controles que se usarán. Usted ya sabe hacer eso.
Ponga además una etiqueta (Label).

Luego, se debe dar a las propiedades de los controles los valores adecuados. La
propiedad Visible del Label debe ser False. La propiedad Text del TextBox debe ser
borrada (por defecto dice Text1, el nombre dado por Visual Basic al TextBox). La
propiedad Caption del CommandButton debe decir Escriba su Nombre.

Ahora cuidado acá. . .aquí hay que poner atención :

Es necesario, dadas las exigencias de esta aplicación, escribir código Visual Basic.

Al hacer Doble Click con el mouse sobre el CommandButton se abre la Ventana


Editora de Código. Esta ventana permite ver el contenido del Módulo de Código del
Form que se encuentra asociado a todo Form. Es decir, cada Form posee uno.

Página 3 de 29
Imagen N° 7 : Vista de la Ventana Editora de Código. Al hacer dobleclick sobre el
botón aparece la ventana mostrando el Procedimiento de Evento por defecto del botón.

Esta ventana muestra el Módulo de Código del Form1. Es en este módulo en donde se
escribe la mayoría del código de un programa Visual Basic.
Si se agregan más Form al proyecto, más módulos de código se agregarán.

Nota
Más tarde se verán otros tipos de módulos de código. Los Módulos Estándar y los
Módulos de Clase. Como avance, estos módulos hacen lo mismo, la diferencia es la
forma en que lo hacen. El primero trabaja en base a, exclusivamente, código Visual
Basic El segundo trabaja en base a los objetos definidos en él y que prestan alguna
función específica.

En este módulo de código del Form van apareciendo los procedimientos de evento de
cada objeto que se encuentre sobre el Form, según se hace doble click sobre ellos.
Cuando se hizo doble click sobre el CommandButton apareció en el módulo del Form el
procedimiento de evento click del Command1. (Command1 es el nombre dado por
Visual Basic al CommandButton cuando fue puesto en el Form. Si se pusiera otro
CommandButton, sin cambiar el nombre del primero, Visual Basic llamaría a este
segundo CommandButton, Command2).

Luego, en la ventana editora de código del Form apareció :

Private Sub Command1 _ Click ( )

End Sub
Página 4 de 29
En el espacio en blanco es donde se debe escribir código Visual Basic. Haga la
comparación con la sintaxis general de un procedimiento de evento.

Volviendo al ejemplo. La idea es que al presionar el botón, tanto el textbox como el


botón desaparezcan y el nombre del usuario, que había sido escrito en el textbox,
aparezca escrito sobre el Form en letra grande.

El código a escribir debe ser más o menos el siguiente :

1                    Text1 . Visible = False


2                    Command1 . Visible = False

3                    Label1 . Top = 0


4                    Label1 . Left = 0

5                    Label1 . Caption = Text1 . Text

6                    Label1 . Height = Form1 . Height


7                    Label1 . Width = Form1 . Width

8                    Label1 . Alignment = 2


9                    Label1 . Font . Size = 22

10                Label1 . Visible = True

Los números escritos para cada línea no pertenecen a Visual Basic, no los escriba
en el código.

Las líneas 1 y 2 hacen que los objetos Text1 y Command1 no puedan ser vistos sobre el
Form.

Las líneas 3 y 4 ubican el Label1 en una coordenada precisa dentro del Form1. Esquina
superior izquierda.

La línea 5 es una de las más importantes. Esta línea es una asignación (así como se
hacen asignaciones en otros lenguajes, como por ejemplo el lenguaje C).
Específicamente, se asigna a la propiedad Caption del Label1 el contenido actual de la
propiedad Text del Text1. (En el momento en que se hace la asignación, es decir,
cuando se presiona el botón, el contenido de la propiedad Text del Text1 debe ser el
nombre del usuario).
Si suponemos que ya se está ejecutando la aplicación, note que el Label1 aun está
invisible a estas alturas de la ejecución de la aplicación.

Las líneas 6 y 7 son también asignaciones. Se asigna a las propiedades Height y Width
del Label1 los respectivos valores guardados en las propiedades Height y Width del
Form1. Es decir, se da al Label1 las mismas dimensiones del Form1.

La línea 8 permite dar alineación centrada al texto guardado en la propiedad Caption


del Label1.
Página 5 de 29
Nota
Por si no lo ha notado aun, la propiedad Alignment y otras propiedades, tienen un
número entero asociado a sus posibles valores. Más tarde se verá lo que se llaman
Constantes Visual Basic que solucionan el pequeño inconveniente de recordar qué
número es el que sirve en un momento determinado.

La línea 9 permite dimensionar el tamaño de las letras del texto escrito en la propiedad
Caption del Label1.

Nota
Esta notación parece romper la sintaxis general del lenguaje Visual Basic indicada al
principio del capítulo, pero no es así. La propiedad Font es de tipo Objeto (si. . .Objeto
también es un tipo de dato, como lo es Entero, Booleano, String, etc.). Por consiguiente,
Font, como todo objeto también tiene sus propiedades. Size es entonces una propiedad
de Font y Font es a su vez propiedad de Label1. La sintaxis sigue siendo válida.

La línea 10 permite mostrar finalmente el Label1 y su contenido en el Form1.

En el módulo de código del Form1 se debe ver lo siguiente :

Imagen Nº8 : Vista del módulo de código del ejemplo.

Nota

Página 6 de 29
Vea que todo el código está dentro del procedimiento de evento Click del Command1.
Es decir, cuando el usuario presione el botón con el mouse, todo ese código se ejecutará.
Y si el usuario no presiona el botón nada del código será ejecutado.

Por lo anterior es que se dice que Visual Basic es orientado a eventos. Todo depende de
la ocurrencia de un evento, sea este el click sobre un botón, el cambio en el texto de un
textbox, el cambio de dimensiones de un Form, etc.

Ya debe haber notado que Visual Basic proporciona algunas ayudas al programador. De
hecho, al escribir el nombre del objeto y el punto aparecen opciones de propiedades y
métodos pertenecientes a ese objeto.

 Imagen Nº 9 : Listado de opciones de propiedades y métodos de un objeto, como


ayuda de Visual Basic. (en este caso, de un label llamado label1).

Propiedad Name (NOMBRE) de objetos:

Cómo se había mencionado, la propiedad Nombre (o Name) de un objeto juega un papel


muy importante dentro de la programación Visual Basic. Tan importante es, que el dar
un nombre determinado a un objeto se considera un muy buen hábito de programación.

En realidad, lo anterior no sólo es válido en Visual Basic.

Si bien es cierto que Visual Basic da un nombre a todos los objetos que se ponen en un
Form, esto lo hace de forma automática. En el caso de TextBox, los llama Text1, Text2,
Text3, etc. Para Label, los llama Label1, Label2, etc.

Si bien este proceso es bastante cómodo pues permite desligarse de la obligación de


establecer esta propiedad de los objetos, puede convertirse en un inconveniente a
mediano y largo plazo.

Ejemplo
Suponga que implementa un Form con 15 Label, 25 TextBox, 5 CommandButton y 3
Image (Image es un control que ofrece Visual Basic, así como un TextBox o un Label,
pero para el manejo de imágenes). En general, suponga un Form con muchos controles.

Página 7 de 29
Cuando ya ha escrito el código respectivo de la mayoría de estos controles suponga que
por algún motivo debe dejar este proyecto de lado, por ejemplo, por otro que en ese
momento es más urgente (cosa no muy alejada de la realidad de un desarrollador).

Luego de un tiempo (que podrían ser semanas o meses) retoma su proyecto. Usted
mismo se preguntará ¿Qué hace el text15? ¿Qué hace el Command3? ¿Qué texto tiene
el Label8?

Por esto se acostumbra dar un nombre a todos los controles que se usan en un Form,
incluso se da un nombre al mismo Form o Forms de la aplicación. Aun más, existe un
listado de prefijos que, si bien no es un acuerdo mundial sobre el tema, es una opción
bastante buena y útil.

De aquí en adelante (y hasta el final del curso) se hará uso de los prefijos y se
incentivará su utilización así como el hábito de dar un nombre descriptivo a los objetos
según su uso o función dentro de la aplicación Visual Basic.
 
Lista de Prefijos
OBJETO PREFIJO EJEMPLO
Form frm frmMenu
TextBox txt txtApellido
CommandButton cmd cmdGuardar
Image img imgFoto1
ComboBox cbo cboAreas
ListBox lst lstMunicipalidades
Shape shp shpCirculo
OptionButton opt optArea1
CheckBox chk chkArea1
Label lbl lblTitulo

A medida que se avance en el curso irán apareciendo más prefijos, pero los mostrados
son los que con mayor frecuencia se usan en aplicaciones Visual Basic.

Variables y Constantes:
 
La definición de variable siempre trae algún conflicto al tratar de explicar un concepto
que, en realidad se explica por sí mismo. O por lo menos eso parece.o:p>

Variable es una porción de memoria que se ha destinado para guardar datos que van a
cambiar dentro de la ejecución de una aplicación.

La variable que se maneja mentalmente y en el código de un lenguaje de programación


es en realidad la misma, sólo que esta “variable mental” es simbólica. De ahí que el
intento de definir algo simbólico no sea tan fácil. En todo caso, la definición dada
representa perfectamente lo que se debe entender por variable.

Página 8 de 29
Visual Basic, como un lenguaje de programación, necesita que las variables a usar en
una aplicación sean declaradas.

Declaración de Variables:

En Visual Basic las variables pueden ser declaradas de dos maneras, como Públicas
(Public) o Privadas (Private). Esta declaración tiene asociado otro concepto que es muy
importante, el alcance (Scope).

El alcance (o Scope) de una variable indica si dicha variable es visible sólo en un


Módulo de Código de un Form o es visible en toda la aplicación. El que sea visible
significa que puede ser usada en un entorno determinado. Es decir, sólo será posible de
usar en ese entorno, donde es visible.

Recuerde que un Módulo de Código es un módulo que está asociado a todo Form, es
decir, todo Form posee uno.
La importancia de un Módulo de Código radica en que es en este Módulo de Código
donde se escribe gran parte del código del programa Visual Basic.

Sintaxis

Private <nombre de variable> As <tipo de variable>

Public <nombre de variable> As <tipo de variable>

Ejemplo
Declarar la variable CONTADOR como una variable de tipo entero, pero sólo visible
para el Form.

Solución
Private CONTADOR As Integer

Imagen N° 13 : Vista de la Declaración de una variable. La variable CONTADOR


es declarada sólo para el Módulo de Código del Form como una variable de tipo
entero.

Página 9 de 29
Algunas consideraciones:

Ya que se pidió que la declaración de la variable fuera sólo para el Form, la variable se
declara en la parte superior del Módulo de Código. De hecho esta parte del Módulo de
código del Form se llama Sección de Declaraciones Generales. Nótese que una línea
separa esta sección del resto del módulo

Nótese también que el ListBox de Objetos indica (General) y el ListBox de Eventos


indica (Declaraciones).
.
Nota
La línea de separación entre la Sección de Declaraciones Generales y el resto del
Módulo de Código podría no aparecer. Eso depende de algunas opciones de
configuración del ambiente de desarrollo de Visual Basic.

En realidad Visual Basic no obliga a hacer una declaración explícita de las variables que
se usan en un programa. Siempre es aconsejable declarar las variables que se usen, por
una cuestión de orden y buen hábito de programación.

Si no se declaran las variables, Visual Basic asume que son de tipo Variant. Variant es
un tipo de dato general, aun más general que el tipo de dato Object. Eso significa que la
porción de memoria asignada a las variables no declaradas es mucho mayor, ya que
eventualmente se podría asignar a estas variables elementos tan grandes como objetos o
tan pequeños como enteros simples. También se puede declara una variable como
Variant en forma explícita.

Ejemplo
Dim strNombre As Variant

Lo mismo sería si la variable strNombre fuera usada sin declararla. Dada la falta de la
declaración, Visual Basic asumiría que es de tipo Variant.

La verdad es que es atrayente no declarar las variables ya que Visual Basic lo hará por
uno, se puede pensar que es un problema menos, pero no es así.

Primero, se usan más recursos de los necesarios.

Segundo, se dificulta la administración del contenido de las variables (ya que se puede
guardar cualquier tipo de valor).

Tercero, se aumenta la posibilidad de errores al asignar un valor de un tipo de dato a una


variable de otro tipo de dato.

Desde la versión 4 de Visual Basic, es posible asignar objetos a variables.

Página 10 de 29
Ejemplo
Public X As Form
Set X = Form1

Primero se hizo la declaración de la variable X como un objeto de tipo Form y luego se


asigna a esta variable el Form1.
De aquí en adelante para referirse al Form1 se hará a través de la variable X.

Ejemplo
X . BackColor = vbRed

Si una variable debe ser declarada a nivel de Módulo o nivel de formulario, debe ser
declarada en este lugar específicamente. En la Sección de Declaraciones Generales.

Al ser declarada como Private, sólo es visible desde este Módulo de Código. No puede
ser usada desde otro Módulo de Código perteneciente a otro Form.
Por otro lado, el código escrito en los procedimientos de evento de este módulo pueden
usar esta variable como si fuera propia.

 
Imagen N° 14 : Alcance de Variable definida a nivel de Form. La variable X es de
tipo Double y es definida en la Sección de Declaraciones Generales del Form como
Private, es decir, sólo es posible de usar por los Procedimientos de Evento definidos
dentro del Módulo de Código del Form. No es necesario volver a definir la variable
dentro de los Procedimientos de Evento, estos la usan como si fuera propia.

Para hacer posible su uso desde otro Form debe ser declarada como Public. De hecho
esto haría que esta variable sea posible de usar desde cualquier otro Form perteneciente
al proyecto (o aplicación).

Página 11 de 29
Ejemplo
Declarar la variable X como una variable de tipo String. Esta variable debe ser posible
de usar en toda la aplicación.

Solución
Public X As String
 

 
Imagen N° 15 : Declaración de una variable Pública a nivel de Form. Desde un
Módulo de Código de otro Form (Form2) es posible usar la variable del Form1, pero es
necesario indicar el origen de la variable. Un ejemplo de esto se muestra en el evento
Click de un botón ubicado en el Form2.
 
Más consideraciones

Ya habrá notado que luego de escribir el operador As y dejar un espacio, Visual Basic
provee un pequeño listado de opciones de tipos de dato. Esta es otra opción de ayuda
del ambiente de desarrollo de Visual Basic. Más tarde se verá donde es posible
modificar estas, y otras opciones del ambiente de desarrollo.

Ejemplo
Declarar una variable. Esta variable sólo debe existir en un Procedimiento de Evento.
La variable debe ser de tipo entero.

Solución
Dim intCuenta As Integer

Página 12 de 29
Algunas consideraciones:

Sí. Se había indicado que existían dos formas de declarar una variable (Public y
Private), pero, a modo de permitir la compatibilidad de versiones de Visual Basic
(Visual Basic 6 con las anteriores) la palabra clave Dim es usada dentro de los
procedimientos de evento en vez de usar Private.

De hecho, no es posible usar Private (ni Public) para declarar variables dentro de un
procedimiento de evento. Se genera un error aun antes de la ejecución de la aplicación.

Las variables declaradas dentro de un procedimiento de evento se llaman Variables


Locales. Por lo tanto, para definir variables locales o variables dentro de un
Procedimiento de Evento se debe usar la palabra clave Dim.

Nótese que al nombre de la variable se le ha agregado un prefijo para indicar el tipo de


variable (en este caso entero, int). Al lado del tipo de dato, en la declaración de la
variable, parece estar de más, pero piense en el uso de esta variable dentro del código.
Si existiera mucho código escrito no sería tan fácil determinar rápidamente el tipo de la
variable si no tuviera este prefijo tan descriptivo.

De aquí en adelante se usará la notación de prefijos tanto para las variables como
para los objetos.

Ejemplo
Asigne a la variable intCuenta el valor guardado en la propiedad Text de un TextBox
llamado txtEdad.

Solución
intCuenta = txtEdad . Text

Algunas consideraciones:

Se está asignando un dato de tipo string a una variable de tipo entero. Esto no representa
problema. Visual Basic hace uso de la Conversión Automática. Pero hay que tener esto
en cuenta y tomar las precauciones del caso.

Ejemplo
Declare la variable strNombre como de tipo String pero sólo para el Form donde será
usada y haga que este valor string aparezca en un label llamado lblName.

Solución
Primero hay que declarar la variable a nivel de Form. En la Seción de Declaraciones
Generales se debe hacer la declaración:

Página 13 de 29
Dim strNombre As String

Luego, en algún Procedimiento de Evento:

lblName . Caption = strNombre

Algunas consideraciones:

En la Sección de Declaraciones Generales de un Módulo es posible usar tanto la palabra


clave Dim como Private. En este caso, y sólo en este caso, es indiferente su uso.

Si la variable perteneciera sólo a un procedimiento de evento, obligatoriamente se


debería usar Dim.

La asignación de la variable a la propiedad Caption de la etiqueta (o Label) se supone


que fue hecha en algún procedimiento de evento.

A decir verdad no es posible escribir código Visual Basic fuera de un


procedimiento de evento.
Posteriormente, se verán otros tipos de procedimiento. Pero, fuera de estos y de la
Sección de Declaraciones Generales, no hay otro lugar donde sea aceptable escribir
código Visual Basic.

Ejemplo
Declarar una variable para contar las veces que un usuario presiona un botón.

Solución
Debe ser más o menos claro que la variable debe ser declarada dentro de un
Procedimiento de Evento, específicamente en el evento Click de un botón. Es decir, la
variable debe ser una Variable Local.

Luego, según las indicaciones anteriores el código debe ser el siguiente:

Private Sub cmdBoton _ Click ( )


Dim intContador as Integer

intContador=intContador + 1
Print intContador
End Sub

El problema es que cada vez que el usuario presione el botón se ejecutará el código
dentro del procedimiento de evento, es decir, cada vez que se presione el botón la
variable se volverá a definir (o declarar) lo que hará que cada vez retome su valor
inicial, el valor cero ( 0 ).

Para resolver este problema se usa otra palabra clave Static en la definición de
variables. Al definir la variable con la palabra clave Static el código debe quedar así:

Página 14 de 29
Private Sub cmdBoton _ Click ( )
Static intContador as Integer

intContador = intContador + 1

Print intContador
End Sub

El efecto de esta palabra clave es retener el valor de la variable. Ahora si, cada vez que
el usuario presione el botón el valor de la variable será retenido y resguardado hasta el
momento que se use su valor.

Justamente este tipo de declaraciones se usa cuando se desean definir variables usadas
como contador.

Constantes

La definición de una constante parece un poco más sencilla luego de haber establecido
la de una variable.

Una Constante es una porción de memoria destinada para guardar datos que no van
sufrir cambios durante la ejecución de una aplicación. Es decir, al momento de ejecutar
la aplicación estos valores son fijados y no son cambiados.

Sintaxis

Private Const <variable> As <tipo> = <valor>

Algunas consideraciones:

Las constantes sólo pueden ser declaradas como Private en un Módulo de Código de un
Form y sólo en la Sección de Declaraciones Generales de un Módulo de Código de un
Form.

Como convenio se suelen escribir en mayúsculas.

Para declara una constante que pueda ser usada en toda la aplicación debería ser
declarada como Public, pero en otro tipo de Módulo de Cödigo. Este se verá más
adelante en el curso.

Ejemplo
Declarar una constante strEmpresa. Esta sólo será usada en los procedimientos de
evento de un Form.

Solución
Private Const STREMPRESA As String = “LADECO”
Página 15 de 29
Ejemplo
Use la constante del ejemplo anterior para asignar a un TextBox el nombre de la Línea
Aérea guardada en la constante.

Solución
txtEmpresa = STREMPRESA

Algunas consideraciones:

Una vez definida la constante no es necesario volver a hacerlo. La constante puede ser
usada como un valor más.

 
Instrucciones Condicionales y de Iteración:
 
Estructuras Condicionales (If . . . Then . . .End if)o:p>

La sintaxis de una estuctura condicional en Visual Basic no es muy diferente de otros


lenguajes. A decir verdad, el concepto es el mismo, sólo la manera de escribirlo es
diferente.

Sintaxis:

If <Condicion> Then
<código a ejecutar si la condición es verdadera>
Else
<código a ejecutar si la condición es falsa>
End if

La condición puede ser de tipo Booleana o matemática (que es casi lo mismo).

Por ejemplo, la expresión 3 < 4 (3 menor que 4) es Verdadera. La expresión 5 = 8 es


Falsa.

Ejemplo
Implemente una aplicación Visual Basic que permita determinar si la clave ingresada a
un TextBox es la clave que corresponde. Luego de escribir la clave, el usuario debe
presionar un botón. Si la clave es la correcta debe aparecer “Bienvenido” en el TextBox.
Si no es la correcta, debe aparecer “No Bienvenido”.

Solución
Como siempre, lo primero es la interfaz de usuario. Ponga un TextBox y un botón.
Cambie las propiedades de los controles para hacer una mejor interfaz de usuario.

Luego de construida la interfaz de usuario, es obvio donde se debe escribir código…¿o


no?...sí, debe ser en el evento Click del botón (según las especificaciones del problema).
Página 16 de 29
El código a escribir en este procedimiento de evento debe ser :

Private Sub cmdBoton _ Click ( )


Dim strClave as String
strClave = txtClave . Text

If strClave = “CLAVE” Then


txtClave = “Bienvenido”
Else
txtClave = “No Bienvenido”
End if
End Sub

Algunas consideraciones:

A modo de simplificar el ejercicio se ha considerado que la clave a verificar es el string


“CLAVE”. Por supuesto, esta no es la manera de usar las claves de acceso a un sistema.

NUNCA ponga la clave del sistema en el código.

Por lo general la clave está en una Base de Datos. Pero el acceso a Base de Datos viene
más tarde en el curso.

Parece algo extraño que se haga el traspaso desde el TextBox a la variable y luego se
use la variable para verificar la clave. ¿Por qué no hacerlo directamente? Es decir:

If txtClave = “CLAVE” Then


txtClave = “Bienvenido”
Else
txtClave = “No Bienvenido”
End if

La cuestión es que esto implica un paso extra antes de hacer la verificación de clave.
Visual Basic debe ratificar si el TextBox existe y luego ver el contenido de la propiedad
Text del TextBox para finalmente hacer la verificación de clave. Si este código se repite
muchas veces podría afectar la rapidez con que la aplicación verifica la clave (que es
precisamente su función y utilidad). Claro, se habla de repetir el proceso muchas veces,
tanto como para hacer que el funcionamiento de la aplicación se vea comprometido.

Por lo anterior, el uso de variables es mucho más rápido que usar las propiedades de un
objeto.

Otras formas de las Estructuras Condicionales:

Algunas formas derivadas de estas estructuras se adaptan mejor a las exigencias de


algunas aplicaciones. A fin de cuentas, lo importante es usar las mejores herramientas
en cada caso puntual. Salvo que explícitamente se pida el uso de una herramienta en
Página 17 de 29
particular o las condiciones dadas de un problema no permitan una libre elección. Por
lo general, lo segundo es lo habitual.

Estructura If . . .Then . . . ElseIf . . . End if

If <condición> Then
<código a ejecutar si condición es verdadera>
ElseIf <condición2> Then
<código a ejecutar si condición2 es verdadera>
Else
<código a ejecutar si las condiciones anteriores son falsas>
End If

Ejemplo

Private Sub cmdBoton _ Click ( )


Dim strClave as String
strClave = txtClave . Text
If strClave = “CLAVE” Then
txtClave = “Bienvenido”
ElseIf strClave = ”clave” Then
txtClave = “Debe escribir con mayúsculas”
ElseIf strClave = “Clave” Then
txtClave = “Todos los caracteres deben ser mayúsculas”
Else
txtClave = “No es la Clave Correcta”
End If
End Sub

En general, si se tiene varias condiciones se debería usar esta estructura condicional.


Pero, sólo si son pocas. Si las condiciones son muchas (más de tres) se debe usar otro
tipo de estructura condicional.

Otra alternativa a la estructura condicional If . . . Then . . . End If es la estructura


Select Case. Esta estructura se usa cuando hay muchas opciones diferentes de
condición.

Estructura Select Case

Select Case <expresión de prueba>


Case <expresión1>
<código a ejecutar si la expresión1 es igual a la expresión de prueba>
Case <expresión2>
<código a ejecutar si la expresión2 es igual a la expresión de prueba>
Case <expresión3>
<código a ejecutar si la expresión3 es igual a la expresión de prueba>
...
Página 18 de 29
Case Else
<código a ejecutar si ninguna expresión anterior es igual a la expresión de prueba>
End Select
Ejemplo
En un Form llamado frmRegiones se ha ubicado dos label, llamados lblTexto y
lblCiudad, y un TextBox, llamado txtOpcion. En el label lblTexto se indica al usuario
que debe escribir en el TextBox el número correspondiente de la región, dado el nombre
de la capital regional que aparece en el label lblCiudad.
 

Imagen N° 16 : Posible vista inicial del ejercicio. Se debe dar los valores a las
propiedades para conformar la interfaz de usuario de la aplicación.

Solución
Una vez construida la interfaz de usuario, la pregunta es en qué evento se debe escribir
el código.

Para simplificar, una vez que el usuario escriba la opción de número de región,
presionar la tecla Enter es una buena opción para iniciar el proceso de verificación de la
región.

Luego, el evento debe pertenecer al textBox, ya que el cursor del mouse estará en el
TextBox cuando la tecla Enter sea presionada.

En Visual Basic, que el cursor del mouse esté en un objeto u otro se describe como
tener el foco. Por lo tanto, mientras se escribe en el TextBox txtOpcion, este objeto
tiene el foco.

Entonces, el evento a usar se llama KeyPress y debe pertenecer al TextBox


txtOpcion. Este evento se inicia cada vez que una tecla es presionada, siempre y cuando
el cursor del mouse este en el TextBox.

El Procedimiento de Evento de este evento es:

Private Sub txtOpcion_KeyPress(KeyAscii As Integer)

End Sub

Página 19 de 29
Nótese que este evento posee un argumento llamado KeyAscii y es de tipo entero. Este
argumento es absolutamente necesario para resolver el problema de discriminar entre
las teclas presionadas por el usuario.

Es decir, la cuestión es cómo responder a la siguiente pregunta: ¿Cómo se va a saber si


el usuario presiona la tecla Enter?

Toda tecla alfanumérica (números y letras) y algunas otras teclas como la Enter poseen
un código que las identifica. Este código es el Código Ascii.

Luego, al presionar una tecla, KeyAscii contendrá el Código Ascii de la tecla


presionada.

El código Ascii de la tecla Enter es 13. Así que usando un simple bloque If se resuelve
ese problema.

El código debe ser:

Private Sub txtOpcion_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then

End If
End Sub

Ahora falta resolver el problema de las ciudades, regiones y opciones.

El código debería ser:

intOpcion = txtOpcion
Select case intOpcion
Case 1
lblCiudad . Caption = “Anda lejos”
Case 2
lblCiudad . Caption = “Anda lejos”
Case 3
lblCiudad . Caption = “Anda lejos”
Case 4
lblCiudad . Caption = “Se acerca”
Case 5
lblCiudad . Caption = “Se acerca”
Case 6
lblCiudad . Caption = “Se acerca”
Case 7
lblCiudad . Caption = “Casi llega”
Case 8
lblCiudad . Caption = “Correcto”
Case 9
lblCiudad . Caption = “Se pasó”
Case 10
lblCiudad . Caption = “Se aleja”
Página 20 de 29
Case 11
lblCiudad . Caption = “Se aleja”
Case 12
lblCiudad . Caption = “Anda lejos”
Case 13
lblCiudad . Caption = “Anda lejos”
End Select

Con este código se resuelve el problema. Pero ya que existen opciones que se repiten es
posible deshacerse de algunas líneas que, en realidad están de más.

El código debería ser:

intOpcion = txtOpcion
Select case intOpcion
Case 1, 2, 3, 12, 13
lblTexto . Caption = “Anda lejos”
Case 4, 5, 6, 10, 11
lblTexto . Caption = “Anda cerca”
Case 7
lblTexto . Caption = “Casi llega”
Case 8
lblTexto . Caption = “Correcto”
Case 9
lblTexto . Caption = “Se pasó”
End Select

Aun más, si el usuario escribe un número que no está entre 1 y 13 sería bueno darle un
mensaje correspondiente.

Agregando lo anterior, el código final debe ser:

Private Sub txtOpcion_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
intOpcion = txtOpcion
Select case intOpcion
Case 1, 2, 3, 12, 13
lblTexto . Caption = “Anda lejos”
Case 4, 5, 6, 10, 11
lblTexto . Caption = “Anda cerca”
Case 7
lblTexto . Caption = “Casi llega”
Case 8
lblTexto . Caption = “Correcto”
Case 9
lblTexto . Caption = “Se pasó”
Case Else
lblTexto . Caption = “Sólo existen 13 regiones”
End Select
End If
Página 21 de 29
End Sub

Sólo el tratar de imaginar el código necesario usando sólo la estructura If … Then …


End if hace ver las bondades de la estructura Select Case.

Tenga en mente el evento KeyPress, es un evento muy útil y muy usado en muchas
aplicaciones Visual Basic, sobre todo cuando se desea que la aplicación pueda
discriminar entre teclas presionadas.

Estructuras de Control de Repeticiones

Basta con pensar en que se desea repetir una operación o un proceso una cierta cantidad
de veces para ver que es necesaria alguna estructura de repetición dentro del lenguaje.
Visual Basic posee Estructuras de Control de Repeticiones así como existen en otros
lenguajes.

En Visual Basic existen esencialmente dos estructuras de control de repeticiones. La


estructura Do . . . Loop y la estructura For . . . Next.

Estructura Do … Loop

Esta estructura se divide en cuatro opciones para el programador:

a)                  Do … Loop While


b)                 Do … Loop Until
c)                  Do While … Loop
d)                 Do Until … Loop

En realidad estas estructuras son muy similares a las de otros lenguajes ya conocidos
por el lector.

Las estructuras Do … Loop While y Do While … st1:place>Loop funcionan de manera


similar.

Do
<código que se repetirá mientras la condición sea verdadera>

Loop While <condición>

Nótese que la primera vez el código se ejecutará, independiente de la condición, de ahí


en adelante la repetición dependerá exclusivamente de la condición.

Do While <condición>
<código que se repetirá mientras la condición sea verdadera>
Loop

Página 22 de 29
Nótese que el código se repetirá mientras la condición sea verdadera, incluyendo la
primera vez.

Las otras estructuras tienen una sutil pero importante diferencia.

Do
<código que se repetirá hasta que la condición sea verdadera>
Loop Until <condición>

Igual que antes, la primera vez no es dependiente de la condición.

Do Until <condición>
<código que se repetirá hasta que la condición sea verdadera>
Loop

Se sugiere revisar estas estructuras con la palabra clave Until y asegurarse que se ha
comprendido su funcionamiento.

Ejemplo

En la Sección de Declaraciones Generales


Dim x As Boolean
Dim y As Integer

En el evento Click de un botón


Do While x = True
<código que puede cambiar el valor de x a False (Falso)>
y = y +1
Loop
Print “y = ” & y

Algunas consideraciones:

¿Cuántas veces se repitió el incremento de x?...Respuesta: depende de si x cambió su


valor a True (Verdadero).

Ejemplo

En la Sección de Declaraciones Generales


Dim x As Integer

En el evento Click de un botón


Do
x = x +1
Loop While x < 5
Print “x = ” & x

Página 23 de 29
¿Ahora cuántas veces se repitió el incremento de x?...Respuesta: 4 veces.

El comando Print permite imprimir en el Form lo que se indique. A través del uso de
los caracteres de concatenación de string (recuerde que tanto el & como el carácter +
son caracteres de concatenación) es posible armar frases completas e imprimir una serie
de valores de variables de una aplicación.

Estructura For … Next

Esta estructura de repetición se usa cuando, a diferencia de los casos anteriores, se sabe
la cantidad de repeticiones (o iteraciones) que es necesario realizar.
En las estructuras anteriores la cantidad de repeticiones dependía de una condición, pero
no se podía especificar cuantas veces se haría la repetición.

For <contador> = <inicio> To <final>


<código que se repetirá mientras no se llegue al final>
Next <contador>

Ejemplo

For i = 1 To 10
Print i
Next i

Algunas consideraciones:

Este código puede ser puesto en el evento Click de un botón. La variable i puede ser
declarada dentro del procedimiento de evento o en la Sección de Declaraciones
Generales del Form.

El comando Print imprimirá los valores de la variable i en el Form.

¿Cuál es valor de i al terminar la repetición?...Respuesta: 11. Verifíquelo.

Tenga en cuenta que el contador de una repetición For…Next siempre terminará con
uno más que el valor indicado como final.

Hay una excepción a lo indicado anteriormente. Puede darse el caso en que bajo ciertas
circunstancias sea necesario salir de la repetición (o quebrar el ciclo). Para hacer esto
se usa el comando Exit For.

Página 24 de 29
Ejemplo

For i = 1 To 10
If i = 5 Then
Exit For
Else
Print i
End if
Next i

Algunas consideraciones:

Cuando i tenga el valor 5 el ciclo será quebrado.

¿Hasta dónde llegará la cuenta en el Form?…Respuesta: Se imprimió hasta


4.Verifíquelo.

Las estructuras de repetición anteriormente vistas también poseen su comando para


quebrar el ciclo. En estos casos el comando es Exit Loop.

Ejemplo

En la Sección de Declaraciones Generales

Dim x As Boolean
Dim y As Integer

En el evento Click de un botón

Do While x = True
<código que puede cambiar el valor de x a False (Falso)>
If x = False Then
y=0
Exit Loop
End If
y = y +1

Loop
Print “y = ” & y

Si en un momento determinado x cambia de Verdadero a Falso, la condición del bloque


If será verdadera y el ciclo se quebrará. Antes de esto, a la variable y se le asignará el
valor 0 (cero).
 
Página 25 de 29
Cuadros de Mensaje y Cuadros de Entrada de Datos:

Antes de iniciar los ejercicios serán presentadas dos funciones de Visual Basic que se
encuentran entre las más ampliamente usadas en cualquier aplicación Visual Basic.

Función MsgBox

Esta función permite mostrar al usuario avisos o mensajes en pantalla. Es posible


supeditar estos mensajes a ciertas circunstancias o valores determinados de variables.

Sintaxis

MsgBox Prompt, Button, Title

Algunas consideraciones:

Prompt corresponde al mensaje que el usuario verá en pantalla.

Button indica tanto la imagen como el botón que aparecerá en el Cuadro de Mensaje (o
MsgBox). En el ejemplo, sólo se indica una imagen, la de información. Al no indicar un
botón en particular Visual basic asume que debe aparecer sólo el botón por defecto, el
de Aceptar (u OK).

Title corresponde al string que aparece en la barra de título del Cuadro de Mensaje (o
MsgBox)

Ejemplo
 

 
Imagen N° 17 : Uso de la función MsgBox dentro de un trozo de código.

Página 26 de 29
Si se hace una revisión rápida de los ejemplos expuestos con anterioridad se podrá ver
que cada vez que se quería dar un mensaje al usuario se usaban Label o TextBox,
incluso en algunas ocasiones hasta CommandButton. Si bien no es un error hacer esto,
lo mejor, dado que fueron diseñados para eso, es usar unos MsgBox.
Función InputBox

Esta función de Visual Basic permite poner en pantalla un cuadro de mensaje con un
TextBox incluido. Así se da la ocasión al usuario para ingresar valores a la aplicación.

Sintaxis

X = InputBox ( Prompt, Title, Default, XPos, YPos )

Prompt es el mensaje que acompaña al TextBox y que, generalmente, da las


indicaciones sobre el valor que se debe poner en el TextBox.

Title es el string de texto que aparece en la Barra de Título del Cuadro de Entrada de
Datos.

Default es el valor que aparece en el TextBox para que el usuario tenga algún
conocimiento sobre el valor que debe poner en el TextBox (formato, rango, tipo, etc.)

XPos e YPos indican la posición que se desea para este Cuadro de Entrada de Datos

Ejemplo

En un Procedimiento de Evento Click de un botón:

variable = InputBox (“Hola”, “Titulo del InputBox”, “Valorpordefecto”)

Algunas consideraciones:

El único argumento obligatorio es el Prompt (el mensaje)

Comparando con el MsgBox se verá que en este caso se deben usar los paréntesis y
además se hace uso de una variable. Esto es obligatorio.

Ya que el InputBox recibirá un valor de parte del usuario, este valor debe ser guardado
en algún lugar durante la ejecución de la aplicación. De ahí el uso de la variable.
Los paréntesis son, sencillamente, por reglas del lenguaje.

Página 27 de 29
Imagen N° 18 : Ejemplo de InputBox. El Prompt es el string “Hola”, el Title es el
string “Titulo del InputBox” y Default es el string “Valorpordefecto”.

Lo usual es que cuando se necesita que el usuario ingrese un valor a la aplicación se use
el InputBox. Y cuando se deba dar un aviso al usuario se use en MsgBox.

En realidad, el MsgBox también puede capturar decisiones del usuario, y dadas éstas, la
aplicación seguirá un curso de acción según su programación. Para esto la sintaxis del
MsgBox cambia un poco y se asemeja a la de un InputBox.

Sintaxis

W = MsgBox ( Prompt, Button, Title)

Aquí el argumento Button juega un papel muy importante. Las opciones posibles para
este argumento son variadas:
 

Imagen N° 19 : Opciones para el argumento de la función MsgBox usada para


rescatar una opción del usuario.

Luego, al seleccionar una opción, por ejemplo la opción vbYesNo, tendrá el efecto que
el MsgBox mostrará dos botones, uno con un Yes (Si) y otro con un No.

La variable, que en este ejemplo se llama W, guardará la elección que el usuario haga
entre estas dos opciones.

Ejemplo
Poner un botón en un Form. Al presionar este botón se debe consultar al usuario si
desea continuar con la aplicación o si desea terminar la ejecución.

Página 28 de 29
Solución
Luego de hacer la interfaz de usuario, el evento click del botón debe alojar el siguiente
código Visual Basic.

W = MsgBox ( “¿Desea terminar la aplicación?”, vbYesNo, “Consulta” )


If W = vbYes Then
End
End If

Nota
Aparece vbYes en el código, que es lo que se conoce en términos generales como
Constante Visual Basic. También son constantes Visual Basic las opciones vbNo,
vbCancel, etc. Cada una de las constantes Visual Basic tiene un valor numérico
asociado.

En la ayuda de Visual Basic que viene con el MSDN puede encontrarse un completo
listado de las constantes Visual Basic para ámbitos diferentes.

Su importancia se manifiesta cuando no es posible recordar el valor númerico asociado


a una constante Visual Basic específica. A medida que sea necesario para el desarrollo
del curso se irán mostrando más opciones para este importante elemento del lenguaje.
 

NOMBRE JONATTAN ALEJANDRO ARRIAGADA IMIGO

CARRERA INGENIERIA EN INFORMÁTICA

El tema del texto.

 Que tiene ejemplos y soluciones.

 Las imágenes.

Página 29 de 29

También podría gustarte