Vous êtes sur la page 1sur 61

LABORATORIO II - AO 2008

I N D I C E D E C O N T E N I D O S
C C A A P P I I T T U U L L O O V V

V. FUNDAMENTOS DEL LENGUAJ E DE PROGRAMACI N...... 135
V.1. La programacin ............................................................ 135
V.1.i. Sentencias en Visual Basic............................................... 135
V.2. Constantes y variables .................................................... 136
V.2.i. Constantes...................................................................... 136
V.2.i.1. Definicin de constantes.......................................... 137
V.2.ii. Variables................................................................ 137
V.2.ii.1. Declaracin de variables......................................... 137
V.2.ii.2. Tipos de datos de las variables ................................ 138
V.2.ii.3. Tipos de Cadenas (String)........................................ 138
V.2.ii.4. Declaracin explcita.............................................. 139
V.2.ii.5. Declaracin implcita.............................................. 139
V.2.iii. Option Explicit........................................................ 140
V.3. Convertir tipos de datos .................................................. 140
V.4. Alcance de las Variables.................................................. 141
V.4.i. Variables utilizadas en un procedimiento......................... 141
V.4.ii. Variables utilizadas en un mdulo............................ 142
V.4.iii. Variables utilizadas por todos los mdulos ............... 145
V.5. Expresiones y Operadores............................................... 145
V.5.i. Aritmticos..................................................................... 145
V.5.i.1. Precedencia de operadores..................................... 146
V.5.ii. Lgicos .................................................................. 147
V.5.iii. Relacionales........................................................... 147
V.5.iv. Otros operadores de comparacin: Like e I s............. 148
V.5.v. Operador de Asignacin .......................................... 148
V.6. Estructuras de Control .................................................... 148
V.6.i. Estructuras de decisin................................................... 149
V.6.i.1. Sentencia I f...Then...Else......................................... 149
V.6.i.2. Estructura Select...Case .......................................... 150
V.6.ii. Estructuras de bucles.............................................. 152
V.6.ii.1. Bucles While Wend................................................ 152
V.6.ii.2. Bucles Do Loop .................................................... 153
V.6.ii.3. Bucles For Next.................................................... 154
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 132

V.7. Estructuras de control adicionales................................... 154
V.7.i. Bucles For Each Next.................................................... 154
V.7.ii. I nstruccin With...End With ..................................... 155
V.8. I nstruccin Exit (Visual Basic) ........................................ 156
V.9. Tratamiento de cadenas de caracteres ............................. 157
V.9.i. Una funcin ms amplia que Str....................................... 159
V.9.ii. Buscar una cadena en otra...................................... 159
V.9.iii. Reemplazar los caracteres de una cadena................ 160
V.10. Funciones matemticas ................................................... 160
V.10.i. Nmeros aleatorios................................................. 161
V.11. Funciones de formato...................................................... 165
V.11.i. La funcin Format .................................................. 165
V.11.i.1. Dar formato a fechas............................................... 165
V.11.i.2. Dar formato a Cadenas............................................ 166
V.12. Manejo de fechas y horas................................................. 166
V.12.i. Funcin DateDiff .................................................... 167
V.12.ii. Funcin DateAdd.................................................... 169
V.12.iii. Sentencias Date y Time ........................................... 170
V.13. Presentar mensajes ........................................................ 170
V.13.i. La funcin MsgBox.................................................. 171
V.13.ii. La funcin I nputBox ............................................... 174
V.13.iii. Cambiar la posicin del I nputBox ............................ 176
V.14. Grficos en Visual Basic.................................................. 177
V.14.i. Tratamiento del Color ............................................. 177
V.14.ii. Funcin RGB.......................................................... 177
V.15. Mtodos Grficos ............................................................ 177
V.15.i. Puntos ................................................................... 177
V.15.ii. Lneas.................................................................... 179
V.15.iii. Sistemas de Coordenadas ........................................ 179
V.15.iv. Mtodo Scale .......................................................... 180
V.15.v. Crculos, Elipses y arcos ......................................... 182
V.15.vi. Cuadrados y Rectngulos ........................................ 183
V.15.vii. Texto. Mtodo Print................................................ 184
V.15.viii. Mtodo Cls.............................................................. 187
V.15.ix. Propiedad AutoRedraw........................................... 186
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 133

Mg. Ing. Ftima Martnez
V.15.x. Propiedad DrawMode.............................................. 188
V.15.xi. Propiedad ClipControls........................................... 188
V.16. Ejercicios Propuestos ..................................................... 189

CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 134

PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 135

Mg. Ing. Ftima Martnez





V. FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIN
En este captulo se explican los fundamentos del lenguaje de programacin
Basic utilizado en el sistema de desarrollo para Visual Basic 6.0.
V.1. La programacin
La programacin consiste en desarrollar programas para procesar informacin y
tiene como objetivo el tratamiento de la informacin correctamente, con lo que se
espera que un programa proporcione el resultado correcto, es decir, que cada
aplicacin funcione segn lo esperado en trminos de programacin.
Otro objetivo fundamental de la programacin es que sean de cdigos claros y
legibles, as otro programador pueda ser capaz de entender la codificacin,
modificarla y ampliarla. As mismo lo ms importante es la correccin, ya que un
cdigo claro y legible facilita el mantenimiento de la aplicacin o sistema.
Normalmente en programacin existen convenciones para nombrar los
componentes, objetos o controles de cada sistema, as como sus variables que
deben ser relativas al trmino al cual se van a vincular. Por ejemplo el control
texto que contenga una edad se llamara txtEdad y su variable Edad.
V.1.i . Sentencias en Visual Basic
o Siempre convierte en maysculas la primera letra de las rdenes o funciones
predefinidas y aade espacios para mejor lectura.
o Se puede escribir varias lneas de cdigo en una sola, colocando dos puntos entre
ellas.
o Se puede extender a la siguiente lnea utilizando el carcter de guin bajo.
o Se utiliza Rem o comilla simple para escribir un comentario entre lneas de
cdigo.
o Su sintaxis no es case sensitive (no distingue entre minsculas y maysculas
como C++por ejemplo).
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 136

V.2. Constantes y variables
Las constantes y variables se utilizan para almacenar temporalmente
informacin. Las constantes representar valores que no cambian, mientras que
las variables guardan valores que pueden cambiar.
La memoria de una computadora consta de un conjunto enorme de bits (1 y 0), en
la que se almacenan datos y programas. Las necesidades de memoria de cada tipo
de dato no son homogneas y tampoco la de los programas. El uso de la memoria
cambia constantemente entre una sesin y otra de trabajo ya que el sistema
reserva o libera memoria a medida que lo necesita (Atencio, K.; p. 27).
Cada posicin de memoria en la que un dato est almacenado puede identificarse
mediante un nmero o direccin, es el modo bsico de referirse a una
determinada informacin. Sin embargo esta forma no es cmoda ni prctica de
hacerlo ya que la direccin, como se ha dicho, cambia constantemente. Por lo que
se hizo habitual el uso de identificadores.
El identificador es un nombre simblico que se utiliza para nombrar a las
variables, constantes y cualquier elemento del programa y permite identificar
claramente el objeto referenciado. As el usuario no tiene que preocuparse de
direcciones fsicas de memoria, es el sistema, mediante una tabla, el que
relaciona cada identificador con el tipo de dato que representa y la posicin de
memoria en la que est almacenado.
El nombre debe ser lo ms sencillo y descriptivo posible atendiendo a las
siguientes caractersticas:
Deben comenzar con una letra y no con un nmero u otro carcter.
No pueden contener espacios, puntos y algunos caracteres especiales.
No pueden ser palabras reservadas del lenguaje (For, If, Loop, Val, etc.).
Es recomendable que su longitud no supere de 25 caracteres.
V.2.i . Constantes
Generalmente se utilizan para representar valores que aparecen en muchos
lugares del cdigo (Birnios, B. y Birnios, M; 2003:158). Por ejemplo:
Const MAX_PERSON = 50
Es conveniente usar la constante que repetir varias veces su valor dentro del
programa, ya que en el momento de modificarlo se lo hace una sola vez.

Por conveniencia se escribe el nombre en maysculas para
diferenciarlo fcilmente de las dems variables.
Visual Basic tiene sus propias constantes como las que se han visto en un
captulo anterior al hablar de stas. En general empiezan con vb y van
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 137

Mg. Ing. Ftima Martnez
seguidas de una o ms palabras que indican su significado. Para verlas se
puede utilizar el Explorador de Objetos.
V.2.i.1. Definicin de constantes
Su sintaxis es:
[Public | Private] Const nombre [As tipo] = expresin
Por defecto las constantes son pblicas es decir estn disponibles en
todos los mdulos.
Ejemplos:

Const PAI S = Ar gent i na
Pr i vat e Const PROVI NCI A = Buenos Ai r es
Admite mltiples constantes en una misma lnea
Const CALLE = Mor eno, NUMERO=23


Es recomendable que las constantes sean definidas en un mismo lugar,
ya sea en un mdulo especial, en la seccin Declaraciones del mdulo o
al principio de un procedimiento.
V.2.i i . Variables
Las variables poseen un nombre, un tipo de informacin y el valor en s.
En el nombre se admiten letras, dgitos, el carcter de subrayado (_) y los
caracteres de declaracin de la variable (%, $, &, @, #, !). No admite
palabras reservadas
1
.
V.2.ii.1. Declaracin de variables
Para declarar se utiliza la instruccin Dim.
Su sintaxis: Dim nombre_variable [As tipo]
Si no se declara el tipo se asume que es Variant (variante).
Se debe evitar este tipo de declaracin: Error!
A simple vista parece que se declararon dos variables enteras pero en
realidad es una Integer (j) y otra Variant (i)

1
Para saber cul es una palabra reservada utilice la Ayuda buscando Palabras Reservadas
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 138

V.2.ii.2. Tipos de datos de las variables
Visual Basic dispone de tipos de datos aplicables a las constantes y
variables. La siguiente tabla muestra estos tipos disponibles en el
lenguaje.

V.2.ii.3. Tipos de Cadenas (String)
Los cdigos para caracteres varan de 0 a 255, los primeros 128 (0
127) del juego de caracteres corresponden a las letras y smbolos de un
teclado estndar de EE.UU, son los mismos que los definidos en los
caracteres ASCI I . Los siguientes 128 (128 255) representan caracteres
especiales, como letras internacionales, acentos, smbolos de moneda y
fracciones.
Hay dos clases de cadenas (Rodrguez Bucarelly, C. M.; 2004: 87): de
longitud fija, que conserva siempre el mismo tamao,
independientemente de la informacin que se le asigne y la de cadena
de longitud variable. Cuando se declara una variable del tipo String se
crea una cadena de longitud variable, si no se especifica lo contrario.
Cadena de longitud variable: pueden contener hasta 2.000 millones de
caracteres (2^31).
Cadena de longitud fija: pueden contener de 1 a 65.535 (2^16) caracteres.
Tipo de datos
y el carcter
de declaracin
Tamao de
almacenamiento
Almacena
Byte 1 byte Nmeros enteros entre 0 - 255
Boolean 2 bytes Valores lgicos: True o False
Integer (%) 2 bytes Nmeros enteros -32.768 32.767
Long (&) 4 bytes
Nmeros enteros largos entre
-2.147.483.648 2.147.483.647
Single (!) 4 bytes
Nmeros decimales con coma flotante/
precisin simple (precisin de hasta 7 dgitos y
el rango hasta 38 dgitos)
Double (#) 8 bytes
Nmeros decimales con coma flotante/
precisin doble (precisin de hasta 16 dgitos y
su rango hasta 300 dgitos)
Currency (@) 8 bytes
Nmeros grandes. Acepta fracciones decimales,
utilizando hasta 19 dgitos (15 dgitos a la izq.
del punto decimal y 4 dgitos a la derecha del
punto decimal).
Date 8 bytes
Fechas entre 1/1/100 hasta 31/12/9999 y
horas entre 0:00:00 a 23:59:59.
Object 4 bytes Instancias de clases u objetos
String ($)
4 bytes + 1
byte/ caracter
Cadena de Caracteres.
Variant
16 bytes + 1
byte/ car. en cadena
de caracteres
Cualquiera tipo de los anteriores.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 139

Mg. Ing. Ftima Martnez
La de cadena fija rellena con espacios si se declara con ms caracteres
de lo que necesita y trunca el excedente si se declara con menos.
Su sintaxis: Dim nombre_variable As String * longitud
Longitud indica la cantidad de caracteres.

Di mNombr e As St r i ng * 10
Se rellena con espacios para completar la longitud:
Nombr e = J or ge
Se trunca la cadena y se eliminan los caracteres sobrantes:
Nombr e = Maxi mi l i ano
Siempre se declaran en forma explcita.
V.2.ii.4. Declaracin explcita
Basic, al contrario de otros sistemas de programacin, no exige la
definicin previa de una variable. En otros lenguajes es necesario
realizar esta declaracin antes de introducir una variable. Mediante
estas declaraciones, el programa sabe de qu tipo de dato se trata y por
tanto cmo debe trabajar con l. Basic permite que no se declaren
2
.
Una declaracin explcita significa que se deben utilizar instrucciones
para declarar las variables. Por ejemplo: Dim Nombre As String
Otra forma de hacerlo es mediante el carcter especial asignado a cada
tipo de variable, por ejemplo: Dim Nombre$
V.2.ii.5. Declaracin implcita
Consiste en utilizar las variables sin declararlas. Cuando a lo largo del
programa se introduce una variable nueva, el sistema asume que es una
variable y que el tipo es el adecuado para el valor que le estamos
introduciendo en ese momento.
Por ejemplo:
DNI = 50000000
Nombre = "Pedro"
Telfono = "1234567"
Entiende que DNI , Nombre y Telfono son
variables, que DNI es un nmero y que Nombre
y Telfono son cadenas de caracteres
alfanumricos.

2
Surez Bernardo, L.; 1998; Visual Basic - Gua del Estudiante; Madrid;
http://www.monografias.com/trabajos2/guiavb/guiavb.shtml; (accedido 20/07/2007)
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 140

Esto puede ahorrar tiempo a la hora de escribir el cdigo, pero puedo
acarrear inconvenientes y prdida de tiempo a la hora de depurarlo por
fallas del programa causadas por un simple error al tipear.
V.2.i i i . Option Explicit
Basic ha pensado en ese problema, y se puede solucionar con una instruccin:
Option Explicit. Si se la escribe en la parte de Declaraciones de cual quier
mdulo, obliga a declarar las variables que se va a usar en dicho mdulo. De
no haberla declarado antes de usarla, el programa dar una comunicacin de
error.
Es muy til ya que sin esta instruccin, se puede tipear mal el nombre de una
variable y el lenguaje interpretara como una nueva variable y no avisara del
error (error de lgica del programa).
Otra forma de usar esto es mediante las opciones del lenguaje. Para eso en el
men Herramientas Opci ones en la ficha Editor se activa la opcin
Requerir Declaracin de variables. Esto inserta automticamente la sentencia
Option Explicit en los mdulos nuevos, pero no en los ya creados, por lo que
tendr que agregar manualmente Option Explicit a los mdulos existentes en
el proyecto
V.3. Convertir tipos de datos
Visual Basic proporciona varias funciones de conversin que se puede utilizar
para convertir valores de tipos de datos especficos. Por ejemplo:

Para convertir un valor a Currency, esta la funcin Ccur:
PagoPor Semana = Ccur ( hor as * PagoPor Hor a)
La siguiente tabla muestra las funciones de conversin:
Funciones de
Conversin
Convierten una
expresin en
Cbool Boolean
Cbyte Byte
Ccur Currency
Cdate Date
CDbl Double
Cint Integer
CLng Long
Nota: siempre es mejor declarar las variables en forma explcita, es una
buena prctica de programacin.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 141

Mg. Ing. Ftima Martnez
Funciones de
Conversin
Convierten una
expresin en
CSng Single
CStr String
Cvar Variant
CVErr Error

V.4. Alcance de las Variables
El alcance de una variable define en qu partes del cdigo son reconocidas.
Cuando se la declara en un procedimiento, slo el cdigo de dicho procedimiento
puede tener acceso o modificar el valor de la variable; tiene un alcance local al
procedimiento. A veces, sin embargo, se necesita utilizar una variable con un
alcance ms general, como aquella cuyo valor est disponible para todos los
procedimientos del mismo mdulo o incluso para todos los procedimientos de toda
la aplicacin. Visual Basic le permite especificar el alcance de una variable
cuando la declara. Dependiendo de cmo se declara, una variable tiene como
alcance un procedimiento (local) o un mdulo.
Alcance Privado Pblico
Nivel de
procedimiento
Las variables son privadas al
procedimiento donde se declaran
No es aplicable. No puede declarar
variables pblicas dentro de un
procedimiento.
Nivel de
mdulo
Las variables son privadas al mdulo
donde se declaran
Las variables estn disponibles para
todos los mdulos
V.4.i . Variables utilizadas en un procedimiento
Las variables al nivel de procedimiento slo se reconocen en el procedimiento
en el que se han declarado. Se las conoce tambin como variables locales. Se
declaran mediante las palabras clave Dim o Static. Por ejemplo:

Di m i nt Temp As I nt eger
St at i c i nt Cont ador As I nt eger
Los valores de variables locales declaradas con Static existen mientras se
ejecuta la aplicacin, mientras que las variables declaradas con Dim slo
existen mientras se ejecuta el procedimiento.
Nota: los valores que se pasan a una funcin de conversin deben ser
vlidos para el tipo de dato de destino o se producir un error. Por ejemplo,
si intenta convertir un tipo Long en un Integer, el tipo de Long debe de
estar en el intervalo vlido del tipo de dato Integer.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 142

V.4.i i . Variables utilizadas en un mdulo
De forma predeterminada, una variable al nivel de mdulo est disponible
para todos los procedimientos del mdulo, pero no para el cdigo de otros
mdulos. Las variables al nivel de mdulo se las declara con la palabra clave
Private en la seccin Declaraciones Generales al principio del mdulo.
Por ejemplo: Pr i vat e i nt Temp As I nt eger
Al nivel de mdulo es lo mismo usar Private que Dim, pero es preferible
Private porque contrasta con Public y es ms fcil de comprender el cdigo.

1) Ejercicio
Variables Locales y Privadas:
En este ejemplo se utilizan variables
Locales a cada procedimiento y
variables Privadas al mdulo
(formulario). Estas son utilizadas en
varios procedimientos del formulario.
El botn Verifica Cdigo, verifica que el
cdigo ingresado en Cdigo sea el mismo
que el ingresado en Repita cdigo y
escribe en el formulario el nombre y su
cdigo.

El cdigo de los eventos
Option Explicit
'Declara las variables que se usarn en todos los procedimientos
'Son variables Privadas al mdulo de formulario
Private Nombre As String, codigo1 As String, codigo2 As String
Private bandera As Boolean
Private Sub cmdEscribe_Click()
Dim var As Variant 'Var es variable Local al procedimiento
var = 12.44 'Var puede tomar cualquier tipo de dato
Nombre = txtNombre 'Asigna el valor a la variable Nombre
If bandera = False Then 'Si antes no verific bandera estar en False
var = "Mi nombre es: " 'Asigna un valor string a la variable de tipo variant
Print var 'Escribe en el formulario el contenido de var
End If
cmdVerifica.SetFocus 'pasa el foco al botn de comando Verifica
End Sub
Private Sub cmdSalir_Click()
End
End Sub
Private Sub cmdVerifica_Click()
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 143

Mg. Ing. Ftima Martnez
If codigo1 = codigo2 Then 'Si son iguales
Print
Print Nombre, codigo1 'Escribe en el formulario Nombre y Cdigo
cmdSalir.SetFocus 'pasa el foco al botn Salir
Else 'Si no son iguales
'Presenta un mensaje
MsgBox "No ingres correctamente." & vbCrLf & "Ingrese nuevamente",
vbCritical
txtCodigo1 = "" 'Limpia las cajas de texto
txtCodigo2 = ""
bandera = True 'pone la bandera en verdadero
txtCodigo1.SetFocus 'vuelve el foco a la caja de texto cdigo
End If
End Sub
Private Sub txtCodigo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'si presiona ENTER
txtCodigo2.SetFocus 'pasa el foco al siguiente control
codigo1 = txtCodigo1 'asigna con lo que escribi en la caja de texto
End If
End Sub
Private Sub txtCodigo1_LostFocus()
'Si no escribe algo
If txtCodigo1 = "" Then
txtNombre.SetFocus 'mantiene el foco
End If
End Sub
Private Sub txtCodigo2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'si presiona ENTER
cmdEscribe.SetFocus 'pasa el foco al siguiente control
codigo2 = txtCodigo2 'asigna con lo que escribi en la caja de texto
End If
End Sub
Private Sub txtNombre_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'si presiona ENTER
txtCodigo1.SetFocus 'pasa el foco al siguiente control
End If
End Sub
Private Sub txtNombre_LostFocus()
'Si no escribe algo
If txtNombre = "" Then
txtNombre.SetFocus 'mantiene el foco
End If
End Sub




CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 144



2) Ejercicio
Variable Esttica
En este ejemplo se utiliza una
variable del tipo Static. En el
procedimiento, donde fue
declarada, su valor aumenta en uno.
Al salir del mismo mantiene su valor
por ser una variable static, de esta
manera permite utilizarla como un
contador que incrementa de uno en
uno su valor.


Cdigo de los eventos
Option Explicit
'Variables Privadas a nivel de mdulo
'Dim num As Integer o ...
Private num As Integer
Private dia As String
Private Sub cmdEscribe_Click()
Select Case num
Case 1
dia = "lunes"
Case 2
dia = "martes"
Case 3
dia = "mircoles"
Case 4
dia = "jueves"
Case 5
dia = "viernes"
Case 6
dia = "sbado"
Case 7
dia = "domingo"
End Select
lstDias.AddItem dia 'Agrega el da en la lista de das de la semana
cmdIngresa.SetFocus 'Pasa el foco al botn de comando Ingresa
End Sub
Private Sub cmdIngresa_Click()
Static i As Integer 'Declara una variable Static
i = i + 1 'Inicialmente la variable tiene 0, ahora incrementa en 1
If i <= 7 Then 'Si es menor que 7
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 145

Mg. Ing. Ftima Martnez
num = i 'guarda el valor de i en una variable Privada a nivel de mdulo
lstNum.AddItem num 'Agrega a la lista el nmero
'pasa el foco al siguiente botn para escribir en la lista das
cmdEscribe.SetFocus
Else
'Si pasa de 7 manda el foco al botn de Salir para terminar
i = 0 'Inicializa el nmero de das a 0
cmdSalir.SetFocus
End If
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As
Integer)
If MsgBox("Desea salir?", vbYesNo + vbCritical, "FINALIZA") = vbNo Then
Cancel = True
End If
End Sub
V.4.i i i . Variables utilizadas por todos los mdulos
Para hacer que una variable al nivel de mdulo est disponible para otros
mdulos, se utiliza la palabra clave Public para declararlas. Los valores de las
variables pblicas estn disponibles para todos los procedimientos de la
aplicacin. Al igual que todas las variables al nivel del mdulo, las variables
pblicas se declaran en la seccin Declaraciones Generales al principio del
mdulo.
Por ejemplo: Publ i c i nt Temp As I nt eger



V.5. Expresiones y Operadores
Las expresiones aritmticas estn representadas por: una constante, una variable
o una combinacin de constantes o variables unidas por operadores aritmticos.
V.5.i . Aritmticos
Se utilizan para efectuar clculos matemticos. La tabla siguiente muestra las
operaciones matemticas con sus respectivos operadores.
Nota: no se puede declarar variables pblicas en un procedimiento,
slo en un mdulo en la seccin Declaraciones Generales.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 146


Operacin Operador Ejemplo Resultado
Exponenciacin ^ a^b
Potencia de a elevado a
b
Multiplicacin * a * b Producto de a por b
Divisin / a/ b Cociente de a sobre b
Divisin entera \ a \ b
Cociente entero de a
sobre b
Residuo entero Mod a mod b Resto de a dividido en b
Suma + a + b Suma de a mas b
Resta - a b Resta de a menos b
Concatenacin de cadenas & , + a & b Concatenacin de a y b
El operador de concatenacin & puede ser utilizado con cadenas de caracteres.
Se utiliza para poner una cadena a continuacin de otra.

3) Ejemplo
Variable
String
Se inicializan las strings:
st r 1 = " Mi pr i mer st r i ng"
st r 2 = " Mi segunda st r i ng"
Text oFi nal = st r 1 & . & st r 2
TextoFinal vale "Mi primer string. Mi segunda string "
El operador + opera de forma anloga, pero su uso se desaconseja pues en
ciertas ocasiones convierte las cadenas en nmeros y realiza la suma.
V.5.i.1. Precedencia de operadores
Los clculos generalmente incluyen varios operadores. Por esta razn es
esencial conocer la precedencia de los operadores es decir el orden en
que procesan.
Visual Basic no procesa de
izquierda a derecha sino que
realiza subconjuntos de una
expresin ms compleja en
funcin de los operadores, en el
orden que se muestra.
Para omitir la precedencia se
puede utilizar parntesis
agrupando subexpresiones.
Operacin
Exponenciacin (^)
Negacin (-)
Multiplicacin y Divisin (* y /)
Divisin entera (\)
Modulo (Mod)
Suma y resta (+, -)
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 147

Mg. Ing. Ftima Martnez
V.5.i i . Lgicos
Se utilizan para combinar las expresiones
lgicas, es decir permiten evaluar ms de
una expresin lgica a la vez. Las
expresiones lgicas dan como resultado
True o False. La siguiente tabla los
muestra con su orden de precedencia.
Su formato es:
[Operando1] operador lgico [Operando2]
Donde Operador1 y Operador2 pueden ser cualquier expresin lgica.
El operador lgico And combina dos o ms condiciones simples y produce un
resultado Verdadero si todos los operandos son Verdaderos.
En cambio el operador Or proporciona un valor Verdadero si uno de los
operandos es Verdadero.
El operador Not niega el valor original de la expresin: si es Verdadero ser
Falso y si es Falso ser Verdadero.
Por ejemplo:

I f ( Mes=2) And ( Cant di as=29) t hen Bi si est o=Tr ue
Para que la variable Bisiesto sea puesta en True, ambas condiciones deben ser
verdaderas.
Cuando se necesita averiguar por una variable lgica si es Verdadera no es
necesario escribir =True ya que se pregunta implcitamente. Por ejemplo:

I f ( LuzRoj a) or ( LuzAmar i l l a) t hen I nf r act or =1
V.5.i i i . Relacionales
Se encargan de comparar dos o ms
condiciones de una expresin. En la
tabla se muestran los mismos.
Se los utiliza en estructuras de control,
cuya ejecucin dependa de una
condicin. Por ejemplo:


I f Numer o <= Maxi mo Then
Operacin Descripcin
Not Negacin
And Conjuncin lgica
Or Disyuncin lgica
Xor Exclusin lgica
Operador Operacin
= Igualdad
<> Desigualdad
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 148

V.5.i v. Otros operadores de comparacin: Like e Is
El operador Like
3
compara dos cadenas de caracteres. La sintaxis es:
Respuesta = cadena1 Like cadena2
Respuesta es una variable booleana, ser: True si cadena1 coincide con
cadena2; False si no coinciden y Null si ambas o una de las cadenas es Null.
El operador Is se utiliza para comparar a objetos y tipos de objetos.
Su sintaxis es: Respuesta = objeto1 Is objeto2
Respuesta es una variable booleana; objeto1 y objeto2 son los objetos a
comparar. Si ambos son del mismo ti po, da como resultado True, de lo
contrario dar False.
Un operador que se puede utilizar junto a Is es TypeOf, su funcin es
comprobar si un objeto pertenece a determinado tipo de objeto. Su sintaxis:
TipeOf nobre_objeto Is tipo_objeto
Donde nombre_objeto es una variable objeto y tipo_objeto es cualquier tipo de
objeto vlido. Por ejemplo:

I f TypeOf Mi Obj et o I s Label Then Pr i nt Et i quet a
I f TypeOf Mi Obj et o I s Text Box Then Pr i nt Caj a de
t ext o

V.5.v. Operador de Asignacin
El signo = es el operador de comparacin y de asignacin. En el primer caso su
funcin es comprobar una igualdad. En el segundo su funcin es transferir un
valor desde el lado derecho del signo hasta el identificador del lado izquierdo.
V.6. Estructuras de Control
Las estructuras de control permiten regular el flujo de ejecucin de un programa.
Sin las estructuras, los programas avanzaran por sus instrucciones de principio
a fin. Algunos programas muy simples pueden escribirse slo con este flujo
unidireccional. No obstante, la mayor eficacia y utilidad de cualquier lenguaje de
programacin se deriva de la posibilidad de cambiar el orden de ejecucin con

3
Par obtener ms informacin consulte la Ayuda de Visual Basic.
Nota: es muy til trabajar con TypeOf para filtrar y trabajar con todos los
objetos de un tipo especfico en un formulario.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 149

Mg. Ing. Ftima Martnez
instrucciones de control y bucles. Utilizando estructuras de control se puede
escribir cdigo que tome decisiones o repita acciones.
Visual Basic dispone de las siguientes estructuras de control:
If Then Else
Select Case
For Next
For Each Next
Do Loop
While Wend
V.6.i . Estructuras de decisin
Visual Basic permite probar condiciones y realizar diferentes operaciones en
funcin de los resultados de la prueba. Puede comprobar si una condicin es
verdadera o falsa, los distintos valores de una expresin o las diferentes
excepciones que se generan al ejecutar una serie de instrucciones.
En la figura se muestra una estructura de decisin que prueba si el valor de
una condicin es True y segn el resultado realiza distintas acciones.


V.6.i.1. Sentencia If...Then...Else
Las sentencias If...Then...Else permiten probar una o ms condiciones
y ejecutar una o ms instrucciones en funcin de cada condicin. Puede
probar las condiciones y tomar medidas de las maneras siguientes:
Ejecutar una o ms instrucciones si una condicin es True.
Ejecutar una o ms instrucciones si una condicin es False.
Ejecutar algunas instrucciones si una condicin es True y otras si es False.
Probar una condicin adicional si una condicin anterior es False.
Formato de la sentencia If:
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 150


I f <condi ci n> Then
<Sent enci as>
El se
<Sent enci as>
End I f
Si <condi ci n> Ent onces
<Sent enci as>
Si no
<Sent enci as>
Fi n_Si
Si se tiene simplemente una comprobacin y una instruccin para
ejecutar se puede escribir en una lnea. Ejemplo:

I f a < b Then cuent a = cuent a+1
Tambin se puede terminar con la palabra End If:

I f Nr o > 1 Then
Pr i nt Nr o
End I f
Si en cambio es un conjunto ms complejo de condiciones y acciones se
utilizarn varias lneas.

I f Nr o > 0 Then
Pr i nt Nmer o es posi t i vo
El se
Pr i nt Nmer o es negat i vo
End I f
Otro ejemplo:

I f Nr o > 0 Then
Pr i nt Nmer o es posi t i vo
El seI f Nr o = 0 Then
Pr i nt Nul o
El se
Pr i nt Nmer o negat i vo
End I f
En este ejemplo se evala una condicin original, si es verdadera se
ejecuta una accin, de lo contrario se continua examinando.
En lugar de utilizar este tipo de estructura con la palabra ElseIf es
recomendable usar Select Case.
V.6.i.2. Estructura Select...Case
La estructura Select...Case permite evaluar una expresin una vez y
ejecutar distintos conjuntos de instrucciones basados en valores posibles
diferentes. Es excelente para evitar el uso de If anidados.
Por ejemplo:
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 151

Mg. Ing. Ftima Martnez

Ejemplo de
Select Case
Sel ect Case D a
Case Domi ngo
Pr i nt El 1 d a
Case Lunes
Pr i nt El 2 d a
Case Mar t es
Pr i nt El 3 d a
Case Mi r col es
Pr i nt El 4 d a
Case J ueves
Pr i nt El 5 d a
Case Vi er nes
Pr i nt El 6 d a
Case Sbado
Pr i nt El 7 d a
Case El se
Pr i nt Er r or ! !
End Sel ect
La expresin que se evala puede ser numrica o alfanumrica y puede
proporcionar una serie de valores distintos y uno de ellos puede o no
encontrarse en la lista. La clusula opcional Case Else indica que si los
valores proporcionados por la expresin no se encuentran en la lista
entonces se ejecutarn otras instrucciones.
La instruccin Select Case permite trabajar con condiciones y rango de
valores. Por ejemplo:

Ejemplo de
Select Case
Sel ect Case Nota
Case 10
Pr i nt Excel ent e
Case 8 To 9
Pr i nt Muy Bueno
Case 6 To 7
Pr i nt Bueno
Case 4 To 5
Pr i nt Regul ar
Case I s < 4
Pr i nt I nsuf i ci ent e
End Sel ect


Nota: no se debe confundir Is de la sentencia Select Case con el operador
Is de comparacin.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 152

V.6.i i . Estructuras de bucles
Las estructuras de bucles permiten ejecutar una o ms lneas de cdigo de
forma repetitiva. Puede repetir las instrucciones de una estructura de bucles
hasta que una condicin sea True, una condicin sea False, un nmero de
veces especificado o una vez para cada objeto de una coleccin.
La siguiente figura muestra una estructura de bucle que ejecuta un conjunto
de instrucciones hasta que una condicin se convierta en verdadera.


V.6.ii.1. Bucles While Wend
La construccin While...Wend ejecuta un conjunto de instrucciones
mientras la condicin especificada en la instruccin While sea True.
Las reglas de funcionamiento: la condicin se evala antes y despus de
cada ejecucin del bucle. Si la condicin es Verdadera, se ejecuta el
bucle y si es Falsa el bucle no se ejecuta.
Su caracterstica principal es que verifica antes de comenzar con el
bucle la validez de la condicin. Por lo tanto es posible que el bucle no
llegue a realizarse nunca si en la primera ejecucin la condicin se
evala Falsa.

Ejemplo de
While Wend
El ejemplo hace que se muestren valores de 1 hasta 4
Cont = 1
Whi l e cont<5
Pr i nt cont
Cont = cont + 1
Wend
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 153

Mg. Ing. Ftima Martnez
V.6.ii.2. Bucles Do Loop
La instruccin Do...Loop permite probar una condicin al comienzo o al
final de una estructura de bucle. Tambin puede especificar si repite el
bucle mientras (While) la condicin sigue siendo True o hasta (Until)
que se convierta en True.
La principal caracterstica de estos bucles es que se realizan al menos
una vez a diferencia del While Wend.

Ejemplo de Do
Loop
Repite el bucle Mientras la condicin se cumpla
Do
sent enci as
Loop Whi l e <condi ci n>
Repite el bucle Hasta que la condicin se cumpla
Do
sent enci as
Loop Unti l <condi ci n>

Es preferible utilizar Do...Loop cuando se desea repetir un conjunto de
instrucciones un nmero indefinido de veces, hasta que se satisfaga una
condicin. Si se desea repetir las instrucciones un nmero fijo de veces,
la I nstruccin For...Next es normalmente una opcin mejor.
Do...Loop proporciona mayor flexibilidad que While Wend porque
permite elegir si se debe finalizar el bucle cuando condicin deja de ser
True o cuando es True por pri mera vez. Tambin le permite probar
condicin al principio o al final del bucle. De esta manera se asemeja a
un While Wend y entonces existe la posibilidad de que no se ejecute
nunca.

Do While
Repite Mientras Contador sea menor que 20
Do Whi l e Contador < 20
Cont ador = cont ador + 1
Loop
Si se desea que el programa se ejecute mientras NO se cumpla una
determinada condicin, la sentencia ser:

Do Until
Repite Hasta que Contador sea mayor a 20
Do Unti l Contador > 20
Cont ador = cont ador + 1
Loop
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 154

Hay otras dos variantes. En estas se garantiza al menos una ejecucin
de instrucciones.
Do
I nst r ucci ones
Loop Whi l e condi ci n
Do
I nst r ucci ones
Loop Unti l condi ci n
V.6.ii.3. Bucles For Next
La construccin For...Next ejecuta el bucle un nmero fijo de veces.
Utiliza una variable de control de bucle, tambin denominada contador
para realizar el seguimiento de las repeticiones. Especifica los valores
de inicio y fin de este contador, y puede especificar opcionalmente la
cantidad en la que se incrementa de una repeticin a la siguiente.
Si el valor inicial del bucle es mayor que el final, el ciclo no se ejecutar,
excepto que se especifique en Step un valor negativo.

Ejemplo de For
Next
Imprime nmero del 1 al 20
For cont = 1 to 20
Pr i nt cont
Next
Imprime pero saltando de 3 en 3
For i =1 to 10 Step 3
Pr i nt i
Next
Imprime en cuenta regresiva
For i =10 to 1 Step - 1
Pr i nt i
Next
V.7. Estructuras de control adicionales
Visual Basic proporciona estructuras de control que ayudan a eliminar de un
recurso o reducen el nmero de veces que tiene que repetir una referencia de
objeto.
V.7.i . Bucles For Each Next
Este bucle es un caso especial del For Next. Ejecuta un conjunto de
instrucciones una vez para cada elemento de una coleccin. Especifica la
variable de control de bucle pero no tiene que determinar los valores de inicio
y fin para ella. Su sintaxis es:


PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 155

Mg. Ing. Ftima Martnez
For Each el ement o I n Col ecci n
Sent enci as
Next
El elemento puede ser solamente una variable del tipo Variant, o cualquier
variable de objeto especfica.
La coleccin es el nombre de un conjunto de objetos o de una matriz.
Se utiliza un bucle For Each...Next cuando se desea repetir un conjunto de
instrucciones para cada elemento de una coleccin o matriz.
La instruccin For..Next funciona bien cuando se puede asociar cada
iteracin de un bucle con una variable de control y determinar los valores
iniciales y finales de esa variable. Sin embargo, cuando se trata de colecciones,
el concepto de valores iniciales y finales no es significativo, y no siempre se
sabe cuntos elementos tiene la coleccin. En este caso, el bucle For
Each...Next es la mejor opcin.

Ejemplo de
For Each
Se define una variable tipo Control (tipo que representa
cualquier control de un programa).
Luego recorre todos los controles del formulario y limpiando
solo las que son cajas de texto. Utiliza Is junto a TypeOf
para saber si pertenece al conjunto.
Di mCt l As Cont r ol
For Each Ctl I n Form1
I f TypeOf Cl t I s Text Box Then
Ct l . Text o = Borra el contenido del
TextBox
End I f
Next
V.7.i i . Instruccin With...End With
La construccin With...End With permite especificar una referencia de objeto
una vez y ejecutar luego una serie de instrucciones que tienen acceso a sus
miembros. Esto puede simplificar el cdigo y mejorar el rendimiento porque
Visual Basic no tiene que restablecer la referencia para cada instruccin que
tiene acceso a l.
Permite realizar una serie de instrucciones sobre un objeto especificado sin
volver a calificar el nombre del objeto.
Sintaxis: With objecto [ sentencias ] End With
El objeto: obligatorio, puede ser una variable o expresin. Se puede evaluar
como cualquier tipo de datos, incluidos los tipos elementales.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 156

Las sentencias: opcionales. Una o ms instrucciones incluidas entre With y
End With que se ejecutan en el objecto.
End With: obligatorio, termina la definicin del bloque With.
A menudo se necesitan realizar varias acciones diferentes sobre el mismo
objeto. Un bloque With reduce la necesidad de escribir repetidamente la ruta
de acceso de calificacin y el riesgo de cometer errores al escribir alguno de
sus elementos.
Por ejemplo, para cambiar un nmero de propiedades diferentes en un nico
objeto, coloque las instrucciones de asignacin de las propiedades dentro de
With...End With, haciendo referencia al objeto una vez, en lugar de hacerlo
en cada una de las asignaciones de propiedades.

Establecer varias propiedades del control Command1:
Pr i vat e Sub For m_Load( )
Command1. Capt i on = " Acept ar "
Command1. Vi si bl e = Tr ue
Command1. Top = 200
Command1. Lef t = 5000
Command1. Enabl ed = Tr ue
End Sub
Todas esas instrucciones utilizan la misma variable de objeto, Command1. Se
puede hacer este cdigo ms fcil de escribir, ms legible y ms eficaz con la
instruccin With...End With.

Ejemplo de With
End With
Pr i vat e Sub For m_Load( )
Wi t h Command1
. Capt i on = " Acept ar "
. Vi si bl e = Tr ue
. Top = 200
. Lef t = 5000
. Enabl ed = Tr ue
End Wi th
End Sub
V.8. Instruccin Exit (Visual Basic)
Sale de un procedimiento o bloque y transfiere el control inmediatamente a la
instruccin que sigue a la llamada al procedimiento o a la definicin del bloque.
Exit { Do | For | Function | Property | Select | Sub | While }

Sale inmediatamente del bucle Do, For, While, Select en el que aparece. La
ejecucin contina con la instruccin que si gue a l a i nstrucci n que ci erra el
bucle.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 157

Mg. Ing. Ftima Martnez
Exit Do | While | Select slo se puede utilizar dentro de dicho bucle. Exit For
se puede utilizar dentro de un bucle For...Next o For Each...Next.
Cuando se utiliza dentro de bucles anidados, Exit Do | For | While sale del
bucle ms profundo y transfiere el control al siguiente nivel de anidamiento.
Exit Function | Property | Sub sale inmediatamente del procedimiento en el
que aparece. Slo se puede utilizar dentro de ese procedimiento. La ejecucin
contina con la instruccin que sigue la instruccin que llam al procedimiento.

V.9. Tratamiento de cadenas de caracteres
Existen varias funciones tiles para el manejo de cadena de caracteres (String).
Estas funciones se utilizan para la evaluacin, manipulacin o conversin de
cadenas de caracteres (Garca de J aln, J . y otros; 1999: 45). Algunas de ellas se
muestran en la siguiente tabla
4
.
Funciones en Visual
Basic
Utilidad
UCase(x) y LCase(x) Conversin a maysculas y minsculas.
InStr([n], str1, str2)
Localiza una cadena dentro de otra desde la posicin n.
Poderosa funcin que se utiliza para buscar un grupo de
caracteres dentro. Devuelve un nmero, lugar en que se
encuentra una cadena dentro de otra desde la posicin n.
InStrRev(str1, str2, [n])
Localiza una cadena en otra a partir del final. Devuelve la
posicin de str2 en str1 a partir del carcter n)
Mid(str, ini [,n])
Recupera o sustituye una parte de una cadena. El parmetro ini
es obligatorio, indica la posicin de carcter en la cual comienza
la parte que se quiere tomar; n es opcional e indica el nmero
de caracteres a extraer a partir de ini .
Left(str, lenght) y
Right(str, lenght)
Recupera una cierta cantidad de caracteres de un extremo
izquierdo o derecho de la cadena.
LTrim(str), RTrim(str) y
Trim(str)
Quita espacios del extremo izquierdo, derecho o ambos extremos
de una cadena.
Len(str) Nmero de caracteres de una cadena
StrComp(str1, str2)
Compara cadenas de caracteres. Devuelve -1, 0, 1 segn str1
sea menor, igual o mayor que str2.
Str(n), CStr(n) y Val(str) Conversin de nmeros a cadenas y de cadenas a nmeros.
Asc(car) y Char(n) Devuelve el cdigo ASCI I a partir de un carcter y viceversa.

4
Para saber ms acerca de estas funciones consulta la Ayuda de Visual Basic.
Nota: no debe confundirse Exit con las instrucciones End. Exit no define el
fin de una instruccin.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 158

Es necesario tener presente que cuando se quieren comparar dos cadenas de
caracteres, dicha comparacin se realiza por defecto en funcin del cdigo ASCI I
asociado a cada letra. Esto significa que por ejemplo caa es posterior a casa
debido a que la letra tiene un cdigo ASCI I asociado superior a la letra s ( es el
164; s es el 115). Esto mismo ocurre con las vocales acentuadas.


Ejemplos
de
Funciones
MyDoubl e = 437. 324
MySt r i ng = CSt r ( MyDoubl e)
MyVal ue = Val ( " 2457" )
MyVal ue = Val ( " 2 45 7" )
MyVal ue = Val ( " 24 y 57" )
AnySt r i ng = " Hol a Mundo"
MySt r = Ri ght ( AnySt r i ng, 6)
MySt r = Lef t ( AnySt r i ng, 6)
MySt r = Ri ght ( AnySt r i ng, 20)
i = St r Comp( " casa" , " caa" )
MySt r i ng = "Demost r aci n"
Last Wor d = Mi d( MySt r i ng, 1, 4)
Mi dWor ds = Mi d( MySt r i ng, 5)
Posi ci n = I nSt r ( MySt r i ng,
Demo)
MyDouble es un Double.
MyString contiene
"437.324".
Devuelve 2457.
Devuelve 2457.
Devuelve 24.
Se define el string.
Devuelve "Mundo".
Devuelve "Hola M".
Devuelve "Hola Mundo".
Devuelve 1
Se crea un nuevo string.
Devuelve "Demo".
Devuelve "stracin".
Devuelve 1

El siguiente ejemplo agregar en una lista los caracteres cuyo nmero ASCI I
vaya desde el 65 (A) al 90 (Z). Comenzar presentando el correspondiente al
nmero 65, e ir presentando sucesivamente hasta llegar al 90, donde se parar.

Funcin
Chr(num)
Agrega las 26 letras maysculas del abecedario ingls.
For N=65 To 90
Li st 1. AddI t emChr ( N)
Next N
Nota para recordar:
Siempre habr que convertir un nmero a una cadena cuando se desee presentarlo
en pantalla.
Siempre habr que convertir a nmero la cadena de caracteres numricos
introducidos por teclado o por pantalla, cuando se desee operar con ese nmero.
Un Label, cuando tiene que presentar un nico nmero, VB hace automticamente
esa conversin. Sin embargo, cuando tiene que presentar un nmero, y adems un
texto en el mismo Label, VB no realizar automticamente ese cambio, por lo que
dar un error. Se recomienda convertir los nmeros a variables de cadena siempre
que se los quiera presentar en un Label o TextBox.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 159

Mg. Ing. Ftima Martnez
V.9.i . Una funcin ms amplia que Str
Existe una funcin ms amplia que Str, se trata de CStr. Esta no solamente
transforma un nmero a una cadena, como hace Str, sino que convierte
cualquier tipo de variable a una variable tipo String (cadena).
Transforma, por ejemplo, una variable tipo Booleana en una variable de
cadena, devolviendo la cadena Verdadero si el valor de la variable booleana
es True, y Falso si es False.

Funcin
CStr(num)
l abel 1. Capt i on = CSt r ( bool eana)
Label1.Caption = Verdadero si booleana es True
Label1.Caption = Falso si booleana es False
Puede tambin transformar a una cadena de caracteres el valor de un
CheckBox o de un OptionButton. En estos casos devuelve 0 y 1 para el
CheckBox (Desactivado / Activado) y Verdadero Falso para el
OptionButton (Activado / Desactivado).

Funcin
CStr(num)
Label 2 = CStr ( Check1. Val ue)
Label2.Caption = 1 si Check1 est activado
Label2.Caption = 0 si Check1 est desactivado
Si se aplica CStr a una variable tipo Fecha/Hora devuelve la Fecha / Hora en
formato corto.
V.9.i i . Buscar una cadena en otra
En la versin 6 de Visual Basic se incorpor una funcin muy til llamada
InStrRev que realiza la misma funcin de InStr pero comenzando por el
final de la cadena. Por ejemplo:

Ejemplo de
InstrRev
Se quiere extraer el nombre de un archivo a partir de la ruta
completa:
Cadena = C: \ Mi s
Document os\ Li st ados\ J ugador es. dat
Posi ci n = I nSt r Rev( Cadena, \ ) esto da
Posi ci n = 27 donde encuentra \ desde la derecha.
Luego se extrae utilizando la funcin Right:
Ar chi vo = Ri ght ( Cadena, Len( cadena) Posi ci n)
Ar chi vo = J ugador es. dat extrae 13 caracteres desde
l a derecha.

CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 160

V.9.i i i . Reemplazar los caracteres de una cadena
La funcin Mid permite recuperar una parte de una cadena, como se mostr
en ejemplos anteriores. La misma palabra clave, Mid como sentencia puede
utilizarse para reemplazar una parte de una cadena.

Al tratarse de una instruccin NO DEVUELVE UN VALOR, como ocurre con
la funcin, realiza una ASI GNACI N. Su sintaxis:
Mid (cadena1, inicio [,longitud]) = cadena2
cadena1 es la cadena original en donde se va a reemplazar una subcadena
cadena2 desde la posicin inicio. El parmetro longitud es opcional, es la
cantidad de caracteres que sern reemplazados, si se omite se usan todos los
caracteres de la cadena2.

Ejemplo
de MID
Cadena = El per r o sal t a
Mi d( Cadena, 4, 5) = t i gr e

Mi d( Cadena, 4) = sapo
Mi d( Cadena, 4) = pj ar o
vuel a al t o
Asigna a una cadena un valor.
La cadena pasa a contener un
nuevo valor El tigre salta
El nuevo valor El sapoe
salta
El nuevo valor El pjaro
vuel

V.10. Funciones matemticas
La siguiente tabla muestra una lista con las principales funciones matemticas
provistas por el lenguaje.
Funcin
matemtica
Funcin en
Visual Basic
Funcin
matemtica
Funcin en
Visual Basic
Valor absoluto Abs(x) N aleatorio Rnd
Arco tangente Atn(x) Seno y coseno Sin(x), Cos(x)
Exponencial Exp(x) Tangente Tan(x)
Parte entera Int(x), Fix(x) Raz cuadrada Sqr(x)
Logaritmo Log(x) Signo (1, 0, -1) Sgn(x)
Redondeo Round(x, ndec)

Nota: no debe confundirse la funcin Mid con la instruccin Mid.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 161

Mg. Ing. Ftima Martnez
V.10.i . Nmeros aleatorios
Para generar nmeros aleatorios, Visual Basic incluye dos funciones: Rnd y
Randomize.
La funcin Rnd devuelve un nmero aleatorio. Su sintaxis: Rnd(nmero)
El parmetro nmero determina cmo Rnd genera un nmero aleatorio.
El valor devuelto por Rnd est dentro del rango 0-1 (con decimales) es decir,
es un valor superior o igual a 0, e inferior a 1: 0<= RND<1. Esto quiere decir
que nunca llegar a valer uno y que puede ser igual a cero.

Ejemplo
de Rnd
Si se hace:
X = Rnd * 6 El valor X nunca llegar a 6.
En la mayora de los casos suelen quitarse los decimales usando:
X = I NT( Rnd * 6) se obtendrn nmeros entre 0 y 5
Puede ser esta frmula:
X = I NT( Rnd * 6) + 1
En este caso los valores estarn entre 1 y 6.
Si deseamos obtener en un rango entre 65 y 90:
X = I NT( Rnd * 26) + 65
I nt ( Rnd * 26) producir un nmero entre el 0 y 25, al sumarle
65, estar en el rango deseado.
El problema de los nmeros aleatorios, es que no son tan aleatorios, es decir
cada vez que se inicia el programa produce el mismo nmero (Som G.; 1997).

Ejemplo
de Rnd
Si se hace:
Pr i vat e Sub For m_Pai nt
Pr i nt Rnd * 25
End Sub
Ejecutndolo varias veces se ver que siempre muestra el mismo
nmero: 1763869
Existe una forma de solucionar esta falta de "aleatoriedad" y es cambiando la
"semilla" que se usa como base para la generacin de nmeros aleatorios.
Para cualquier semilla inicial se genera la misma secuencia de nmeros, ya
que cada llamada a Rnd usa el nmero previo como semilla para el prximo
nmero en la secuencia. Por ese motivo, antes de usar la funcin Rnd se debe
utilizar Randomize (Birnios, op. cit., p. 198).
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 162


Semilla es el valor inicial utilizado para generar nmeros aleatorios
La funcin Randomize(Numero), inicia el generador aleatorio tomando como
dato de partida el Numero. Si se usa Randomize seguido de un nmero, y
ste no cambia antes de cada ejecucin, no se consigue nada.
En el ejemplo anterior se prueba escribiendo en el evento Load del formulario:
Randomi ze 5. Al ejecutarlo varias veces, muestra: 8. 143144 todas las veces.
El problema es que al usar un nmero "fijo" como semilla para la generacin
de nuevos nmeros, el nmero producido siempre es el mismo, esto est bien
para hacer pruebas fijas.
Si se omite el parmetro Nmero se usa como semilla la cantidad de segundos
transcurridos desde la medianoche. El VB proporciona una funcin que
devuelve el nmero de segundos transcurridos desde la media noche: TIMER.
Usando esta funcin como semilla se consiguen nmeros casi aleatorios.
En este caso se escribe Randomize Timer y ya no se produce el mi smo
nmero al ejecutarlo varias veces.
Se usa la funcin Randomize para obtener nmeros realmente aleatorios.
La funcin toma entonces la forma: Randomize
Devuelve el resultado en una variable llamada Rnd con un nmero
comprendido entre 0 y 1 (nunca ser 0 ni 1). Leyendo el valor de la variable
sucesivas veces, se puede obtener una sucesin de nmeros aleatorios (Surez
Bernaldo, L.; 1998)



Ejemplo de
Rnd y
Randomize
Generador de nmeros para la Lotera:
Pr i vat e Sub Command1_Cl i ck( )
Randomi ze
sin usar esta Funcin genera los mismos nmeros una y otra
vez
For i = 1 To 10
A = Rnd
A = Rnd * 100
A = CI nt ( A)
Do Whi l e A > 49
A = A - 49
Loop
Do Whi l e A < 1
A = A + 49
Loop
Nota: No es necesario ejecutar la instruccin Randomize cada vez
que se quiera obtener un dato de la variable Rnd.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 163

Mg. Ing. Ftima Martnez
Li st 1. AddI t emSt r ( A)
Next
End Sub




4) Ejercicio
Funciones Rnd y Randomize, Sqr y
Round
La aplicacin genera nmeros
aleatorios entre 1 y 10, o nmeros
al azar entre rangos
determinados por el usuario.
Calcula cualquier raz de un
nmero, presenta su resultado y
el mismo, redondeado en dos
decimales. Si el cuadro de texto
Raiz se encuentra vaco, Ejecutar
calcula la raz cuadrada de
Nmero.


El cdigo de los eventos
Option Explicit
Dim azar As Integer
Dim numero As Integer
Private Sub cmdAzar_Click()
azar = Int(10 * Rnd) + 1 ' Genera un nmero entre 1 y 10
txtUno = azar
End Sub
Private Sub cmdEjecutar_Click()
Dim raiz As Integer
If (txtRaiz <> "") And (txtNum <> "") Then
'Si no estn vacos Raz ni Nmero
raiz = CInt(txtRaiz) 'Transforma a entero
numero = CInt(txtNum)
'Calcula la raz del numero y lo muestra en el cuadro de texto
'Le da formato al nmero para presentarlo
txtResul = Format(numero ^ (1 / raiz), "#.00000")
'redondea el resultado y transforma en string
txtRedo = Str(Round((numero ^ (1 / raiz)), 2))
'Si solamente Raz esta vaco
ElseIf txtNum <> "" Then
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 164

numero = CInt(txtNum) 'Lo transforma en entero
'Calcula y presenta la raz cuadrada
txtCuadrada = Format(Sqr(numero), "#.00000")
'redondea al resultado y transforma en string
txtRedo = Str(Round(Sqr(numero), 2))
End If
'Presenta un mensaje para saber si contina con el clculo de las raices
If MsgBox("Calcula ms races?", vbInformation + vbYesNo, "Races") =
vbYes Then
'Si continua con el clculo
If raiz <> 0 Then 'Si calculo antes una raz cualquiera
'Borra el contenido de las cajas de texto
txtRaiz = ""
txtResul = ""
Else 'Si calculo antes raz cuadrada
txtCuadrada = ""
End If
'Borra el cont enido de las cajas de texto
txtNum = ""
txtRedo = ""
'Deja el foco en Numero para otro clculo
txtNum.SetFocus
Else
Unload Me 'Si no descarga el formulario
End If
End Sub
Private Sub cmdRango_Click()
Dim rangomenor As Integer
Dim rangomayor As Integer
rangomayor = CInt(txtRan2)
rangomenor = CInt(txtRan1)
'Genera nmeros aleatorios dentro de un rango
azar = Int((rangomayor - rangomenor + 1) * Rnd + rangomenor)
txtAzar = azar
End Sub
Private Sub Form_Activate()
cmdAzar.SetFocus
End Sub
Private Sub Form_Load()
Randomize
End Sub
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 165

Mg. Ing. Ftima Martnez
V.11. Funciones de formato
V.11.i . La funcin Format
Format es una funcin muy completa para determinar el formato especfico
5

de datos: numricos, cadenas de caracteres y fechas. Su sintaxis:
Format (expresin [,formato] )
El parmetro formato es opcional pero el ms importante, pues permite
definir la forma en que se adecua una expresin. Puede ser un nombre fijo
6
o
caracteres especiales que representan el formato definido por el usuario. Por
ejemplo para devolver un nmero con formato moneda (signo $ y dos
decimales a la derecha): Currency o $##.00, etc.

En la siguiente tabla se muestran los caracteres que es posible utilizar en el
parmetro formato.





V.11.i.1. Dar formato a fechas
Para presentar fechas y horas, se pueden usar palabras o caracteres
especiales. Por ejemplo mediante nombres :

Format
Cadena = Format( 20/ 08/ 1999,
Long Dat e)
Cadena = Format( 20: 52,
Long Ti me)
Cadena = Jueves 20 de
agosto de 1999
Cadena = 20:52:00 PM

5
Para saber ms acerca de esta funcin Vea la Ayudade Visual Basic.
6
Formatdispone de ms opciones. Para ms informacin, consulte en la WEB de Microsoft.
Smbolo Propsito Significado
0 Contenedor de dgitos
Muestra 0 si no hay ningn
dgito en ese lugar.
# Contenedor de dgitos
Muestra dgito existente en ese
lugar (si hay un dgito).
, Separador de decimales
Indica el lugar donde aparece la
coma decimal.
. Separador de miles
Indica el lugar donde aparecen
los separadores.
% Porcentajes
Indica dnde aparece el signo %
y multiplica por 100.
E-, E+, e-, e+ Notacin cientfica
Muestra un nmero en notacin
cientfica.
Nota: Si intenta dar formato a un nmero sin especificar formato,
Format proporciona una funcionalidad similar a la de la funcin Str.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 166

Por ejemplo mediante caracteres especiales:

Format
Cadena = Format( 20/ 08/ 1999,
d/ mmmm/ yy)
Cadena = Format( 19/ 8/ 99,
dddd, d mmmmyyyy)
Cadena = Format( 21: 01: 15,
Hh: Nn: S am/ pm)
Cadena = 20/Agosto/99

Cadena = Jueves, 19 de
Agosto 1999
Cadena= 09:01:15 pm
V.11.i.2. Dar formato a Cadenas
Tambin puede manejar y devolver cadenas pero su empleo no es
comn porque existen funciones especficas. Los dos caracteres mas
importantes:





Format
Cadena = Format( Hol a mundo, >)
Cadena = Format( Hol a Mundo, <)
Cadena = HOLA
MUNDO
Cadena = hola mundo
V.12. Manejo de fechas y horas
Visual Basic incorpora numerosas funciones que permiten trabajar con fechas y
realizar clculos. La tabla siguiente detalla las principales funciones de Fechas y
Horas.
Accin Funciones
Obtener fecha u hora actual Date, Now, Time
Ejecutar clculos DateAdd, DateDiff, DatePart
Establecer la fecha u hora Date, Time
Cronometrar procesos Timer
Obtener el nombre de algn da o mes WeekdayName, MonthName
Por ejemplo, suponiendo que la fecha de hoy sea 20/09/2007, para obtener la fecha
y hora en un formato especfico:

Format
Cadena = Dat e
Cadena = Ti me
Cadena = Now
Cadena = 20/09/2007
Cadena = 19:30:35
Cadena = 20/09/2007
19:30:35
Smbolo Significado
> Convierte una cadena a maysculas
< Convierte una cadena a minsculas
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 167

Mg. Ing. Ftima Martnez
Cadena = For mat ( Now, dd/ mm) Cadena = 20/09


V.12.i . Funcin DateDiff
Devuelve un valor de tipo Variant (Long) que especifica el nmero de
intervalos de tiempo entre dos fechas determinadas.
Sintaxis
7
:
DateDiff(intervalo, fecha1, fecha2[, primerdasemana[, primerasemanaao]])

Los argumentos:














El intervalo puede tomar alguno de los siguiente valores:

Intervalo Descripcin I ntervalo Descripcin
yyyy
Ao
w
Da de la semana
q
Trimestre
ww
Semana
m
Mes
h
Hora
y
Da del ao
n
Minuto
d
Da
s
Segundo

7
Para ms informacin vea la Ayuda del lenguaje.
Argumento Descripcin
intervalo
Requerido, intervalo de tiempo utilizado para calcular la
diferencia entre fecha1 y fecha2.
Fecha1, fecha2
Requerido; Variant (Date). Las dos fechas que se van
a utilizar en el clculo.
primerdasemana
Opcional. Constante que especifica el primer da de la
semana. Si no se especifica, se asume que es el
domingo.
primerasemanaao
Opcional. Constante que especifica el primer da de la
semana. Si no se especifica, se asume que es el
domingo.
Nota: La funcin Date devuelve la hora en el idioma del sistema, si
es castellano es dd/mm/aaaa, si es ingls es mm/dd/aaaa. Para
cambiarlo se tiene Format (Date, dd/mm/aaaa)
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 168



5) Ejercicio
Date, DateAdd y
DateDiff
La aplicacin calcula la
edad en cantidad de
das, meses y aos
utilizando la funcin
DateDif f .


El cdigo de los eventos
Option Explicit
Dim nac As Date
Private Sub cmdCalcula_Click()
Dim edad As Integer
lblEdad = ""
'Calcula edad en das
edad = DateDiff("d", txtNacimiento, Date)
If edad > 0 Then 'Si das no es cero
Select Case edad
Case 1 'Si tiene un da
lblEdad = CStr(edad) & "da"
Case 1 To 31 'Si tiene ms de un da
lblEdad = CStr(edad) & "das"
Case 31 To 365 'Si tiene ms de un mes
'Calcula edad en meses
edad = DateDiff("m", txtNacimiento, Date)
If edad = 1 Then 'Si tiene un mes
lblEdad = CStr(edad) & "mes"
ElseIf edad > 1 Then 'Si tiene ms meses
lblEdad = CStr(edad) & "meses"
End If
Case Is > 365 'Si tiene ms das que un ao
'Calcula edad en aos
edad = DateDiff("yyyy", txtNacimiento, Date)
If edad = 1 Then 'Si tiene un ao
lblEdad = CStr(edad) & "ao"
ElseIf edad > 1 Then 'Si tiene ms de un ao
lblEdad = CStr(edad) & "aos"
End If
End Select
Else
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 169

Mg. Ing. Ftima Martnez
'Si no tiene ni das
MsgBox "No has nacido?!", vbInformation, "No nato"
txtNacimiento = ""
End If
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub
Private Sub cmdFecha_Click()
'Agrega das a la fecha actual
lblNueva = Str(DateAdd("d", 7, Date)) 'Fecha en una semana
End Sub
Private Sub Form_Load()
nac = "20 / 6 / 1986" 'Asigna una fecha a la variable nac
lblFecha = Date 'Asigna la fecha del sistema
txtNacimiento = Format(nac, "dd/mm/yyyy")
End Sub
Private Sub Form_Paint()
cmdCalcula.SetFocus
End Sub
V.12.i i . Funcin DateAdd
Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha
agregado un intervalo de tiempo especi ficado.
Sintaxis
8
: DateAdd(intervalo, nmero, fecha)
Parte Descripcin
intervalo Requerido. Expresin de tipo cadena (String) que contiene el
intervalo de tiempo que se desea agregar.
nmero Requerido. Expresin numrica con el nmero de intervalos que se
desea agregar. Puede ser positiva (para obtener fechas futuras)
o negativa (para obtener fechas pasadas).
fecha Requerido. Valor de tipo Variant (Date) o literal que representa
la fecha en la que se agreg el intervalo.


8
Consulte la Ayuda en Visual Basic.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 170


6) Ejercicio
DateAdd
La aplicacin calcula una fecha
anterior a la que se ingresa en
tiempo de ejecucin.


Cdigo del evento Click del botn Obtener Fecha:
Private Sub cmdCalcula_Click()
Dim Fecha1 As Date
Dim Fecha2 As Date
'Convierte a fecha el dato ingresado
Fecha1 = CDate(txtFech1)
'Calcula la fecha del da anterior
Fecha2 = DateAdd("d", -1, Fecha1) 'Agrega un valor negativo
txtFech2 = CStr(Fecha2) 'Transforma en string una fecha
End Sub
V.12.i i i . Sentencias Date y Time
Existen dos sentencias llamadas igual que las funciones Date y Time para
establecer una fecha y hora especfica. Su sintaxis es:
Date = fecha Time = hora
fecha y hora son los nuevos valores para la fecha y hora del sistema.

Dat e = 31/ 08/ 2007
Ti me = 23: 58: 58
Cambia la fecha del sistema.
Cambia la hora del sistema.
V.13. Presentar mensajes
Existen dos funciones llamadas InputBox y MsgBox. La primera muestra
ventanas en las que se espera con una leyenda y se espera que el usuario ingrese
algn tipo de texto que sirve para continuar con la aplicacin. La segunda se
utiliza para mostrar un mensaje al usuario ya sea de error, aviso o de cualquier
otro tipo y esperar a que presione un botn.
En ambos cuadros pueden modificarse diferentes elementos como el ttulo, el
icono, los mensajes de los botones, la cantidad de botones, sus funciones y otras
caractersticas.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 171

Mg. Ing. Ftima Martnez
V.13.i . La funcin MsgBox
Se utiliza para mostrar una informacin al usuario en un cuadro de dilogo,
empleado muy a menudo en el tratamiento de errores para presentar al
usuario una falla que se haya cometido, un error causado. Pero tambin para
informar al usuario sobre un acontecimiento que se ha generado que no sea un
error sino que por ejemplo se ha llegado al final de un procedimiento.
Este tipo de ventana consta de un titulo en la parte superior de la pantalla.
Carece de men de control y solo dispone del botn cerrar ya que no se puede
modificar su tamao. En la parte izquierda de la ventana suele aparecer un
icono, el cual ayuda a identificar de qu tipo es el mensaje. El mensaje
aparece en el centro de la ventana. En la parte inferior aparecen los diferentes
botones. Pueden aparecer 1, 2 o 3 botones con diferente texto en su interior.
Su sintaxis:
MsgBox(texto [,botones] [,ttulo] [,ayuda, contexto])
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga
clic en un botn y devuelve un tipo I nteger correspondiente al botn elegido
por el usuario
9
.
Donde texto es una variable o una cadena de texto que representar el
mensaje escrito que desea que el usuario lea.
Botones es opcional
10
y son un conjunto de caractersticas que puede tener el
cuadro de mensaje ya sea que tenga botn de Aceptar, Cancelar, Ayuda o que
tenga un icono a su lado como el signo de exclamacin o un icono crtico, si se
omite el estilo predeterminado no se mostrarn iconos y ser vbOkOnly que
significa que slo se presentar el botn Aceptar. Los estilos de cuadros de
mensaje se pueden observar si coloca la palabra vbMsgBoxStyle en el
Examinador de objetos.
Titulo tambin es una variable o una cadena de texto que aparecer en el
ttulo del cuadro de mensaje.



Ejemplo
de
MsgBox
En este programa se utiliza un cuadro de mensaje para Advertir
al usuario si quiere salir de la aplicacin:
Pri vate Sub Command1_Cl i ck( )
Di mRespuest a as I nt eger
Respuesta = MsgBox( "Desea sal i r de l a
apl i caci n?", vbCri ti cal + vbYesNo,
"Cerrar")
I f Respuest a = vbYes Then
Unl oad Me

9
Para ms informacin consulte la Ayuda de Visual Basic.
10
Vea en la Ayuda de Visual Basic en constantes de MsgBox.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 172

End I f
End Sub

Mediante un MsgBox se puede saber cul botn pulsa el usuario. Cada uno de
los diferentes botones tiene un valor que se almacenar en una variable con la
que despus podremos trabajar.

En el caso del MsgBox anterior se mostrar un
mensaje como el siguiente con un icono del signo
crtico y dos botones Si y No.
Si hace clic sobre Si, cierra dicho mensaje y detiene
la ejecucin para salir del programa. En cambio si
hace clic en No cierra el cuadro y contina la
aplicacin.

Tambin hay MsgBox que no interesa saber cul botn ha pulsado el usuario
con lo que no hace falta almacenar el valor del botn en ninguna variable, este
puede ser el caso de un mensaje de error en el que solo aparecer un botn
para cerrar el cuadro de mensaje.
La sintaxis general de esta instruccin:
MsgBox Mensaje [, Botones e iconos][, Ttulo]
Las partes entre corchete son opcionales. El mensaje es la nica opcin
obligatoria que deberemos poner en un MsgBox.
Si no se desea saber cul botn ha pul sado el usuari o de l a aplicacin se
escribe la instruccin como se indica en la sintaxis anterior. En cambio si se
desea conocer cul es botn pulsado y actuar en consecuencias se debe
almacenar en una variable el valor que se genera al pulsar dicho botn,
entonces se modifica la sintaxis de esta forma:
Valor = MsgBox (Mensaje [, Botones e iconos][, Ttulo])
Aqu los parntesis engloban a todas las opciones del MsgBox.
Valor: ser la variable en la que se almacenar el valor del botn pulsado en el
mensaje.


7) Ejercicio
MsgBox
En la aplicacin el botn Insertar
muestra una caja de mensaje con tres
botones [S], [No], [Cancelar]. Depende
del valor devuelto por cada botn se
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 173

Mg. Ing. Ftima Martnez
realizar una tarea.

Si el botn seleccionado es Cancelar
cierra la caja de mensaje y finaliza con
la ejecucin. Si presiona el botn SI se
inserta a la lista el nombre ingresado
en la caja de texto. Si selecciona el
botn NO muestra la siguiente caja de
mensaje:

Esta solamente tiene el botn
[Aceptar]. En este caso no se desea
saber cul es el botn seleccionado.
La caja de mensaje del MsgBox con
los tres botones:


Cdigo del evento Click del botn Insertar:
Option Explicit
Dim respuesta As String
'Declara constantes a utilizar con los valores que asigna VB a cada botn
' vbYes = 6, vbNo = 7, vbCancel =2
Const SI = 6, NO = 7, CANCEL = 2
Private Sub cmdInsertar_Click()
'respuesta = MsgBox("Seguro que deseas aadir un nombre a la lista?",
vbQuestion + vbYesNoCancel + vbAppl i cati onModal, "Pregunta")
'Las constantes se reemplazan por los valores que devuelven cada una
'vbQuestion = 32, vbYesNoCancel = 3, vbApplicationModal=0
respuesta = MsgBox("Seguro que deseas aadir un nombre a la lista?", 32
+ 3 + 0, "Pregunta")
Select Case respuesta
Case SI
lista.AddItem texto
Case NO
'No lo asigna a ninguna variable pues no interesa su valor devuelto
MsgBox "No se aadir texto a la lista", 0, "Mensaje"
Case CANCEL
Unload Me
Exit Sub
End Select
texto = "" 'Borra el contenido
texto.SetFocus 'Vuelve el foco al cuadro de texto Nombre
End Sub
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 174

Private Sub Form_Activate()
texto = ""
texto.SetFocus 'Esto nicamente en el evento Activate
End Sub
V.13.i i . La funcin InputBox
Estas cajas de entrada se utilizan tambin para dar mensajes, pero en este
caso se introduce un dato que se guardar en una variable
11
.
En un InputBox slo se puede modificar el texto que aparece en el mensaje, el
ttulo de la ventana de mensaje, si se desea que aparezca algn texto como
predeterminado y la posicin de la pantalla en la que aparecer dicha
ventana.
Su sintaxis:
Variable = InputBox (leyenda [,Titulo] [,texto] [,x] [,y] [,ayuda, contexto])
Al utilizar este tipo de ventana el contenido del cuadro de mensaje se asigna a
una variable donde se almacenar lo que el usuario escriba dentro del
InputBox.
Variable es el nombre de una variable a la que se le asignar el valor o cadena
introducida en la caja de entrada; leyenda es el valor o cadena que presentar
el mensaje al usuario; Ttulo es opcional y presenta el ttulo de la caja de
entrada; texto tambin es opcional y es el valor o cadena que aparecer por
defecto en la caja de entrada, si se omite no aparecer nada por defecto; (x, y)
son las distancias horizontal y vertical en twips entre el cuadro de mensaje y
la pantalla.
Si el usuario pulsa [Aceptar] , el contenido del cuadro de texto pasara a l a
variable asignada para este efecto, mientras que si el usuario pulsa en
[Cancel ar] no se aade nada a variable.


Ejemplo de InputBox
Muestra en una
etiqueta del
formulario el pas de
origen ingresado en
la caja de entrada.
Pri vate Sub Form_Load( )
Text o = " Ar gent i na"
t i t ul o = "Pa s"
Mensaj e = " I ngr ese el pa s de
or i gen"
Cadena = I nputBox( Mensaj e, t i t ul o,
Text o)
Label 1 = Cadena
End Sub

11
Consulte la Ayuda de Visual Basic.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 175

Mg. Ing. Ftima Martnez





8) Ejercicio
InputBox
La aplicacin usa la funcin
InputBox que al abrir una
ventana con una caja de texto
nos permite ingresar nombre y
contrasea. Adems de dar el
acceso con un saludo despliega
una imagen en un control Image;
en caso de no ser la contrasea
o el nombre del usuario el
indicado, niega el acceso.
El primer InputBox solicita el
nombre al usuario




El segundo InputBox solicita la
contrasea.


El cdigo del evento click del Botn Ingrese al Sistema:
Option Explicit
Dim nombreusuario As String
Dim contrasea As String
Private Sub cmdIngreso_Click()
nombreusuario = UCase(InputBox("Introduzca su Nombre:", "Confirma
acceso"))
contrasea = InputBox("Introduzca CONTRASEA", "Confirma acceso")
If nombreusuario = "FATIMA" And LCase(contrasea) = "secreto" Then
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 176

MsgBox "BIENVENIDA " & nombreusuario & " AL SISTEMA! " & vbCrLf &
"Preparada para trabajar con tu PC?", , "Acceso Permitido"
Image1.Visible = True
ElseIf nombreusuario = "CECILIA" And LCase(contrasea) = "duende" Then
MsgBox "BIENVENIDA " & nombreusuario & "!" & vbCrLf & "A trabajar no te
duermas!", , "Acceso Permitido"
Image2.Visible = True
Else
Image1.Visible = False
Image2.Visible = False
MsgBox "ACCESO DENEGADO!!", , "DESCONOCIDO"
End If
End Sub
V.13.i i i . Cambiar la posicin del InputBox
Es posible indicar la posicin de la ventana de InputBox en la pantalla. Si no
se indica aparecer en el centro de la pantalla, pero puede suceder que oculte
algn dato importante del formulario con el que se trabaja, para ello es til
indicar en que lugar de la pantalla se quiere que aparezca.
El primer valor a introducir es la distancia entre el borde izquierdo de la
pantalla y el borde izquierdo del InputBox. El segundo valor es la distancia
entre la parte superior de la pantalla y el borde superior del borde del
InputBox. Por ejemplo:


Ejemplo de
InputBox donde se
indica su posicin
en la pantalla
Nuevo = I nputBox( Escr i be un t ext o par a
aadi r , Text o nuevo, Text o,
3000, 1500)
En esta estructura se utilizan 5 parmetros
diferentes: leyenda, ttulo de la ventana, texto
predifinido, X, Y.
Si no se quiere que aparezca el texto predefinido pero en cambio se desea que
el InputBox aparezca en un lugar determinado de la pantalla, slo deber
hacerse como si estuviera el parmetro que se quita respetando as la
cantidad de comas que existen dentro del InputBox con todos los parmetros
escritos. Por ejemplo:
Nuevo = I nputBox( Escr i be un t ext o par a aadi r , Text o
nuevo, , 3000, 1500)
Donde estaba Texto (el texto predefinido en el InputBox) exi sten dos comas.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 177

Mg. Ing. Ftima Martnez
V.14. Grficos en Visual Basic
Visual Basic 6.0 tiene grandes posibilidades grficas en lo que se refiere a dibujo
de lneas y formas geomtricas, as como en lo referente a la introduccin de
grficos y figuras realizadas con otras aplicaciones (Garca de J aln, J . y otros; 1999:
69).
V.14.i . Tratamiento del Color
Los colores de Visual Basic se definen por medio de las componentes
fundamentales RGB (Red, Green and Blue). La intensidad de cada color
fundamental se define con un byte, es decir con un nmero entero entre 0 y
255 (el cero es 00 y el 255 es FF). Se utilizan tres bytes para definir los tres
colores. Visual Basic 6.0 utiliza un entero long (32 bits, 4 bytes) para guardar
un color, lo cual quiere decir que existe un byte adicional donde se podr
guardar alguna otra informacin.
El nmero que indica el color va precedido por el carcter & y la letra H.
As, el color verde se define en la forma: &H00FF00. Con esta notacin es
posible prescindir de los ceros situados a la izquierda. Por ejemplo, el color
rojo se puede escribir como &H0000FF y como &HFF.
V.14.i i . Funcin RGB
Esta funcin devuelve un nmero que representa un color a partir de tres
argumentos enteros entre 0 y 255, que son sus componentes RGB. Como
ejemplo de uso: f or m1. BackCol or = RGB( 127, 127, 64)
Si alguno de los argumentos tiene un valor mayor que 255, se toma como 255.
V.15. Mtodos Grficos
Como se mencion anteriormente, slo en los formularios y en los PictureBox
pueden introducirse otros tipos de controles. Adems es posible escribir texto y
dibujar formas como: puntos, lneas, crculos, elipses, arcos, cuadrados o
rectngulos, directamente sobre ellos por medio de ciertos mtodos de Visual
Basic. Por defecto estos mtodos actan sobre el formulario activo. Si se desea
que acten sobre un control PictureBox hay que precederlos por el nombre del
control y el operador punto.
V.15.i . Puntos
El mtodo PSet sirve para dibujar puntos en un formulario o en un control
PictureBox. Su forma general es la siguiente:
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 178

Objeto.Pset [Step] (x, y), [color]
Donde Objeto es el nombre del Cuadro de Imagen, de un formulario, es
opcional, si se omite se har referencia al formulario actual (activo).
X, Y son las coordenadas donde se colocar el punto. Estos puntos tienen un
tamao de un pxel.
Color es opcional, es un nombre de color (vbRed, vbBlue, etc.) o un long
conteniendo el cdigo de color hexadecimal (puede ser el valor de retorno de la
funcin RGB). Si se omite, se utiliza la propiedad ForeColor del objeto en el
que se dibuja.
Step: Opcional, especifica que las coordenadas son relativas a la posicin
grfica actual especificada por las propiedades CurrentX y CurrentY.
Propiedades
12
importantes

Para borrar un nico pxel con el mtodo PSet, especifique las coordenadas del
pxel y utilice el valor de la propiedad BackColor como argumento de color.


Ejemplo de Pset
For m1. PSet ( 3500, 3000) , vbBl ack
Dibuja un punto en la posicin 3500,3000 del formulario
en color negro.
Las propiedades CurrentX y CurrentY en ese momento
toman el valor: 3500 y 3000 respectivamente.

12
Para ms informacin sobre estas propiedades consulte la Ayuda de VB.
DrawWidth El tamao del punto dibujado depende de su valor.
DrawWidth = 1 PSet establece un nico pxel al color especificado.
DrawWidth > 1 El punto se centra en las coordenadas especificadas.
DrawMode Devuelve o establece un valor que determina la
apariencia del resultado de un mtodo grfico o la
apariencia de un control Shape o Line, por ejemplo: 1
Negro; 6 Inverso del color de presentacin; 16
Blanco.
CurrentX y CurrentY Sus valores se establecen al punto especificado por los
argumentos.
DrawStyle Devuelve o establece un valor que determina el estilo de
lnea del resultado de mtodos grficos: 0 Slido, 1
Raya, 2 Punto,
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 179

Mg. Ing. Ftima Martnez
V.15.i i . Lneas
El mtodo Line dibuja lneas y en ciertas condiciones cajas rectangulares de
lados horizontales y verticales. Su forma general es la siguiente:
Objeto.Line (X1,Y1)-(X2,Y2), [color]
Donde X1 y Y1 (opcionales) son las coordenadas del punto inicial. Si se omiten
la lnea comienza en las coordenadas definidas por CurrentX y CurrentY.
X2 y Y2, obligadas, son las coordenadas las del punto final; el color es
opcional.


9) Ejercicio
Mtodo Line
Aplicacin que dibuja un
tringulo mediante el mtodo
Line

Cdigo del Evento Click del botn Triangulo
Private Sub cmdTriangulo_Click()
' Establece la coordenada del punto inicial.
CurrentX = 1500
CurrentY = 500
' Dibuja una lnea hacia abajo y a la derecha del punto inicial.
Form1.Line -(3000, 2000)
' Dibuja una lnea hacia la izquierda del punto actual.
Form1.Line -(1500, 2000)
' Dibuja una lnea hacia arriba y a la derecha del punto actual.
Form1.Line -(1500, 500)
End Sub
Private Sub Form_Paint()
Form1.DrawWidth = 3
End Sub
V.15.i i i . Sistemas de Coordenadas
Posicin y dimensiones del formulario vienen dadas por las propiedades: Top,
Left, Height y Width, se miden a partir de la esquina superior izquierda y
siempre se definen en twips.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 180

Sin embargo, el formulario puede tener su propio sistema de coordenadas
interno, definido por las propiedades: ScaleTop, ScaleLeft, ScaleHeight y
ScaleWidth, para lo cual su propiedad ScaleMode debe estar puesta a cero.
ScaleTop y ScaleLeft determinan las coordenadas de la esquina superior
izquierda en el propio sistema de coordenadas.
ScaleHeight y ScaleWidth determinan su anchura y altura en dichas
coordenadas.
En realidad estas propiedades determinan indirectamente la posicin del
origen de coordenadas y la escala y orientacin de los ejes.
Si ScaleHeight es positiva el eje de ordenadas va hacia abajo, mientras
que si es negativa estar orientado hacia arriba.
Si ScaleWidth es positiva el eje de abscisas va hacia la derecha, y si es
negativa hacia la izquierda.
En la siguiente figura se muestra la pantalla y un formulario.

V.15.i v. Mtodo Scale
El mtodo Scale permite establecer las cuatro propiedades: ScaleTop,
ScaleLeft, ScaleHeight y ScaleWidth conjuntamente. Slo los formularios
y los controles PictureBox pueden tener ests propiedades.
Su forma general es: objecto.Scale (x1, y1) - (x2, y2)
Objecto es el nombre del control PictureBox o Formulario (si se omite, el
mtodo se aplica al formulario activo).
Las coordenadas (x1, y1) son las coordenadas del vrtice superior izquierdo
del formulario o PictureBox, mientras que (x2, y2) corresponden al vrtice
inferior derecho.


pctCaj a. Scal e ( - 100, 100) - (100, - 100)
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 181

Mg. Ing. Ftima Martnez

Ejemplo del
mtodo Scale

Establece unos ejes en el centro de la caja de
Imagen, tal como puede verse en la figura.

Este mtodo equivale establecer las cuatro propiedades siguientes:
pctCaja.scaleTop = 100
pctCaja.scaleLeft = -100
pctCaja.scaleHeight = -100
pctCaja.scaleWidth = 100



10) Ejercicio
Dibuja Estrella
La aplicacin dibuja
lneas que salen del
centro de coordenadas
de un PictureBox


Cdigo de los eventos click de cada botn de comando
Option Explicit
Dim X As Long, Y As Long
Dim coordenada As String
Private Sub cmdDibuja_Click()
'Determina el punto medio del control PictureBox
X = Monitor.ScaleWidth \ 2
Y = Monitor.ScaleHeight \ 2
Monitor.DrawWidth = 3 'Grueso del lpiz en 3
Monitor.PSet (X, -Y), vbBlue 'Dibuja un punto en la coordenada 2500,1000
Monitor.DrawWidth = 2 'Baja el grueso del lpiz a 2
'Dibuja desde el punto una lnea hacia la coordenada 1500,100
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 182

Monitor.Line -(1500, -Y)
'Dibuja desde la mitad 1000 a la derecha y 50 arriba
Monitor.Line (X, -Y)-Step(1000, 50), vbRed
'Dibuja desde la mitad 1000 a la derecha y 50 abajo
Monitor.Line (X, -Y)-Step(1000, -50), vbRed
'Dibuja desde la mitad 1000 a la izquierda y 50 arriba
Monitor.Line (X, -Y)-Step(-1000, 50)
'Dibuja desde la mitad 1000 a la izquierda y 50 abajo
Monitor.Line (X, -Y)-Step(-1000, -50)
'Dibuja desde la mitad 1000 a la izquierda
Monitor.Line (X, -Y)-Step(1000, 0), vbRed
Monitor.Line (X, -Y)-Step(0, -50), vbRed 'Dibuja desde la mitad 50 abajo
Monitor.Line (X, -Y)-Step(0, 50) 'Dibuja desde la mitad 50 arriba
End Sub
Private Sub cmdEscribe_Click()
Dim i As Integer, j As Integer
For i = 1500 To 3500 Step 1000
For j = 50 To 150 Step 50
'Establece las nuevas coordenadas para escribir
Monitor.CurrentX = i
Monitor.CurrentY = j
coordenada = Str(i) & "," & Str(j)
Monitor.Print coordenada
Next j
Next i
End Sub
Private Sub Command1_Click()
lblAncho = Monitor.ScaleWidth \ 2
lblAlto = Monitor.ScaleHeight \ 2
End Sub
Private Sub Form_Load()
'Establece la nueva escala dentro del PictureBox
Monitor.Scale (0, 200)-(5000, 0)
End Sub
V.15.v. Crculos, Elipses y arcos
El mtodo Circle permite dibujar circunferencias, elipses y arcos.
Para los CRCULOS, su forma es la siguiente:
objeto.Circle (x, y), radio, [color]
X, Y, obligatorias, son las coordenadas del centro del crculo, radio el tamao
del radio y el color es opcional.
Para las ELIPSES:
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 183

Mg. Ing. Ftima Martnez
objeto.Circle (x, y), radio, [color, inicio, fin, aspecto]
Donde radio es la di stancia ms grande de la elipse.
inicio y fin se colocan si se desea realizar slo un arco.
aspecto es la relacin o proporcin de la distancia vertical con respecto a la
horizontal, los valores mayores a uno dibujan elipses alargadas verticalmente,
mientras que los valores entre cero y uno dibujan elipses alargadas
horizontalmente. No se aceptan valores negativos.
Para las ARCOS:
objeto.Circle (x, y), radio, [color, inicio, fin, aspecto]
Donde inicio y fin son los ngulos de inicio y fin del arco en radianes y aspecto
es opcional y se coloca si desea dibujar el arco de una elipse.
V.15.vi . Cuadrados y Rectngulos
Se realizan mediante el mtodo Line:
objeto.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F]
Donde las coordenadas X, Y son las coordenadas de la esquina superior
izquierda. Si desea rellenar el cuadrado, debe cambiar B por BF.

11) Ejercicio:
El siguiente programa dibuja en un
control PictureBox mediante los
diferentes mtodos grficos
explicados anteriormente. Para ello
se agrega al formulario un control
PictureBox y 4 botones de comando:
cmdBorra, cmdLinea, cmdRectan,
cmdCirculo


Cdigo de los eventos click de cada botn de comando
Private Sub cmdBorra_Click()
'Limpia caja de imagen
Monitor.Refresh
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 184

End Sub
Private Sub cmdCirculo_Click()
Const Pi = 3.1415927
'Dibuja un crculo rojo
Monitor.Circle (3000, 800), 300, vbRed
' Dibuja un arco negro
Monitor.Circle (2500, 2500), 700, vbBlack, Pi / 2, Pi
End Sub
Private Sub cmdLinea_Click()
Monitor.Line (200, 400)-(900, 700), vbBlack
Monitor.Line (2500, 500)-(1000, 2500), vbGreen
End Sub
Private Sub cmdRectan_Click()
Monitor.Line (200, 400)-Step(700, 300), , B
'Rellena el rectngulo de amarillo
Monitor.Line (1000, 2000)-Step(1000, 1000), vbYellow, BF
'Dibuja un rectngulo alrededor sin relleno en color negro
Monitor.Line (1000, 2000)-Step(1000, 1000), vbBlack, B
End Sub
V.15.vi i . Texto. Mtodo Print
En tiempo de ejecucin se puede escribir texto en un formulario o en un
control PictureBox por medio del mtodo Print.
Sintaxis: objeto.Print [listasalida]
Listasalida es opcional, si se omite, se imprimir una lnea en blanco. Tiene la
sintaxis y los componentes siguientes:
{Spc(n) | Tab(n)} expresin, posicincarcter
Spc(n): Opcional. Se utiliza para insertar caracteres de espacio en la
salida, donde n es el nmero de espacios que se vana insertar.
Tab(n): Opcional. Se utiliza para situar el punto de insercin en un
nmero de columna absoluto, donde n es el nmero de columna. Utilice
Tab sin argumentos para situar el punto de insercin al principio de la
siguiente zona de impresin (comienza cada 14 columna).
Expresin: Opcional. Expresin numrica o de cadena de caracteres que
se va a imprimir.
Posicincaracter: Opcional. Especifica el punto de insercin del carcter
siguiente. Utilice un punto y coma (;) para situar el punto de insercin
inmediatamente a continuacin del ltimo carcter mostrado. Utilice
Tab(n) para situar el punto de insercin en un nmero de columna
absoluto, o Tab sin argumentos para situarlo al principio de la siguiente
zona de impresin. Si se omite posicincarcter, el carcter siguiente se
imprimir en la lnea siguiente
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 185

Mg. Ing. Ftima Martnez
Para establecer el lugar donde se colocar el texto se utilizan las instrucciones
Objeto.CurrentX y Objeto.CurrentY

Ejemplo de Print
Obj et o. Cur r ent X = Coor denadaX
Obj et o. Cur r ent Y = Coor denadaY
Obj et o. Pr i nt " Escr i ba t ext o"




12) Ejercicio
Mtodo Print

Cdigo del evento Load del formulario
Private Sub Form_Load()
'Propiedad Autoredraw en True
Dim distan As Single
Dim n As Integer
distan = -200.45
n = 40
Print "La distancia es "; distan; " km"
Print 'deja una lnea en blanco
Print 123, 456, "San", "Sebastian"
Print -123; -456; Tab(n); "Separa con ;"
Print -123, 456, Tab(n); "Separa con ,"
Print 123, -456
'Igual separacin que con la coma
Print 123; Tab; 456; Tab(n); "Separa con Tab"
Print
'Separa 3 lugares antes de escribir
Print 123; Spc(3); 456; Tab(n); "Separa con Spc(3)"
'Lleva el punto de insercin a la columna 10
Print 123; Tab(10); 456; Tab(n); "Separa con Tab(10)"
Print Tab(15); -456; Tab(25); 456; Tab(n); "El 1 -- Tab(15) El 2 -- Tab(25)"
End Sub

Nota: la coordenada Y se mide de arriba hacia abajo, tal como los
formularios.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 186

V.15.vi i i . Mtodo Cls
Borra los grficos y el texto generados en tiempo de ejecucin de los controles
Form o PictureBox por instrucciones grficas y de impresin.
Sintaxis: objeto.Cls
Si se omite objeto, se supone que el objeto es el control Form que tenga el
enfoque.

V.15.i x. Propiedad AutoRedraw
La propiedad AutoRedraw (redibujado) es importante cuando se trabaja con
los siguientes mtodos grficos: Circle, Cls, Line, Point, Print y PSet. Al
establecer su valor a True, el resultado de estos mtodos se vuelve a dibujar
automticamente en un objeto Form o en un control PictureBox cuando, por
ejemplo, el objeto cambia de tamao o se vuelve a presentar despus de haber
estado oculto por otro objeto.
Sintaxis
13
: objeto.AutoRedraw [= booleano]
Donde objeto es cualquier objeto, en general un formulario o un PictureBox.
Booleano es una expresin que especifica la forma en que se vuelve a dibujar
objeto:
True: Activa el redibujado automtico de un objeto Form o un control
PictureBox. Los grficos y el texto se escriben en la pantalla y en
una imagen almacenada en memoria. El objeto no recibe eventos
Paint; se vuelve a dibujar cuando es necesario, usando la imagen
almacenada en memoria.
False: (Predeterminado) Desactiva el redibujado automtico de un
objeto y escribe los grficos o el texto solamente en la pantalla.
Visual Basic invoca el evento Paint del objeto cuando se necesita
volver a dibujar dicho objeto. En este caso el mtodo Print no
dibujar encima de los controles grficos como los controles I mage y
Shape.


13
Para ms informacin acerca de esta propiedad consulte la Ayuda de Visual Basic.
Nota:. Si establece la propiedad AutoRedraw de un formulario a
False y despus minimiza el formulario, las propiedades
ScaleHeight y ScaleWidth se establecen de acuerdo con el tamao
del icono. Cuando AutoRedraw tiene el valor True, ScaleHeight y
ScaleWidth conservan el tamao de la ventana restaurada
Nota: Despus de llamar a Cls, las propiedades CurrentX y CurrentY del
objeto se restablecen a 0.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 187

Mg. Ing. Ftima Martnez



13) Ejercicio
Mtodo Line y Print - Escalas
La aplicacin dibuja un cuadrado y un
texto dentro del mismo.
La propiedad Autoredraw debe
estar en True para poder dibujar en
el Form y que al minimizar o repintar
la ventana el dibujo no se pierda.
Para trabajar ms cmodos con el
tema de las escalas, se debe tener en
cuenta de utilizar el modo de escala
en pixeles, indicndole al Form
mediante la constante VbPixels de la
propiedad ScaleMode.

Cdigo de los eventos
Private Sub Command1_Click()
Dim Color_Borde As Long
With Me
' borra todo
Me.Cls
.AutoRedraw = True
' Escala del form en pixeles para que sea mas cmodo trabajar
.ScaleMode = vbPixels
.DrawWidth = CInt(Rnd * 20) + 1 'grosor de la linea
' color aleatorio para el rectngulo
Color_Borde = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
'Parametros '(X1 , y1) (X2 , Y2)
'B indica que se va a dibujar un recuadro o rectngulo sin relleno.
Me.Line (50, 50)-(200, 200), Color_Borde, B
'Establece las cordenadas donde dibujar el texto
.CurrentX = 80
.CurrentY = 110
' color aleatorio para el texto
Me.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
' imprime el texto
Me.Print "Hola mundo "
End With
End Sub
Private Sub Form_Load()
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 188

Randomize
With Me
' Aplicamos algunas propiedades al formulario
.FontSize = 12
.FontBold = True
.AutoRedraw = True
End With
End Sub
V.15.x. Propiedad DrawMode
Esta propiedad es importante al momento de realizar acciones con los mtodos
grficos. Admite 16 posibles valores del 1 al 16. La opcin por defecto es la
nmero
14
13: Copy Pen dibuja con el color de la propiedad ForeColor del
formulario. En ocasiones esto no es lo ms adecuado, sobre todo si se
superponen dos figuras del mismo color o si se dibuja con el BackColor los
grficos resultan indistinguibles (Garca de J aln, J . y otros; 1999: 79).
Para entender mejor cmo funciona esta propiedad es necesario aclarar los
conceptos de colores complementarios. Estos son los que se obtienen de restar
un color al color blanco. Por ejemplo el color complementario del rojo
&H0000FF& es el cyan &HFFFF00&. Sumados ambos dan el blanco:
&HFFFFFF&.
V.15.xi . Propiedad ClipControls
Por defecto esta propiedad est en True en los formularios y PictureBox. De
esta manera los controles estn siempre por encima de la salida de los
mtodos grficos, por lo que una lnea nunca se dibujar sobre un botn o una
caja de texto. Es decir los controles estn en primer plano (plano frontal o
intermedio) (Garca de J aln, J . y otros; 1999: 81).
Cuando se pone ClipControls = False se produce una doble situacin:
Los mtodos grficos situados en un evento Saint siempre se dibujan en
el plano de fondo y por tanto respentan los controles.
Los mtodos grficos situados fuera de un evento Saint se dibjan sobre
cualquier elemento que est en la pantalla, incluidos los controles.


14
La explicacin de los distintos valores de esta propiedad se obtiene de la Ayuda.
PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 189

Mg. Ing. Ftima Martnez

14) Ejercicio
Mtodo Line
Propiedades ClipControls -
DrawMode

Cdigo del evento Click del botn Dibujar
Private Sub cmdDibu_Click()
'Propiedad ClipControl determina si se dibuja por detrs o encima de los controles
'Propiedad DrawMode determina el color de la lnea es igual o contrasta con el
fondo
'Form1.ClipControls = False dibuja encima de los controles
'DrawMode = 6: Invert color complementario al color de fondo del formulario
Form1.Line (-50, -50)-(50, 50) 'Dibuja lneas
Form1.DrawMode = 16 'Pluma blanca
Form1.Line (-50, 50)-(50, -50)
End Sub
Private Sub Form_Load()
Form1.BackColor = &HFF0000 'Color Azul de fondo
Form1.Scale (-100, 100)-(100, -100) 'Establece los ejes de coordenadas
Form1.CurrentX = 0 'Establece el punto en el centro de coordenadas
Form1.CurrentY = 0
End Sub
V.16. Ejercicios Propuestos
Eje. 1) Realiza un programa que genere un nmero entre uno y cien y trata
de adivinarlo. Considera lo siguiente: si el nmero que dices es
mayor o menor al generado, el programa deber avisar y cuando
aciertes que lo comunique con un mensaje y termine el programa.
Eje. 2) Modifica el programa anterior. Considera lo siguiente:
a) Comprueba que el nmero introducido en un InputBox est entre 1
y 100, en caso de que no ser as, vuelve a preguntar.
b) Si se escribe CERO muestra el nmero que el programa haba
"pensado" y terminar.
c) Cuando aciertes que indique en cuantos intentos lo has conseguido.
CAPITULO V: FUNDAMENTOS DEL LENGUAJ E Mg. Ing. Ftima Martnez

Pgina 190

Eje. 3) Realiza un programa en el cual el usuario piense un nmero del 1 al
100 y el VB intente adivinarlo, para ello la aplicacin mostrar un
nmero y el usuario indicar si lo ha acertado.
Eje. 4) Modifica el anterior, indicndole si el nmero es Menor, Mayor o es
correcto. muestre tambin el nmero de intentos que le ha llevado
solucionarlo.
Eje. 5) Crea una aplicacin en la que presentes un cuadro de mensaje con
la siguiente pregunta: Ests seguro que deseas aadir este
elemento? Si el usuario responde afirmativamente el contenido del
TextBox pasa al ListBox, si el usuario responde negativamente,
opcin que aparecer marcada por defecto, no se aadir el texto al
ListBox, y aparecer un nuevo MsgBox indicando que no se aadir
ningn elemento a la lista. Considera lo siguiente:
a) Crea un nuevo formulario. I nserta un TextBox, borra el contenido y
ponle como mombre: Texto.
b) I nserta un ListBox, ponle como nombre: Lista
c) I nserta un CommandButton ponle el nombre I nsertar. Cambia
tambin la propiedad Caption por I nsertar.


PROGRAMADOR UNI VERSI TARI O
LABORATORI O I I - VI SUAL BASI C
AO 2008
CAPI TULO V

Pgina 191

Mg. Ing. Ftima Martnez

BI BLI OGRAF A CONSULTADA Y RECURSOS EN LA WEB
Nombre Autor/Ao Edicin, Editorial / Direccin del Sitio
Aprenda Visual Basic
6.0
Atencio, K
http://www.esnips.com/doc/a1f3a80f-ec28-4d6f-
8691-84e59aec86fd/GuiaVB_6; (accedido
03/08/2007); p. 2
Visual Basic 6.
Programacin
Orientada a Objetos
Rodrguez Bucarelly,
C. M.; 2004
http://www.lawebdelprogramador.com/cursos/en
lace.php?idp=2175&id=93&texto=visual+basic
(accedido 10/03/2007)
Visual Basic - Gua
del Estudiante
Surez Bernardo, L;
1998
http://www.monografias.com/trabajos2/guiavb/g
uiavb.shtml; (accedido 20/07/2007)
Flujo de Control en
Visual Basic

http://msdn2.microsoft.com/es-
es/library/ca8tdhcs(VS.80).aspx; (accedido
20/09/2007
Instruccin WithEnd
With (Visual Basic)
http://msdn2.microsoft.com/es-
es/library/wc500chb(VS.80).aspx; (accedido
20/09/2007)
Nmeros Aleatorios Som, G, 1997
http://www.elguille.info/vb/cursos_vb/basico/basico
09.htm; (accedido 02/08/2007)
Instruccin Exit
(Visual Basic)
http://msdn2.microsoft.com/es-
es/library/t2at9t47(VS.80).aspx; (accedido
20/09/2007)
Aprenda Visual Basic
6.0 como si estuviera en
Primero
Garca de Jaln, J. y
otros; 1999
http://www.tecnun.es/asignaturas/Informat1/ayudainf
/aprendainf/VisualBasic6/vbasic60.pdf; (accedido
10/03/2007)
Visual Basic - Gua
del Estudiante
Surez Bernaldo, L.;
1998
http://www.monografias.com/trabajos2/guiavb/g
uiavb.shtml; (accedido 20/07/2007)
Microsoft Visual Basic
6.0. Manual de
Referencia
Birnios, B. y Birnios,
M.; 2003
Manuales USERS; MP Ediciones; Buenos
Aires; Argentina

Vous aimerez peut-être aussi