Está en la página 1de 31

Apuntes Visual Basic 29/01/20 21'57

1. Tipos de datos y expresiones


1.1. Declaración de variables
1.2. Constantes
1.3. Declaración de matrices
1.4. Expresiones y operadores
2. Estructuras de selección
2.1. Sentencia IF … THEN … ELSE
2.2. Estructura SELECT CASE
3. Estructuras iterativas
3.1. Instrucción FOR … TO … NEXT
3.2. Instrucción DO … LOOP
4. Controles básicos
3.1. Introducción al uso de controles
3.2. Controles básicos
3.3. Eventos
5. Formularios
5.1. Propiedades
5.2. Utilización de multiples formularios
5.3. Comunicacion entre formularios
6. Contantes y funciones de Visual Basic
6.1. Constantes
6.2. Funciones matemáticas
6.3. Funciones aleatorias
6.4. Funciones de cadenas de caractéres
6.5. Funciones de fechas
6.6. Funciones de comprobación
6.7. Otras funciones
6.8. Las funciones InputBox y MsgBox
7. El editor de menús

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 1 de 31
Apuntes Visual Basic 29/01/20 21'57

1. Tipos de datos y expresiones

1.1. Declaración de variables


Antes de utilizar un dato en nuestros programas, es necesario declararlo. Este dato puede ser variable, con lo cual
podrá cambiar de valor a lo largo del programa, o constante, en cuyo caso su valor será el mismo a lo largo de todo el
programa y no podrá modificarse. La forma de declarar las variables es la siguiente:
Dim| Public| Static nombre_variable As tipo
Dim: Al declarar una variable con esta palabra estamos diciendo que la variable será local al ámbito en que se declara.
Puede ser dentro de un procedimiento o dentro de un formulario; de esta forma no será accesible desde los demás
procedimientos o formularios.
Public: Las variables declaradas serán publicas y podrán estar accesibles desde todos los formularios de la aplicación.
Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al
entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de
ejecución de la aplicación. De esta forma al entrar en algún procedimiento las variables recuerdan el valor que tenían
cuando se salió de él.
Los tipos de variables que se pueden utilizar en Visual Basic se muestrean en la tabla siguiente.
TIPOS DE VARIABLES
TIPO COMENTARIO

BOOLEAN Sólo admite 2 valores: TRUE o FALSE


BYTE admite valores enteros entre 0 y 255
INTEGER admite valores enteros entre -32768 y 32767

LONG valores enteros entre –2.147.483.648 y 2.147.483.647


SINGLE admite valores decimales con precisión simple
DOUBLE admite valores decimales de doble precisión
CURRENCY válido para valores de tipo moneda
STRING cadenas de caracteres
DATE fechas, permite operar con ellas

Al declarar una variable lo que estamos haciendo es decir al procesador que reserve una posición de memoria para
guardar un dato. La cantidad de memoria reservada dependerá del tipo de variable que hayamos indicado. Es importante
tener en cuenta que siempre debemos utilizar el tipo de variable más pequeña posible, pues de esta forma estaremos
consumiendo la menor cantidad de memoria. Por ejemplo, si queremos crear una variable en la que se guardará la edad de
una persona, bastará con que la variable creada al efecto sea de tipo byte.

1.2. Constantes
Una constante es aquel dato que tendrá el mismo valor a lo largo de todo el programa. Para declarar una constante, se
procede de la forma siguiente:
Const nombre_constante As tipo = valor

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 2 de 31
Apuntes Visual Basic 29/01/20 21'57

donde nombre_constante es el nombre que queramos dar a la constante, tipo es uno de los tipos de la tabla anterior y valor
es el valor que tendrá la constante. El siguiente ejemplo declara una constante llamada PI a la que se asigna el valor
3,1416:
Const PI as Single = 3,1416

1.3. Declaración de matrices


Una matriz es un conjunto de datos del mismo tipo. Supongamos que necesitamos almacenar 10 números enteros; en
lugar de crear 10 variables de tipo entero, podemos crear una matriz de 10 elementos. Para declarar matrices debemos
colocar entre paréntesis el número de elementos de los que constará a continuación del nombre de la variable; también
habrá que indicar el tipo de elementos que va a almacenar la matriz. Todo ello se realiza con la siguiente expresión:
Dim nombre_matriz(dimensión) As tipo
Ejemplo: Dim medidas(9) as integer
De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9, en la cual se almacenarán números enteros.
Para referirnos al quinto elemento de nuestra matriz, habría que escribir medidas(4). (Recuerda que el primer elemento es el de
índice 0, el segundo el de índice 1, …). Así por ejemplo, la expresión
medidas(7) = -5
almacenaría el número –5 en el octavo elemento de la matriz.
Aunque no es lo habitual, podemos obligar a que el primer elemento de una matriz tenga el índice con valor 1. Esto lo
haremos colocando la instrucción option base 1 en la sección declarations de nuestro formulario.
También podemos indicar los límites inferior y superior de la matriz:
Dim medidas(5 to 14) as integer es una matriz de 10 elementos cuyos índices van del 5 al 14.
Las matrices pueden tener más de una dimensión. Las matrices multidimensionales se declaran de la siguiente forma:
Dim medidas(2, 9) as integer
sería una matriz bidimensional de 30 elementos, agrupados en tres filas y diez columnas. El primer elemento sería el de
índice (0, 0) y el último (2, 9). Imagina que queremos hacer el típico juego de los barcos con un tablero de 8 x 8 casillas.
Crearíamos una matriz en la que se almacenaría que casilla contiene un barco y cual no de la siguiente forma:
Dim tablero_de_barcos(7, 7) as boolean
Si te has fijado bien habrás podido observar que hemos separado con el símbolo _ las palabras “tablero” “de” “barcos”;
ello es debido a que el nombre de una variable no puede estar formado por más de una palabra, por lo que hay que unirlas
de alguna forma para hacer creer al ordenador que se trata de una sola palabra.

1.4. Expresiones y operadores


Una expresión es un conjunto de operandos y operadores que una vez evaluados devuelven un resultado. En Visual
Basic hay cuatro tipos de operadores: aritméticos, relacionales, lógicos y de texto. Los operadores relacionales son
aquellos que devuelven valores de tipo Bolean, es decir, su resultado será Verdadero o Falso.
TIPOS DE OPERADORES
Aritméticos Relacionales Lógicos De texto
Potenciación ^ Igual que = Not &
Negación - Distinto a <> And
Suma y resta +, - Menor que < Or
Multiplicación y división *, / Menor o igual que <=

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 3 de 31
Apuntes Visual Basic 29/01/20 21'57

División entera \ Mayor que >


Mayor o igual que
Resto de la división Mod
>=

Los operadores aritméticos y los relacionales no necesitan mayor aclaración. La función de los operadores lógicos y de
texto es la siguiente:
! Not (expresión) si el resultado de expresión es FALSO lo convierte en VERDADERO, y
viceversa.
! (expresión_1) And (expresión_2) devuelve VERDADERO si el resultado de las dos expresiones es
VERDADERO, y FALSO en caso contrario.
! (expresión_1) Or (expresión_2) devuelve VERDADERO si el resultado de alguna de las dos expresiones es
VERDADERO, y FALSO en caso contrario.
Unos ejemplos ayudarán a comprender mejor algunos de los distintos operadores:
Expresión Resultado Expresión Resultado
4 ^ 3 64 2 + 7 <> 5 VERDADERO
7 / 3 2,33333333 2 + 7 > 9 FALSO
7\3 2 2 + 7 >= 9 VERDADERO
7 mod 3 1 Not (3 < 5) FALSO
(2 + 3 < 8) And (3 < 5) VERDADERO
“buen” & “día” “buendía” (2 + 3 < 8) Or (3 < 5) VERDADERO

Ejercicios:
1) Indica como se declararía una variable que almacenase los siguientes datos:
a) El año de nacimiento de una persona.
b) El resultado de una ecuación de un ejercicio de física.
c) Saber si una persona es mayor de edad.
d) La ciudad de residencia de una persona.
e) El número de hijos de una persona.
2) Escribe la expresión que declara una constante de valor “ZAMORA”.
3) Queremos crear una matriz en la que se van a almacenar las medidas (ancho, alto y largo) de un
automóvil, en milímetros y sin decimales. ¿Cómo se declararía la matriz que contuviese estos
datos?
4) Indica el resultado de las siguientes expresiones:
a) (2 + 5) ^ 2
b) Not (( 19 Mod 5) < 7)
c) “Hola“ & “ “ & “amigos”
d) 18 > 11 And (( 5 \ 3 ) <> 1)
e) 18 > 11 Or (( 5 \ 3 ) <> 1)

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 4 de 31
Apuntes Visual Basic 29/01/20 21'57

2. Estructuras de selección
Hay ocasiones en las que un programa debe realizar distintas acciones dependiendo del valor de una condición. En estos
casos, disponemos de 2 tipos de sentencias para realizar selecciones dependiendo del valor de una expresión o de una
variable:

2.1. Sentencia IF … THEN … ELSE


La estructura general de esta sentencia es la siguiente:
If condición then
bloque de sentencias a realizar si la condición es cierta
Else
bloque de sentencias a realizar si la condición es falsa
End If
Supongamos que queremos crear un programa que nos diga si somos mayores o menores de edad. El código de dicho
programa sería el siguiente:
If edad < 18 Then
print “menor de edad”
Else
print “mayor de edad”
End If
Se pueden colocar todas las sentencias de código que queramos en cada uno de los bloques de sentencias, siempre que
cada sentencia vaya en una línea distinta. Si los bloques de sentencias están formados por una sola instrucción podemos
utilizar la versión reducida que ocupa una sola línea:
If condición then sentencia else sentencia
Ejemplo: If IsNumeric(número) then a = número else print “Error”
En el ejemplo anterior, si la variable número contiene un valor numérico, este es
almacenado en la variable a; en caso contrario el programa imprimirá en pantalla
el mensaje “Error”.
También podemos anidar varias sentencias If then Else cuando una de las 2 opciones iniciales contiene a su vez 2
bifurcaciones dependiendo del estado de otra condición:
If edad < 18 Then
print “menor de edad”
Else
If edad < 65 Then
print “adulto”
Else
print “tercera edad”
End If
End If
Este último ejemplo podría haberse escrito de otra forma utilizando la cláusula ElseIf:
If edad < 18 Then
print “menor de edad”
ElseIf edad < 65 Then
print “adulto”
Else
print “tercera edad”
End If

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 5 de 31
Apuntes Visual Basic 29/01/20 21'57

Podemos introducir tantas líneas ElseIf como queramos siempre antes del último Else, si es que lo necesitamos.
Para múltiples decisiones, normalmente más de 3, en las que dependiendo del valor de una variable queremos que se
realice una acción distinta, no conviene utilizar la estructura If Then, sino que el código queda más claro y resulta más
fácil de modificar utilizando la sentencia Select

2.2. Estructura SELECT CASE


Esta sentencia permite realizar operaciones diferentes dependiendo del valor de una variable. Su estructura general es la
siguiente:
Select Case dato
Case valor1
bloque de sentencias
case valor2
bloque de sentencias
Case valor3
bloque de sentencias
Case Else
bloque de sentencias, se ejecutan si no se cumple ninguno de los
valores anteriores
End Select
En esta construcción, dependiendo del valor de la variable dato se ejecutará un bloque de sentencias diferente. Los valores
que podemos colocar en lugar de valor1, valor2, valor3 no sólo se limitan a valores constantes como números y cadenas
de texto, sino que podemos comparar con un número como podemos ver en el siguiente ejemplo, en el que tenemos una
variable de tipo single llamada NotaFinal en la que está guardada la nota de un alumno:
Select Case NotaFinal
Case Is < 5
print “Suspenso”
Case Is < 6
print “Suficiente”
Case Is < 7
print “Bien”
Case Is < 9
print “Notable”
Case Else
print “Sobresaliente”
End Select
Como podemos observar si utilizamos los operadores lógicos como >, <, =, <=, >= debemos anteponer el operador Is. Si
lo que hacemos es comparar con un intervalo de valores colocaremos el operador to entre los limites del intervalo.
Case 5 to 5.99
print “suficiente”
También podemos realizar comparaciones con un conjunto de valores separados por comas:
Case 1, 3, 5
print “el numero es impar”

Ejercicios:
1) Escribe un programa que imprima la palabra GRANDE si un número es mayor o igual que 1000 y
PEQUEÑO en caso contrario.
2) Un programa debe indicar si un número es positivo, negativo o cero. ¿Cuál será su código?

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 6 de 31
Apuntes Visual Basic 29/01/20 21'57

3) Indica como sería el código de un programa en el que a partir del valor numérico del mes nos
dijese en que estación del año nos encontramos.
4) Indica como se escribiría el código en el que a partir del valor numérico del mes nos dijese el
nombre del mes en que nos encontramos.

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 7 de 31
Apuntes Visual Basic 29/01/20 21'57

3. Estructuras iterativas

3.1. Instrucción FOR … TO … NEXT


Sirve para ejecutar un bloque de sentencias un número conocido de veces. La sintaxis de esta instrucción es
For contador = inicio To fin [Step incremento]
bloque de sentencias
Next [contador]
Contador es la variable numérica que se incrementa cada vez que se ejecuta el bucle. Este se realizará un número
determinado de veces que vendrá determinado por los valores de inicio y de fin. Los argumentos entre corchetes son
opcionales. Si no se indica incremento, éste se presupone que vale 1. En cualquier momento podemos abandonar la
ejecución en mitad del bucle si dentro del bloque de sentencias colocamos la instrucción Exit For.
Unos cuantos ejemplos ayudarán a comprender mejor esta instrucción:
For i = 1 to 5
Print i Imprime en pantalla los números 1 a 5
Next i
For i = 0 to 10 step 2
Imprime en pantalla los números 0, 2, 4, 6, 8 y
Print i
10
Next i
For i = 10 to 2 step -2
Print i Imprime en pantalla los números 10, 8, 6, 4 y 2
Next i

Hay que tener cuidado con no crear un bucle que no se acabe nunca. Por el ejemplo, el siguiente bucle For no se
terminaría nunca, pues si comenzamos en el número 10 y aumentamos una unidad cada vez que el bucle se repita, nunca
llegaremos al número 5.

For i = 10 to 5
Print i
Next i

3.2. Instrucción DO … LOOP


En las estructuras anteriores, conocíamos de antemano el número de veces que iba a repetirse el bucle; en algunas
ocasiones no podemos conocer cuantas veces debemos repetir una determinada instrucción (por ejemplo al pedir una
clave secreta; habrá que repetir la petición de la misma hasta que la clave introducida sea correcta). En estos casos
utilizaremos la instrucción Do … Loop. Se ejecutará un bloque de código mientras o hasta que la condición evaluada sea
verdadera. Dependerá de la forma en la que escribamos la instrucción. Por lo tanto la sintaxis de esta estructura puede
adoptar alguna de las siguientes formas:

Estructura Explicación

Do While condición El bloque de sentencias se ejecuta mientras


bloque de sentencias se cumpla la condición. Puede ocurrir que
Loop dicho bloque no se ejecute ninguna vez.

Do El bloque de sentencias se ejecuta mientras


bloque de sentencias se cumpla la condición. Dicho bloque se
ejecutará al menos una vez.
Loop While condición

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 8 de 31
Apuntes Visual Basic 29/01/20 21'57

Do Until condición El bloque de sentencias se ejecuta hasta que


bloque de sentencias se cumpla la condición. Puede ocurrir que
dicho bloque no se ejecute ninguna vez.
Loop

Do El bloque de sentencias se ejecuta hasta que


bloque de sentencias se cumpla la condición. Dicho bloque se
ejecutará al menos una vez.
Loop Until condición

En cualquier momento podemos abandonar la ejecución en mitad del bucle si dentro del bloque de sentencias
colocamos la instrucción Exit Do.
Veamos algunos ejemplos del uso de estas sentencias:
i = 2
Do While i < 8
Print i Imprime en pantalla los números 2, 4 y 6
i = 2 + i
Loop
i = 3
Do
Print i Imprime en pantalla los números 3, 6 y 12
i = 2 * i
Loop While i <= 12
i = 2
Do Until i >= 16
Print i Imprime en pantalla los números 2 y 4
i = i ^ 2
Loop
i = 10
Do
Print i Imprime en pantalla los números 10, 9, 8 y 7
i = i - 1
Loop Until i < 7

Hay que tener cuidado con no crear un bucle infinito, es decir, un bucle que no termine nunca, como por ejemplo los
siguientes:
i=2
Do While i > 0
Print i
i=i+2
Loop
Como i siempre es mayor que 0, el bucle no terminará nunca y el programa imprimirá en pantalla todos los números
pares, hasta el infinito.
También puede ocurrir lo contrario, es decir, que creemos un bucle que no se ejecute nunca:
i=2
Do While i < 0
Print i
i=i+2
Loop
Como i no es menor que 0, el bucle nunca se ejecutará.

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 9 de 31
Apuntes Visual Basic 29/01/20 21'57

Ejercicios:
1) Escribe el código de un programa que imprima en pantalla los números del 1 al 10 junto a su
cuadrado.
2) Un programa debe imprimir todos los números impares en orden descendente entre el 100 y el
10. ¿Cuál será su código?
3) Queremos calcular la suma de los números comprendidos entre 11 y 20, a. i. Escribe el
código correspondiente.
4) Escribe el código que imprime todos los números junto a su cubo, comenzando por el 1, hasta
que ese cubo sea superior a 5.000.

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 10 de 31
Apuntes Visual Basic 29/01/20 21'57

4. Controles básicos

3.1. Introducción al uso de controles


Los controles son objetos que disponen de sus propias propiedades y métodos, y cuya utilidad es la de facilitarnos el
desarrollo de nuestras aplicaciones. Lo único que tendremos que hacer es modificar sus propiedades (tamaño, color, etc..)
para incorporarlos en nuestros programas y asociarles el código necesario para que se comporten como esperamos al
ejecutar la aplicación.
Por ejemplo, el botón Aceptar que encontramos en multitud de programas es un control.
Antes de empezar a conocer los controles básicos veamos cuales son sus características generales:
· Propiedades: Todos los controles disponen de una serie de propiedades las cuales podemos cambiar al incluirlos en
nuestras aplicaciones. Ejemplos de propiedades son el color, el tipo de letra, el nombre, el texto, etc...
· Métodos: Son procedimientos asociados a los controles, es decir, rutinas ya establecidas que podemos
invocar desde nuestras aplicaciones para que se realice alguna operación sobre el control. Por
ejemplo el control ListView (la lista de archivos que aparece en el explorador de Windows) dispone
del método Order que te ordena los datos aparecidos en la lista.
· Eventos: Son acciones que pueden ser motivadas por el propio usuario o por el mismo sistema
operativo. Ejemplos pueden ser el movimiento del ratón o hacer click sobre un botón. No
necesitamos detectar cuando se ha producido un evento determinado, Windows lo detecta
automáticamente. Los eventos ya están definidos, son bastantes y cada control cuenta con los suyos
propios, aunque son muy parecidos. Lo único que tendremos que hacer es asociar el código necesario
al evento que necesitemos tratar.
La ventana donde aparecen los controles que Visual Basic carga por defecto nada más arrancar la
aplicación aparece en la figura adjunta. Moviendo el ratón por encima de cualquier control aparecerá
un ‘ToolTipText’ indicándonos el control de que se trata.
Cuando vayamos a utilizar un control en nuestro formulario, tendremos que darle un nombre.
Aunque podemos poner el nombre que deseemos a un control, el nombre que le demos deberá estar
relacionado con la función que realizará el control; además, es conveniente que indique el tipo de
control de que se trata. Existe una convención ampliamente aceptada que es la siguiente: se utilizan
siempre tres letras minúsculas que indican el tipo de control, seguidas por otras letras (la primera
mayúscula, a modo de separación) libremente escogidas por el usuario, que tienen que hacer
referencia al uso que se va a dar a ese control. La tabla siguiente muestra las abreviaturas de los
controles más usuales, junto con la nomenclatura inglesa de la que derivan:

cmb ComboBox
chk CheckBox
cmd CommandButton
frm Form
fra Frame
img Image
lbl Label
lin Line
mnu Menu
opt OptionButton
pic PictureBox
shp Shape
txt TextBox

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 11 de 31
Apuntes Visual Basic 29/01/20 21'57

tmr Timer

Así por ejemplo, el botón Aceptar que comentamos antes podría tener en el formulario el nombre cmdAceptar.

3.2. Controles básicos


Hay una serie de propiedades que son comunes a la mayoría de los controles. Son las siguientes:
Name: es el nombre con el que se conocerá el control cuando lo utilicemos en el código. En un mismo formulario no
puede haber 2 controles con el mismo nombre. Conviene poner un nombre que represente la función que tiene el control
en la aplicación para que el código quede más claro.
Alignment: alineación que tendrá el texto dentro del control: izquierda, centro o derecha.
Appearance: aspecto del control: 3D o plano.
BackColor: color del fondo del control.
BorderStyle: es el tipo de contorno para el control, el estilo del borde.
Caption: Es el texto que contendrá el control. Esta propiedad no existe en el control
TextBox.
Enabled: establece si un control está habilitado para su modificación por parte del
usuario o no. Si un control no está habilitado, es decir, tiene la propiedad Enabled
establecida en False, su color aparece un poco difuminado para indicar que no se puede utilizar ese control en ese
momento. En la figura anterior podemos ver un menú con una opción habilitada y dos deshabilitadas.
Font: tipo y tamaño de letra que usa el control.
ForeColor color de la letra del control.
Heigth: altura del control.
Left: distancia entre el borde izquierdo de un objeto y el borde izquierdo de su contenedor.
TabIndex: es el orden que ocupa el control cuando se va pasando de uno a otro mediante la tecla tabulador.
ToolTipText: Aquí indicaremos el texto que se mostrará
cuando el ratón se sitúe sobre el control. Este texto puede servir de
aclaración o ayuda sobre la función de dicho control. En la figura
adjunta podemos ver el ToolTipText que aparece al dejar el puntero del ratón
sobre el botón Abrir.
Top: distancia entre el borde superior de un objeto y el borde superior de
su contenedor.
Visible: Devuelve o establece un valor que determina si el control es
visible. Por ejemplo para ocultar un control podemos establecer el valor de
esta propiedad a False.
Width: anchura del control.

TextBox
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones. Las
propiedades de las que dispone el control (además de las generales de todos los controles) son las siguientes:
CausesValidation: Esta propiedad sirve para indicar si queremos que al abandonar el control se genere un evento

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 12 de 31
Apuntes Visual Basic 29/01/20 21'57

Validate. Desde el método correspondiente a dicho evento se deberá comprobar el valor introducido en el TextBox,
permitiéndose así o no la salida. Esta propiedad podrá tener el valor True o False.
MaxLength: número de caracteres máximo que puede contener el texto introducido en el TextBox. Cuando estamos
introduciendo texto y llegamos al máximo nos alerta con un pitido.
MultiLine: permite que el control tenga varias líneas de edición. Esta propiedad podrá tener el valor True o False.
Locked: Si está con valor True bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que
contenga. Nos puede servir para utilizar el control como salida de datos sin que el usuario pueda modificarlos por error.
Text: Es la propiedad equivalente a Caption en los demás controles. Aquí indicamos el texto que aparecerá en el
control. Podemos asignarle cualquier texto en el momento de diseñar el programa o durante la ejecución del mismo.
También podemos leer el texto que haya introducido el usuario para tratarlo durante la ejecución del programa.

Label
Su utilidad queda restringida a la visualización de datos en el programa, no permitiendo la introducción de datos por
parte del usuario. Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad
de los demás controles que tengamos en la aplicación o para indicarnos acciones que podemos realizar. Sus propiedades
son las comunes a los demás controles, aunque podemos mencionar aquí la propiedad
AutoSize: Hace que el tamaño de la etiqueta se ajuste automáticamente a la longitud del texto que contiene.
Para este control no se suelen utilizar los eventos ya que su contenido suele cambiar poco a lo largo de la ejecución de la
aplicación. A este control no se le puede dar el enfoque (al pulsar la tecla tabulador nunca nos podremos colocar sobre este
control).

Antes de seguir comentando otros controles, podemos ver en la figura siguiente algunos de ellos.

CommandButton
Este control es el típico botón que aparece en todas las aplicaciones y que al hacer click sobre él nos permite realizar
alguna operación concreta. Según el código que le asociemos podremos realizar las operaciones que queramos. El evento
por excelencia de este control es click. Sus propiedades son:
Cancel: si esta propiedad tiene el valor True quiere decir que se trata del botón de cancelación. Ello implica que al
pulsar la tecla Escape se ejecutará el código asociado al evento click de dicho botón, independientemente de donde se
encuentre el foco en ese momento.
Default: si esta propiedad tiene el valor True quiere decir que se trata del botón por defecto. Ello implica que al pulsar
la tecla Intro se ejecutará el código asociado al evento click de dicho botón, independientemente de donde se encuentre el

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 13 de 31
Apuntes Visual Basic 29/01/20 21'57

foco en ese momento.


Picture: Podemos escoger una imagen que aparecerá sobre el botón.
DisablePicture: es la imagen que se mostrará en el botón cuando éste se encuentre deshabilitado, es decir, cuando su
propiedad Enabled sea False.
DownPicture: imagen que mostrará el botón cuando esté pulsado.
NOTA: Para poder utilizar las tres propiedades anteriores es necesario que la propiedad Style esté en el valor
Graphical; en caso contrario el botón no podrá contener dibujos.
Style: Esta propiedad puede tomar dos valores: Standard o Graphical.
Value: dando a esta propiedad desde el código del programa el valor True, se generará el evento Click. Por lo tanto se
trata de una forma de activar el botón desde el código, igual que si se hubiese pulsado el ratón o el teclado.

CheckBox
El control CheckBox es una casilla de verificación en la que únicamente cabe la posibilidad de que se encuentre marcada
o desmarcada. Su principal propiedad es:
Value: el valor será Checked cuando la casilla de verificación se encuentre marcada y Unchecked cuando esté
desmarcada.

OptionButton
Este control nos permite elegir una opción entre varias de las que se nos plantean. Cada opción será un control
OptionButton diferente. Observa la figura del ejemplo de más abajo. De todas las opciones que se nos ofrece, sólo
podremos activar una. Si activamos cualquier otra opción, se desactivará automáticamente la última que teníamos
activada.

El marco que está alrededor de los 6 controles OptionButton se trata del control Frame , es opcional, aunque es
conveniente colocarlo siempre que hagamos uso de las opciones. No sólo por motivos de presentación sino porque de esta
manera podremos establecer grupos de controles OptionButton independientes en los que en cada grupo sólo pueda haber
una opción activada a la vez. También, al mover el marco se moverán los controles incluidos en él facilitándonos las
modificaciones.
Para que los controles OptionButton queden englobados dentro de un control Frame, primero tendremos que colocar el
control Frame en el formulario con el tamaño adecuado y después ir colocando los controles Optionbutton dentro del
Frame. Del control Frame la única propiedad que nos interesará es Caption, que es el texto que aparecerá en el
encabezado.
La propiedad más importante del control OptionButton es
Value: Es el valor que tendrá el control: True si se encuentra activado y False si no lo está.
No se suele asociar código a los eventos de este tipo de controles, sino únicamente conocer el valor que tienen: True o
False.
EJEMPLO

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 14 de 31
Apuntes Visual Basic 29/01/20 21'57

Para practicar vamos a realizar una aplicación que


consistirá en realizar con 2 números que introduzcamos,
una operación que seleccionemos y mostrar el resultado.
El formulario donde estarán todos los controles es el que
aparece en la figura adjunta.
La propiedad Caption de cada uno de los controles es la
que se muestra en el formulario.
Se ha modificado la propiedad Name de cada control
para que al utilizarlos desde el código sepamos cual es el
control con el que trabajamos:
· Los controles TextBox tienen los nombres: Num1, Num2
y Resul.
· Los controles Optionbutton tienen cada uno de ellos el mismo nombre que su caption
· Los controles CommandButton tienen los nombres: Calcular, Limpiar y Salir.
· A los controles Label y al Frame no hace falta cambiarles el nombre.
Lo que habrá que hacer ahora es asociar código a cada uno de los botones que es de donde se van a realizar las
operaciones:
· Para el botón Calcular, que es el que nos mostrará el resultado según la operación seleccionada, hemos utilizado la
instrucción If Then Else.
Private Sub Calcular_Click()
Dim r, a, b As Double
a = Num1.Text
b = Num2.Text
r = 0

If suma.Value = True Then


r = a + b
ElseIf resta.Value = True Then
r = a – b
ElseIf producto.Value = True Then
r = a * b
ElseIf division.Value = True Then
r = a / b
ElseIf potencia.Value = True Then
r = a ^ b
End If

Resul.Text = r
End Sub

· El botón Limpiar Datos nos va a servir para borrar los datos introducidos por el usuario y el resultado preparando. El
código que tendremos que introducir es el siguiente:
Private Sub Limpiar_Click()
Num1.Text = “”
Num2.Text = “”
Resul.Text = “”
End Sub

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 15 de 31
Apuntes Visual Basic 29/01/20 21'57

· El botón Salir únicamente contendrá la sentencia End.


Private Sub Salir_Click()
End
End Sub
Nota: el comando End hace que un programa finalice.

Image
Este control lo utilizaremos cuando necesitemos visualizar una imagen en nuestro programa. Para ello haremos uso de las
dos propiedades siguientes:
Picture: determina la imagen que se debe mostrar en el control. Esta propiedad contendrá la dirección del archivo
donde está almacenada la imagen. Si la imagen ha de cargarse en tiempo de ejecución, habrá que hacer uso de la función
LoadPicture de la siguiente forma:
Image1.Picture = LoadPicture("c:\mis documentos\dibujo.bmp")
Stretch: si esta propiedad está establecida a False, el control se redimensionará al cargar la imagen, adaptándose al
tamaño de esta. Si el valor es True, será la imagen la que se adapte al tamaño del control.

PictureBox
El control cuadro de imagen es como un control Image ampliado; además de poder visualizar imágenes nos permite
dibujar puntos, líneas, rectángulos, círculos, etc... Dentro de él pueden colocarse incluso otro tipo de controles. Las
propiedades más importantes son:
Picture: determina la imagen que se debe mostrar en el control.
AutoSize: automatiza el tamaño del control a la imagen, es decir, aquel se ajustará al tamaño de la imagen que ha de
contener.
FillColor: Color que se utilizará como relleno cuando se dibujen formas en el formulario utilizando los métodos Line
o Circle.
FillStyle: Tipo de relleno que se dará a las formas que se dibujen en el formulario utilizando los métodos Line o Circle.
Existen una serie de métodos que nos van a permitir realizar determinados dibujos dentro de un PictureBox. Son los
siguientes:

Pset (x, y), color Dibuja un punto en la posición dada por las coordenadas X e Y. El color vendrá dado
por el valor de la variable color.
Line (x, y) - (z, w), color Dibuja una línea entre los puntos (X, Y) y (Z, W) con el color especificado.
Line (x, y) - (z, w), color, B Dibuja un rectángulo cuyas esquinas superior izquierda e inferior derecha serán
respectivamente los puntos de coordenadas (X, Y) y (Z, W). El color del borde está
dado por el valor de color.
Circle (x, y), radio, color Dibuja un círculo con centro el punto (X, Y).
Cls Borra el contenido del PictureBox.

Todos los métodos anteriores funcionan igualmente sobre el formulario. Si queremos que los dibujos se realicen sobre
un PictureBox tendremos que anteponer el nombre de este antes de todos los métodos, separados por un punto.
En aquellos en los que sea posible, el tipo de relleno y el color del mismo estarán determinados por los atributos
establecidos en FillStyle y en FillColor. El estilo de las líneas (continuas, discontinuas) y su grosor se establecen mediante

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 16 de 31
Apuntes Visual Basic 29/01/20 21'57

las propiedades DrawWidth y DrawStyle.


El siguiente ejemplo hace uso de uno de estos métodos.
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = 1 Then PSet (X, Y), vbBlue
End Sub
El ejemplo anterior irá pintando de color azul aquellos puntos por los que vaya pasando el ratón, siempre que tengamos
pulsado el botón primario del mismo. Esto es así porque la condición If hace que el método Pset sólo se ejecute si la
variable Button (variable que determina que botón del ratón está pulsado en cada momento) vale 1. El valor de Button
será 0 si no se encuentra pulsado ningún botón, 1 si el botón pulsado es el primario y 2 si es el secundario.

Line y Shape
Estos dos controles son de los más simples que podemos encontrar en Visual Basic. Se utilizan para dibujar líneas el
primero de ellos y para dibujar distintas figuras o polígonos el segundo. Son controles estáticos, pues no pueden responder
a ningún tipo de evento. Las propiedades características a ambos controles son:
BorderColor: color de la línea o color del borde que delimita la figura.
BorderStyle: estilo de la línea o del borde: continuo, discontinuo, etc...
BorderWidth: anchura de la línea o del borde de la figura.
Además de estas, hay otras propiedades características de cada control. Las propias del control Line son:
X1, X2, Y1, Y2: Estas cuatro coordenadas determinan los puntos origen y final de la línea. Recordar que en
informática el origen de coordenadas se corresponde con la esquina superior izquierda.
El control Shape tiene estas propiedades características:
FillColor: color de relleno de la figura.
FillStyle: el valor de esta propiedad determinará el tipo de relleno que tendrá la figura. Este puede ser sólido,
transparente, con líneas horizontales, verticales, ...
Conviene recordar ahora que habíamos dicho que existían dos propiedades comunes a todos los controles que eran
BackColor y BackStyle, y que tenían una función semejante a la que estamos describiendo para FillColor y FillStyle. Si
en un Shape tenemos activadas las dos opciones, el color que prevalecerá como color de relleno será el que esté indicado
en la propiedad FillColor.
Shape: propiedad cuyo valor sirve para especificar que figura se dibujará. Los valores posibles son 0 (rectángulo), 1
(cuadrado), 2 (óvalo), 3 (círculo), 4 (rectángulo redondeado) y 5 (cuadrado redondeado).

ComboBox
Este control es una lista desplegable donde el usuario puede seleccionar una de las posibles opciones que aparecen
cuando desplegamos la persiana.
El control ComboBox posee dos listas, una visible, que es la que se despliega, y otra no visible. La información de la lista
visible se guarda en la propiedad List. El primer elemento de la lista está almacenado en la propiedad List(0), el segundo
elemento en List(1) y así sucesivamente. El primer elemento de la lista tiene el subíndice 0. La propiedad ListCount
contiene el número de elementos que existen en la lista desplegable. El último elemento de la lista tiene el subíndice
ListCount – 1.
Como dijimos este control posee una lista adicional no visible. Los elementos de esta lista no visible se almacenan en la
propiedad ItemData; ItemData(0) para el primero, ItemData(1) el segundo, etc. Esta propiedad solo admite números

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 17 de 31
Apuntes Visual Basic 29/01/20 21'57

enteros.
Cuando hacemos clic sobre una de las opciones de la lista, se muestra en la ventana de control. La propiedad Text
almacena el contenido de esa ventana; es decir, Text guarda la misma información que la propiedad List(n), donde n es el
subíndice del elemento seleccionado. La propiedad ListIndex contiene el subíndice del elemento seleccionado, o sea n.
Cuando la ventana superior de la persiana no contiene nada, la propiedad Text está vacia y ListIndex alamacena –1.
Si necesitamos que además la aplicación haga algo al seleccionar una opción de la lista, podemos programar el evento
Click del control.
El método AddItem inserta un nuevo elemento en la lista. La propiedad NewIndex contiene el índice del último elemento
que hemos insertado.
Como propiedades características de este elemento de control podemos destacar:
List: Podemos añadir los Items de la lista no en el momento de ejecución del programa, sino en el momento de su
creación. Para ello accedemos a esta propiedad y vamos escribiendo los distintos elementos que queremos que salgan al
desplegar la lista. Una vez escrito el primero de ellos, para seguir añadiendo elementos debemos pulsar Ctrl+Intro.
Sorted: permite especificar si los elementos de la lista aparecerán ordenados alfabéticamente.
Style: existen tres posibles estilos para el ComboBox:
0 (Dropdown Combo) Este estilo hace que el texto del ComboBox pueda seleccionarse de la lista o bien escribirse
directamente sobre el mismo.
1 (Simple Combo) No aparece la flecha que nos permite desplegar la lista, por lo que no podremos escoger los
elementos de la misma. Simplemente se nos permitirá escribir directamente sobre el control
como si se tratase de un control TextBox.
2 (Dropdown List) No es posible escribir directamente sobre el control; únicamente pueden escogerse los
elementos de su lista.

Timer
Este control funciona de forma distinta a los demás pues no aparece en el formulario durante la ejecución del
programa; sólo lo veremos en el proceso de diseño. Se utilizará cuando queramos que una o varias sentencias se ejecuten
de forma repetida a lo largo del desarrollo del programa. La propiedad característica de este control es Interval. Esta
contendrá el valor, en milisegundos, que especifica cada cuanto tiempo deben ejecutarse las sentencias incluidas en el
código asociado al control. Para detener la ejecución del código asociado al control bastará con establecer el valor de la
propiedad Interval a 0. Por ejemplo, si queremos que un programa emita un pitido cada segundo deberemos escribir el
siguiente código
Private Sub tmrTemporizador_Timer()
Beep
End Sub

además de tener la propiedad Interval del temporizador establecida en 1000.

HScrollBar y VscrollBar
Son las típicas barras de desplazamiento horizontal y vertical que aparecen en multitud de programas. Las propiedades a
destacar de estas barras son:
Value: valor que indica la posición en la que se encuentra el indicador de desplazamiento de la barra. Este valor estará
comprendido entre los valores Max y Min.

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 18 de 31
Apuntes Visual Basic 29/01/20 21'57

Max: valor máximo que podrá tomar la propiedad Value.


Min: valor mínimo que podrá tomar la propiedad Value.
SmallChange: esta propiedad indica cuantas unidades cambiará Value al hacer click en una de las flechas de los
extremos de la barra de desplazamiento.
LargeChange: número de unidades que cambiará el valor de Value al hacer click dentro de la barra de desplazamiento.

3.3. Eventos
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratón,… A estos
eventos se les puede asociar código para que se ejecute al producir el evento. Los eventos más habituales son:
MouseMove: al mover el ratón por encima del control.
MouseDown: al pulsar cualquier botón del ratón.
MouseUp: al soltar cualquier botón del ratón.
Los tres eventos anteriores poseen los cuatro parámetros siguientes: Button, Shift, X e Y. Cada uno de ellos toma los
siguientes valores:
Button: toma el valor 0 si no se aprieta ningún botón del ratón, el valor 1 si el botón que se
aprieta es el primario, el valor 2 si el botón pulsado es el secundario y 4 si se pulsa el
botón central del ratón.
Shift: nos indica si al pulsar el ratón teníamos pulsada alguna de las teclas Shift, Ctrl, Alt o
AltGr. Sus posibles valores son los siguientes:
0 si no está pulsada ninguna de estas teclas,
1 está pulsada la tecla Shift,
2 está pulsada la tecla Ctrl,
4 pulsada la tecla Alt,
6 pulsada la tecla AltGr.
X e Y: guardan el valor de las coordenadas X e Y en las que se encontraba el puntero del
ratón en el momento de producirse el evento.
Veamos un ejemplo del uso de uno de estos controles:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Print "Has pulsado el botón primario en la posición " & X & ", " & Y
ElseIf Button = 2 Then
Print "Has pulsado el botón secundario en la posición " & X & ", "& Y
Else
Print "Has pulsado el botón central en la posición " & X & ", " & Y
End If
End Sub
Si pulsamos uno de los botones del ratón, el programa imprimirá en pantalla cual de ellos era y la posición en la que lo
hemos hecho.
Change: al cambiar el contenido del control, por ejemplo al escribir algo en un TextBox.
Click: al hacer click con el botón izquierdo del ratón sobre el control.
DblClick: al hacer doble click con el con el botón izquierdo del ratón sobre el control.
KeyDown: al presionar una tecla en el teclado. Este evento tiene dos parámetros: KeyCode, que se corresponde con un

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 19 de 31
Apuntes Visual Basic 29/01/20 21'57

código numérico que dependerá de la tecla pulsada, y Shift , que valdrá 1 o 0 dependiendo respectivamente de si se
encuentra pulsada o no la tecla Shift.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Print KeyCode, Shift
End Sub

KeyUp: semejante al anterior, salvo que este evento se genera al soltar la tecla que teníamos presionada.
KeyPress: al pulsar una tecla del teclado y mantenerla pulsada. Es un evento parecido a KeyDown, aunque dispone de
un solo parámetro, KeyAscii. Este parámetro es particular de cada carácter, y es un número entre 0 y 255 que nos informa
del carácter pulsado. (Aunque parezca igual que el parámetro KeyCode del evento KeyDown, no son lo mismo. KeyAscii
diferencia entre pulsar “a” o pulsar “A”, mientras que KeyCode no). El siguiente ejemplo imprime el carácter pulsado.
Private Sub Form_KeyPress(KeyAscii As Integer)
Print Chr(KeyAscii)
End Sub

Gotfocus: este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa el control en tiempo de
ejecución para introducir datos en él o realizar alguna operación.
Lostfocus: Es el contrario del anterior evento, se activa cuando el control pierde el enfoque, es decir, se pasa a otro
control para seguir introduciendo datos.

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 20 de 31
Apuntes Visual Basic 29/01/20 21'57

5. Formularios
Los formularios son tratados como controles con sus propiedades, eventos y métodos. Aunque digamos que se trata de
un control especial que utilizamos para contener los controles más usuales con los que construiremos nuestras
aplicaciones: TextBox, Label, CommandButton, etc... Vamos a ver las propiedades y eventos más importantes de
los formularios, como trabajar con múltiples formularios y como se establece la comunicación entre ellos.
Mientras que los formularios con los atributos por defecto son ventanas de las que se utilizan en todas las aplicaciones
Windows, cuando se les inhabilita los botones de minimizar y maximizar junto con la característica de ser
redimensionables tenemos una ventana a la que se denomina cuadro de diálogo. Estos se caracterizan por tener unas
dimensiones fijas (p. e., no se puede redimensionar el cuadro de diálogo “Imprimir” que se muestra al ejecutar el comando
del mismo nombre en cualquier programa Windows) y un atributo adicional, el de ser modales o no modales. Un cuadro
de diálogo es modal cuando se muestra sobre todas las demás ventanas de la aplicación y no se puede realizar ninguna otra
operación en tanto no se cierre dicho cuadro de diálogo. Será no modal en caso contrario.

5.1. Propiedades
Las propiedades más comunes de los formularios y que son similares al resto de los controles son:
Name: Nombre del formulario, necesario para llamar al formulario desde el código.
Caption: Texto que aparece en el título del formulario
Backcolor: Color de fondo del formulario.
Forecolor: Color del texto del formulario.
FillColor: Color que se utilizará como relleno cuando se dibujen formas en el formulario utilizando los métodos Line
o Circle que vimos anteriormente.
FillStyle: Tipo de relleno que se dará a las formas que se dibujen en el formulario utilizando los métodos Line o Circle.
Otras propiedades que son propias de los formularios son:
WindowState: Nos permite indicar el modo en el que aparecerá el formulario cuando sea llamado. Tiene tres posibles
valores:
0 – Normal 1 - Minimizado. 2 - Maximizado.
MinButton y MaxButton: Son dos propiedades que admiten únicamente los valores True o False. Permiten que
queden habilitados los botones minimizar y maximizar, respectivamente de un formulario. Nos sirven para controlar que
el usuario no pueda cambiar el tamaño en que presentemos un formulario en pantalla. Si sólo desactivamos una de las
propiedades, el botón correspondiente aparecerá desactivado, pero si desactivamos las dos propiedades, no aparecerá
ninguno de los 2 botones, únicamente lo hará el botón con la "x" de cerrar.
ShowInTaskbar: Mediante esta propiedad podremos controlar que determinado formulario aparezca o no en la barra
de tareas de Windows. En una aplicación con múltiples formularios, si para cada uno de los que aparezca en pantalla, nos
aparece también en la barra de tareas, al final la barra estará llena de aplicaciones. Podemos hacer que determinados
formularios no aparezcan en ella colocando esta propiedad a False.
Icon: Nos permite modificar el icono que aparece a la izquierda de la barra del título de cualquier formulario, que es
donde aparece el menú de control, para personalizarlo en nuestra aplicación
ControlBox: Controla la aparición del menú de control. Esta propiedad por defecto está activada, aunque si la
ponemos a False, no sólo hacemos desaparecer el icono que simboliza al menú de control, sino que desaparecen también
los botones de minimizar, maximizar y cerrar. Únicamente aparece la barra de titulo con el caption.
Si además de colocar ControlBox a False, colocamos MinButton y MaxButton a False y dejamos vacía la propiedad
Caption, es decir sin nada en el título, nos aparecerá un formulario sin barra de titulo, es decir, únicamente un rectángulo
gris que sí podremos cambiar de tamaño apuntando sobre el borde.
BorderStyle: Esta propiedad es la que más opciones tiene y la que más posibilidades ofrece para cambiar el aspecto de

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 21 de 31
Apuntes Visual Basic 29/01/20 21'57

nuestros formularios. El cambiar el valor de esta propiedad afecta también a las propiedades MinButton, MaxButton y
ShowInTaskbar que cambian automáticamente según la opción que hayamos seleccionado. En la siguiente tabla aparece
una explicación de cada una de sus opciones y de que valor adoptan otras propiedades del formulario:

Opciones
de Utilidad MinButton MaxButton ShowInTaskbar Muestra
BorderStyle

No aparecen bordes ni barra de titulo. No


podemos modificar su tamaño de ninguna forma.
0- None False False False
Sirve para pantallas de presentación al principio
de nuestra aplicación

No se puede cambiar su tamaño.Ni siquiera se


puede maximizar haciendo doble click sobre la
1 - Fixed
barra del título, algo que sí se puede hacer False False True
Single
desactivando los botones MinButton y MaxButton
en un formulario normal

Formulario por defecto de VB.Contiene todos los


2 - Sizable
botones de la barra del título, se puede cambiar su
(aparece True True True
tamaño actuando sobre el borde y aparece en la
por defecto)
barra de tareas.

3 - Fixed No se puede cambiar su tamaño y no aparece en


False False False
Dialog la barra de tareas

Aparece con la barra de titulo más pequeña, es el


4 - Fixed que utiliza VB para mostrar la caja de
False False False
ToolWindow herramientas. No aparece el icono del menú de
control ni aparece en la barra de tareas.

5 - Sizable Igual que el anterior pero sí permite modificar su


False False False
ToolWindow tamaño actuando sobre el borde.

5.2. Utilización de multiples formularios


Para utilizar varios formularios en nuestra aplicación tendremos que añadir cada uno de ellos mediante la opción de menú
Insert / Form o pulsando sobre el botón .

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 22 de 31
Apuntes Visual Basic 29/01/20 21'57

Método Show
Para llamar a un formulario desde el código utilizaremos el método Show. Si el formulario 2 tiene en la propiedad Name
form2, para llamarlo desde otro formulario pondremos: Form2.Show
Si no ponemos ningún argumento se asume que el formulario aparece en modo no modal, es decir, se permitirá que se
active cualquier otro formulario sin cerrar el formulario 2. La otra modalidad que existe es modal, lo que significa que no
se permite el enfoque hacia ningún otro formulario hasta que no se cierre el actual. Este último modo puede servir para
cuadros de diálogo que soliciten ciertos parámetros para que la aplicación siga funcionando: una contraseña.
Los argumentos del método Show son:
0 vbModeless No modal
1 vbModal Modal
Ejemplo: Form2.Show vbModal

Sentencia Load
La sentencia Load seguida del nombre de un formulario provoca que se cargue el formulario en memoria pero sin
visualizarse, ya que la propiedad Visible se coloca a False.
Ejemplo: Load Form2
Realmente el método Show realiza la carga del formulario en memoria, si no estaba cargado antes, y coloca la propiedad
Visible del formulario a True. Durante este proceso se provoca la activación de los eventos Load y Activate del
formulario en ese orden. En dichos eventos se puede colocar el código necesario que haga que el formulario se inicie
siempre con los valores que queramos.
Si el formulario ya estaba cargado en memoria, mediante una sentencia Load o porque se haya ocultado con el método
Hide, al llamarlo con el método Show, únicamente se realizará la modificación de la propiedad Visible a True, y no se
volverá a efectuar el proceso de carga del formulario a memoria. Por tanto el formulario aparecerá con los mismos datos
que tenía cuando se ocultó. Ahora el único evento que se activará es el Activate que se activa cada vez que un formulario
recibe el enfoque o pasa a ser el formulario activo.

Sentencia Unload
Nos permite descargar un formulario de la memoria. Se introduce junto al nombre del formulario que vayamos a
descargar: Unload Form2
Si nos encontramos dentro del mismo formulario para descargarlo no hace falta colocar el nombre sino únicamente:
Unload me
En una aplicación con varios formularios debemos usar esta sentencia para los métodos que terminamos de utilizar, de
esta forma liberaremos espacio en memoria para que los otros formularios puedan aprovecharla mejor. La sentencia
unload provoca la activación de los eventos:
· Deactivate: Al contrario que el evento Activate, éste se activa cada vez que un formulario pierde el enfoque. También
se activa este evento al utilizar el método Hide.
· Unload: Este evento recibe el parámetro Cancel, y modificando su valor podemos hacer que se suspenda (cancele) el
proceso de descarga de un formulario. Mediante 2 líneas de código podemos hacer una pregunta al usuario cada vez que
se cierra un formulario para que nos confirme la operación:

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 23 de 31
Apuntes Visual Basic 29/01/20 21'57

Este código provocará que cada vez que se cierre el formulario de


cualquier forma, (no sólo mediante la sentencia Unload sino también
haciendo click sobre la "x", el menú de control o con ALT + F4)
aparezca un mensaje preguntándonos si realmente queremos salir:

· Query_Unload: Este evento se produce realmente antes que el evento Unload.


En este evento además de recoger el parámetro Cancel, también nos proporciona el parámetro UnloadMode que según el
valor que tenga podremos saber desde donde se produce la posible descarga del formulario. Los valores que puede tener
son los siguientes:
0 - vbFormControlMenu: Significa que el cierre del formulario se ha producido:
· Pulsando sobre la "x"
· Mediante la opción cerrar del Menú de Control.
· Pulsando ALT + F4.
· Cerrando el formulario desde la Barra de Tareas.

1 - vbFormCode: Indica que se ha cerrado el formulario utilizando la sentencia Unload.


2 - vbAppWindows: Se cierra el formulario porque se apaga el sistema desde Inicio / Apagar Sistema.
3 - vbAppTaskManager: Desde el administrador de tareas de windows (CTRL + ALT + DEL) se cierra la
aplicación que contiene el formulario
4 - vbFormMDIForm: Se produce cuando se cierra un formulario hijo porque se está cerrando el formulario MDI
que lo contiene.
Mediante unas líneas de código vamos a probar las posibilidades de este evento. Según desde donde se cierre el
formulario del que consta la aplicación aparecerá un mensaje distinto pidiéndonos confirmación en el proceso de
descarga.
Nota: Para el correcto funcionamiento de este ejemplo se debe compilar la aplicación mediante File / Make EXE
File... y ejecutar la aplicación desde fuera del entorno de trabajo de VB.Esto es así para que se pueda cerrar la
aplicación apagando el sistema y desde el administardor de tareas.
El código asociado al evento Query_Unload es el siguiente:

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 24 de 31
Apuntes Visual Basic 29/01/20 21'57

5.3. Comunicacion entre formularios


Desde un formulario se puede tener acceso a los controles y propiedades de otro formulario.
En lugar de realizar el paso de parámetros cuando se llama a otro formulario que queremos que aparezca con unos
determinados valores iniciales, lo que se hace es acceder a los controles del otro formulario y después mostrarlo mediante
el método Show.
Para acceder a los controles de otro formulario se sigue la siguiente sintaxis:
Formulario!Control.Propiedad = valor
Se debe colocar una admiración "!" entre el formulario y el control y un punto entre el control y la propiedad.
Ejemplo: Form2!Label1.Caption = "Número de Clientes"
Al acceder a las propiedades de otro formulario automáticamente se carga éste en memoria, si no lo estaba ya antes. Una
vez que hayamos modificado sus propiedades los visualizaremos con el método Show.
A V I S O : No se puede acceder a las variables declaradas en otro formulario, de modo que si queremos trabajar con
variables generales, las cuales sean accesibles desde cualquier formulario de la aplicación, tendremos que declararlas
como Públicas desde un módulo de código.
Para insertar un módulo en nuestro proyecto tendremos que ejecutar el menú ”Proyecto/Agregar Módulo” o pulsar

sobre el botón de la barra de herramientas. Nos aparecerá una ventana en la que únicamente podremos colocar las
variables y procedimientos o funciones que queramos que sean públicas para toda la aplicación.

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 25 de 31
Apuntes Visual Basic 29/01/20 21'57

Ahora la ventana de proyecto tiene una línea más con un icono distinto
indicando que se trata de un módulo de código:

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 26 de 31
Apuntes Visual Basic 29/01/20 21'57

6. Contantes y funciones de Visual Basic

6.1. Constantes
A continuación se detalla una lista con las constantes más usadas definidas en Visual Basic y su significado:
vbBlack color negro
vbBlue color azul
vbCyan color azul celeste
vbGreen color verde
vbMagenta color violeta
vbRed color rojo
vbWhite color blanco
vbYellow color amarillo

vbYes Si
vbNo No

vbCrLf Introduce un retorno de carro y un avance de línea. De esta forma podemos hacer que
se comience a escribir en una nueva línea.

Las siguientes constantes se utilizan en los MsgBox para indicar la señal y los botones que se mostrarán:
vbCritical señal de error
vbExclamation señal de advertencia
vbInformation señal de información
vbQuestion señal de interrogación
vbOkOnly botón de aceptar
vbOkCancel botones aceptar y cancelar
vbYesNo botones Sí y No
vbYesNoCancel botones Sí, No y Cancelar
vbAbortRetryIgnore botones Anular, Reintentar y Omitir

Para determinar que carácter se ha pulsado en el teclado podemos comprobar su código ASCII. Visual Basic nos
facilita esta labor mediante estas constantes:
vbKeyUp flecha arriba
vbKeyDown flecha abajo
vbKeyLeft flecha izquierda
vbKeyRight flecha derecha
vbKeyReturn tecla Intro
vbKeyEscape tecla Escape
vbKeySpace tecla espacio
vbLeftButton botón izquierdo del ratón
vbRightButton botón derecho del ratón
Evidentemente hay muchas más, aunque no las expondremos aquí. Los cuatro primeros casos propuestos nos servirán
para, por ejemplo, mover un objeto por la pantalla con la ayuda de las teclas de desplazamiento, como sucede en un juego.

Funciones
Una función nos servirá para realizar un cálculo u obtener un determinado valor. Entre las múltiples existentes
podemos destacar las siguientes, agrupadas en categorías.

6.2. Funciones matemáticas


http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 27 de 31
Apuntes Visual Basic 29/01/20 21'57

Abs(número) Devuelve el valor absoluto de número


Sgn(número) Indica el signo de número
Int(número) Devuelve la parte entera de número
Sqr(número) Halla la raíz cuadrada de número
Round(número, numdecimales) Redondea número con las posiciones decimales indicadas
Sin(ángulo) Seno de ángulo
Cos(ángulo) Coseno de ángulo
Tan(ángulo) Tangente de ángulo

6.3. Funciones aleatorias


Rnd Devuelve un número aleatorio entre 0 y 1
Randomize Inicializa el generador aleatorio

6.4. Funciones de cadenas de caractéres


Left(cadena, num) Extrae num caracteres de cadena contando de izquierda a derecha
Right(cadena, num) Extrae num caracteres de cadena contando de derecha a izquierda
Mid(cadena, pos, num) Extrae num caracteres de cadena a partir de la posición pos
Len(cadena) Devuelve la longitud de la cadena
LCase(cadena) Convierte la cadena a minúsculas
UCase(cadena) Convierte la cadena a mayúsculas

6.5. Funciones de fechas


Date Devuelve la fecha actual
Time Devuelve la hora actual
Now Devuelve la fecha y hora actuales
Day(Date) Devuelve el día del mes
WeekDay(Date) Devuelve el día de la semana en que nos encontramos, como número y teniendo en
cuenta que el 1 es el Domingo, 2 lunes, ...
Month(Date) Devuelve el mes en que estamos, como número
Year(Date) Devuelve el año
MonthName(num) Devuelve el nombre del mes que representa num.
WeekdayName(num) Devuelve el día de la semana que representa num. Recordar que el 1 es el domingo, 2
lunes, ...
Hour(Time) Devuelve la hora
Minute(Time) Devuelve los minutos
Second(Time) Devuelve los segundos

6.6. Funciones de comprobación


IsNumeric(dato) Comprueba si un dato es numérico
IsDate(dato) Comprueba si un dato es de tipo fecha u hora

6.7. Otras funciones


Asc(carácter) Devuelve el código ASCII del carácter indicado
Chr(códigoASCII) Devuelve el carácter correspondiente al código ASCII indicado
Beep Emite un pitido
Print Imprime en pantalla el resultado de la expresión o valor que aparece a su derecha. Por
defecto, la impresión tendrá lugar en el formulario. Si deseamos imprimir por ejemplo
dentro de un PictureBox, tendremos que anteponer el nombre de éste antes de la

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 28 de 31
Apuntes Visual Basic 29/01/20 21'57

instrucción Print, separados por un punto.


Si queremos escribir varios datos en una misma línea, podemos utilizar los siguientes
separadores entre unos y otros:

Separador Resultado
, (coma) los datos quedan separados por un tabulador

; (punto y coma) los datos quedan separados por un único espacio en blanco

& (andpersand) los datos se escriben unos junto a otros, sin separación
Ejemplos Resultado en pantalla
Print 22, “hola” 22 hola
Print 22; “hola” 22 hola
Print 22 & “hola” 22hola

6.8. Las funciones InputBox y MsgBox


La función InputBox se utilizará cuando queramos que el usuario introduzca algún dato. Esta función presenta la
siguiente sintaxis:
variable = InputBox (“mensaje”, [“titulo”], [“valor por defecto”])
donde variable es una variable de tipo String en la que se almacenará el dato introducido por el usuario, y mensaje es el
mensaje que se mostrará en la ventana de entrada de datos. Los valores que aparecen entre corchetes es porque su
inclusión en la función InputBox es opcional, por lo que pueden omitirse. Título representa el texto que aparecerá como
cabecera en la ventana, y Valor por defecto es el valor que tomará la variable si el usuario no introduce ningún valor en la
casilla correspondiente.
El siguiente ejemplo
nombre = InputBox (“escriba su nombre”,”AVISO”)
mostraría la ventana de entrada de datos de la figura, y almacenaría el valor
introducido por el usuario en la variable nombre (que debe ser de tipo String).

La función MsgBox permite mostrar un mensaje. La sintaxis de esta función es como en el siguiente ejemplo:
MsgBox “No se puede calcular el factorial de un número negativo”, _ vbCritical +
vbOKOnly, “Error”
El resultado del ejemplo anterior sería una ventana como la que
aparece a continuación. Como puede verse la función MsgBox
lleva tres argumentos separados por comas; el primero de ellos
es el cuerpo del mensaje, en el segundo se hace referencia tanto
al dibujo que se mostrará como al botón o botones que
aparecerán y en el último se indica el título de la ventana en la
que aparece el mensaje.
La función MsgBox nos permite conocer que botón ha pulsado el usuario como respuesta al mensaje. Por ejemplo, una

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 29 de 31
Apuntes Visual Basic 29/01/20 21'57

función MsgBox en la que aparecieran un botón SI junto a un botón NO (vbYesNo), tendría el valor vbYes si pulsamos el
botón SI o el valor vbNo si el botón pulsado es NO. Veámoslo más claramente en el siguiente ejemplo

If MsgBox ("¿Realmente desea salir?", vbYesNo + vbExclamation, _ "ATENCION") =


vbYes Then End

Esta línea de código hace que aparezca una ventana preguntándonos si deseamos salir del programa, en la que aparecerán
los botones <Si> o <No>. Si pulsamos el botón <Si>, el programa finalizará (comando End).

Nota importante: conviene resaltar aquí que cuando una sentencia de Visual Basic es demasiado larga y
no cabe en una línea, antes de comenzar a escribir la continuación de dicha sentencia en la línea inferior es
necesario escribir el carácter de subrayado ( _ ) al finalizar la línea anterior como puede observarse en el
último ejemplo.

Las distintas combinaciones de dibujos y botones que pueden mostrarse en un MsgBox se encuentran en el apartado 6.1. ,
aunque los repetiremos aquí:
vbCritical señal de error
vbExclamation señal de advertencia
vbInformation señal de información
vbQuestion señal de interrogación
vbOkOnly botón de aceptar
vbOkCancel botones aceptar y cancelar
vbYesNo botones Sí y No
vbYesNoCancel botones Sí, No y Cancelar
vbAbortRetryIgnore botones Anular, Reintentar y Omitir

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 30 de 31
Apuntes Visual Basic 29/01/20 21'57

7. El editor de menús
Cuando queramos añadir a nuestros programas una barra de menús, la tarea será sencilla utilizando el editor de menús.
Para activar el editor de menús debemos ir al menú Herramientas de Visual Basic y allí escoger la opción Editor de

menús…, o bien hacer clic sobre el botón correspondiente de la barra de herramientas Estandar. Aparecerá una
ventana como la siguiente:

Caption: será el texto que aparecerá en el menú. Si se desea que alguna de las letras del menú sirva para acceder de
forma rápida a dicho menú, se debe situar el carácter & antes de esa letra. Como se puede observar en cualquier programa
Windows esto hará que ese carácter del menú aparezca subrayado. (Este mismo carácter & puede utilizarse de modo
análogo en el caption de un CommandButton. Si pulsamos la combinación de teclas ‘ALT+ el carácter escogido’ será
como hacer click con el ratón en dicho botón) Para incluir un separador entre distintas opciones del menú, esta propiedad
debe ser – (un guión).
Name: es el nombre con el que nos referiremos al menú desde el código.
Shortcut: asocia una combinación de teclas para acceder al menú de forma abreviada.
Checked: determina si aparecerá o no una marca de verificación a la izquierda de la opción del menú.
Enabled: si esta casilla no está marcada, dicho menú no será accesible apareciendo difuminado.
Visible: determina si dicho elemento del menú podrá verse o no.
Estas tres últimas propiedades pueden modificarse en tiempo de ejecución estableciendo su valor a True o a False.
Cuando queramos que un menú esté dentro de otro, es decir, sea un submenú, no tendremos más que tabularlo en el
editor de menús mediante el botón del mismo.
El único evento disponible para un menú es Click , que corresponde a la selección de la opción, independientemente de
que ésta se realice con el ratón o con el teclado.
Para crear un menú emergente o menú contextual no tememos más que crearlo como si se tratase de un menú normal y
hacerlo invisible. Para abrirlo haremos uso del método PopupMenu, como se muestra en el siguiente ejemplo.
If Button = vbRightButton Then PopupMenu nombremenú

http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 31 de 31

También podría gustarte