Variables Operadores VB60
Variables Operadores VB60
Variables Operadores VB60
Visual Basic 1
Variables y Operadores
Convenciones de nomenclatura en Visual Basic
Cuando escribe cdigo en Visual Basic, declara y asigna nombre a muchos elementos
(procedimientos Sub y Function, variables, constantes, etc.). Los nombres de procedimientos,
variables y constantes que declara en el cdigo de Visual Basic deben seguir estas directrices:
Deben comenzar por una letra.
No pueden contener puntos o caracteres de declaracin de tipos (caracteres especiales
que especifican tipos de datos).
No pueden superar los 255 caracteres. Los nombres controles, formularios y mdulos no
deben exceder los 40 caracteres.
No pueden ser iguales que las palabras clave restringidas.
Una palabra clave restringida es una palabra que Visual Basic utiliza como parte de su lenguaje.
Esto incluye a las instrucciones predefinidas (como If y Loop), funciones (como Len y Abs) y
operadores (como Or y Mod).
Los formularios y controles pueden tener el mismo nombre que una palabra clave restringida.
Por ejemplo, puede tener un control que se llame Loop. Sin embargo, en el cdigo no puede
hacer referencia a ese control de la forma habitual, ya que Visual Basic supone que se est
refiriendo a la palabra clave Loop. Por ejemplo, este cdigo provoca un error:
Loop.Visible = True
Para referirse a un formulario o un control que tenga el mismo nombre que una palabra clave
restringida, debe calificarlo o ponerlo entre corchetes: [ ]. Por ejemplo, este cdigo no provoca
un error:
MiForm.Loop.Visible = True (Calificado con el nombre del formulario.)
[Loop].Visible = True (Con corchetes tambin funciona.)
Puede usar corchetes de esta forma cuando haga referencia a formularios y controles, pero no
cuando declare una variable o defina un procedimiento con el mismo nombre que una palabra
clave restringida. Tambin se pueden usar corchetes para que Visual Basic acepte nombres de
otras bibliotecas de tipos que entren en conflicto con palabras clave restringidas.
Puesto que escribir corchetes puede resultar tedioso, evite la utilizacin de palabras clave
restringidas en los nombres de formularios y controles. Sin embargo, puede usar esta tcnica si
una versin posterior de Visual Basic define una palabra clave nueva que entre en conflicto con
un nombre de formulario o control existente y est actualizando el cdigo para que funcione con
la versin nueva.
Variables
En Visual Basic puede utilizar variables para almacenar valores temporalmente durante la
ejecucin de una aplicacin. Las variables tienen un nombre (la palabra que utiliza para
referirs e al valor que contiene la variable) y un tipo de dato (que determina la clase de datos
que la variable puede almacenar).
Puede considerar una variable como un marcador de posicin en memoria de un valor
desconocido. Por ejemplo, suponga que est creando un programa para una frutera que haga
un seguimiento del precio de las manzanas. No sabe el precio de una manzana o la cantidad
que se ha vendido hasta que no se produce realmente la venta. Puede utilizar dos variables
para almacenar los valores desconocidos (vamos a llamarlos PrecioManzanas y
ManzanasVendidas). Cada vez que se ejecuta el programa, el usuario especifica los valores de
las dos variables. Para calcular las ventas totales y mostrarlas en un cuadro de texto llamado
txtVentas, el cdigo debera parecerse al siguiente:
txtVentas.txt = PrecioManzanas * ManzanasVendidas
La expresin devuelve un total distinto cada vez, dependiendo de los valores que indique el
usuario. Las variables le permiten realizar un clculo sin tener que saber antes cules son los
valores especificados.
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 2
En este ejemplo, el tipo de dato de PrecioManzanas es Currency; el tipo de dato de
ManzanasVendidas es Integer. Las variables pueden representar otros muchos valores como
valores de texto, fechas, diversos tipos numricos e incluso objetos.
Almacenamiento y recuperacin de datos
Utilice instrucciones de asignacin para realizar clculos y asignar el resultado a una variable:
ManzanasVendidas = 10 (Se pasa el valor 10 a la
variable)
ManzanasVendidas = ManzanasVendidas + 1 (Se incrementa la variable)
Observe que el signo igual del ejemplo es un operador de asignacin, no un operador de
igualdad; el valor (10) se asigna a la variable (ManzanasVendidas).
Declaracin de variables
Declarar una variable es decirle al programa algo de antemano. Se declara una variable
mediante la instruccin Dim, proporcionando un nombre a la variable:
Dim nombre_variable [As tipo]
Las variables que se declaran en un procedimiento mediante la instruccin Dim slo existen
mientras se ejecuta el procedimiento. Cuando termina el procedimiento, desaparece el valor
de la variable. Adems, el valor de una variable de un procedimiento es local de dicho
procedimiento; es decir, no puede tener acceso a una variable de un procedimiento desde
otro procedimiento. Estas caractersticas le permiten utilizar los mismos nombres de variables
en distintos procedimientos sin preocuparse por posibles conflictos o modificaciones
accidentales.
La clusula opcional As tipo de la instruccin Dim le permite definir el tipo de dato o de objeto
de la variable que va a declarar. Los tipos de datos definen el tipo de informacin que
almacena la variable. Algunos ejemplos de tipos de datos son String, Integer y Currency.
Hay otras formas de declarar variables:
Declarar una variable en la seccin Declaraciones de un mdulo de formulario, estndar o
de clase, en vez de en un procedimiento, hace que la variable est disponible para todos
los procedimientos del mdulo.
Declarar una variable mediante la palabra clave Public hace que est accesible para toda
la aplicacin.
Declarar una variable local mediante la palabra clave Static preserva su valor aunque
termine el procedimiento.
Declaracin Implcita
No tiene por qu declarar una variable antes de utilizarla. Por ejemplo, podra escribir una
funcin donde no hiciera falta declarar TempVal antes de utilizarla:
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TempVal)
End Function
Visual Basic crea automticamente una variable con ese nombre, que puede utilizar como si la
hubiera declarado explcitamente. Aunque es cmodo, puede provocar errores sutiles en el
cdigo si se equivoca de nombre de variable. Por ejemplo, suponga que ha escrito esta
funcin:
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TemVal)
End Function
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 3
A primera vista, parece igual. Pero como se ha escrito errneamente la variable TempVal en
la tercera lnea, la funcin devolver siempre cero. Cuando Visual Basic encuentra un nombre
nuevo, no puede averiguar si realmente desea declarar una variable nueva o simplemente ha
escrito de forma errnea una variable existente, por lo que crea una variable nueva con ese
nombre.
Declaracin Explcita
Para evitar problemas al equivocarse de nombre en las variables, puede estipular que Visual
Basic le avise siempre que encuentre un nombre que no se haya declarado explcitamente
como una variable.
Para declarar variables de forma explcita:
Incluya esta instruccin en la seccin Declaraciones del mdulo de clase, de formulario o
estndar:
Option Explicit
o bien, en el men Herramientas, elija Opciones, haga clic en la ficha Editor y active la opcin
Declaracin de variables requerida. Esto inserta automticamente la instruccin 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.
Si hubiera tenido efecto dicha instruccin en el mdulo de formulario o estndar que contiene
la funcin SafeSqr, Visual Basic habra reconocido TempVal y TemVal como variables no
declaradas y habra generado errores para ambas. Debera, por tanto, declarar explcitamente
TempVal:
Function SafeSqr(num)
Dim TempVal
TempVal = Abs(num)
SafeSqr = Sqr(TemVal)
End Function
Ahora podr comprender el problema inmediatamente porque Visual Basic habr mostrado un
mensaje de error para la variable TemVal que se ha escrito de forma incorrecta. Como la
instruccin Option Explicit le ayuda a interceptar esta clase de errores, es conveniente utilizarla
en todo el cdigo.
La instruccin Option Explicit funciona sobre mdulo a mdulo; debe colocarse en la seccin
Declaraciones de todos los mdulos de formulario, estndar o de clase en los que desee que
Visual Basic obligue a declarar explcitamente las variables. Si activa Declaracin de variables
requerida, Visual Basic insertar Option Explicit en todos los mdulos de formulario, estndares
o de clase siguientes, pero no lo agregar en el cdigo existente. Deber agregar manualmente
Option Explicit a los mdulos ya existentes en el proyecto.
Otra forma de declarar variables es utilizando los caracteres de declaracin de tipo. Por
ejemplo:
I% Variable entera
R# Variable real de precisin doble
Nombre$ Cadena de caracteres de longitud
variable
f@ Variable fraccionaria
Alcance de las variables
El alcance de una variable define qu partes del cdigo son conscientes de su existencia.
Cuando declara una variable en un procedimiento, slo el cdigo de dicho procedimiento
puede tener acceso o modificar el valor de la variable; tiene un alcance que es 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.
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 4
Establecimiento del alcance de las variables
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 del
procedimiento en el que
aparecen.
No es aplicable. No puede
declarar variables pblicas
dentro de un procedimiento.
Nivel de mdulo Las variables son privadas del
mdulo en el que aparecen.
Las variables estn disponibles
para todos los mdulos.
Variables utilizadas en un procedimiento
Las variables a 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:
Dim intTemp As Integer
o bien
Static intPermanent As Integer
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.
Las variables locales resultan una eleccin apropiada para clculos temporales. Por ejemplo,
puede crear una docena de procedimientos distintos que contengan una variable llamada
intTemp. Como cada intTemp se ha declarado como una variable local, cada procedimiento
slo reconoce su propia versin de intTemp. Cualquier procedimiento puede alterar el valor de
su intTemp local sin que ello afecte a las variables intTemp de los dems procedimientos.
Variables utilizadas en un mdulo
De forma predeterminada, una variable a nivel de mdulo est disponible para todos los
procedimientos del mdulo, pero no para el cdigo de otros mdulos. Cree variables a nivel
de mdulo declarndolas con la palabra clave Private en la seccin Declaraciones al principio
del mdulo. Por ejemplo:
Private intTemp As Integer
A nivel de mdulo, no hay diferencia entre Private y Dim, pero es preferible Private porque
contrasta con Public y hace que el cdigo sea ms fcil de comprender.
Variables utilizadas por todos los mdulos
Para hacer que una variable a nivel de mdulo est disponible para otros mdulos, utilice la
palabra clave Public para declarar la variable. Los valores de las variables pblicas estn
disponibles para todos los procedimientos de la aplicacin. Al igual que todas las variables a
nivel de mdulo, las variables pblicas se declaran en la seccin Declaraciones al principio del
mdulo. Por ejemplo:
Public intTemp As Integer
No puede declarar variables pblicas en un procedimiento, slo en la seccin Declaraciones de
un mdulo.
Variables con el mismo nombre
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 5
Una variable local y otra a nivel del mdulo pueden tener el mismo nombre, pero no son la
misma variable. La regla para estos casos es que el procedimiento siempre utiliza la variable de
nivel ms cercano (local, mdulo y global; en este orden). En otro caso, debe calificar la
variable. Por ejemplo:
Public Temp As Integer 'declaracin en Form1
Public Sub Test() 'procedimiento en Modulo1
Dim Temp As Integer
Temp = 10 'referencia a la variable local
MsgBox Form1.Temp 'referencia a la variable global
End Sub
Si varias variables pblicas comparten el mismo nombre en diferentes mdulos, para
diferenciarlas en el momento de referenciarlas es necesario especificar pertenencia. Por ejemplo,
si hay una variable entera X declarada tanto en el modulo Form1 como en el Modulol , debemos
referirnos a ella as:
MsgBox Form1.X 'visualiza el valor de la X de Forml
MsgBox Modulo1.X 'visualiza el valor de la X de Modulol
Es aconsejable en programacin que los nombres de las variables sean diferentes entre s, as
como los nombres de las propiedades y de los mdulos.
Tipos de datos de las variables
Las variables son marcadores de posicin que se utilizan para almacenar valores; tienen
nombre y un tipo de dato. El tipo de dato de la variable determina cmo se almacenan los bits
que representan esos valores en la memoria del equipo. Cuando declare una variable,
tambin puede proporcionarle un tipo de dato. Todas las variables tienen un tipo de dato que
determina la clase de datos que pueden almacenar.
De forma predeterminada, si no proporciona un tipo de dato, la variable toma el tipo de dato
Variant. El tipo de dato Variant puede representar diferentes tipos de datos en distintas
situaciones. No tiene que convertir estos tipos de datos cuando los asigne a una variable
Variant: Visual Basic realiza automticamente cualquier conversin necesaria.
Sin embargo, si sabe que una variable almacenar siempre un tipo de dato determinado,
Visual Basic tratar de forma ms eficiente los datos si declara la variable con ese tipo. Por
ejemplo, se representa mejor una variable que va almacenar nombres de personas como el
tipo de dato String, ya que un nombre est siempre compuesto de caracteres.
Los tipos de datos se aplican a otras cosas adems de a las variables. Cuando asigna un valor
a una propiedad, dicho valor tiene un tipo de dato; los argumentos de las funciones tienen
tambin tipos de datos. De hecho, todo lo relacionado con datos en Visual Basic tiene un tipo
de dato.
Declarar variables con tipos de datos
Antes de utilizar una variable que no sea Variant debe utilizar las instrucciones Private, Public,
Dim o Static para declararla As tipo. Por ejemplo, la siguiente instruccin declara un tipo
Integer, Double, String y Currency, respectivamente:
Private I As Integer
Dim Cantidad As Double
Static SuNombre As String
Public PagadoPorJuan As Currency
La instruccin de declaracin puede combinar varias declaraciones, como en las instrucciones
siguientes:
Private I As Integer, Amt As Double
Private SuNombre As String, PagadoPorJuan As Currency
Private Prueba, Cantidad, J As Integer
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 6
Si no proporciona un tipo de dato, se asigna a la variable el tipo predeterminado. En el
ejemplo anterior, las variables Prueba y Cantidad tienen un tipo de dato Variant. Esto puede
sorprenderle si su experiencia con otros lenguajes de programacin le lleva a esperar que
todas las variables contenidas en la misma instruccin de declaracin tengan el mismo tipo
que ha especificado (en este caso, Integer).
Distintos tipos de variables utilizados en Visual Basic
Tipo Descripcin Car-tipo Rango
Integer Entero - 2 Bytes % -32.768.a 32.768
Long Entero Largo - 4 Bytes & -2.147.483.648 a 2.147.483.647
Single Coma flotante. Precisin simple - 4
Bytes
! -3,40E+38 a 3,40E+38
Double Coma flotante. Precisin Doble - 8
Bytes
# -1,79D+308 a 1,79D+308
Currency Nmero con punto decimal fijo 8
Bytes
@ +/- 922.337.203.685.477,5807
String Cadena de caracteres de longitud fija
1 Byte por carcter
ninguno Hasta 64K aproximadamente
String Cadena de caracteres de longitud
variable 10 Bytes + 1 Byte por
caracter
$ Hasta 231 caracteres
aproximadamente
Byte Carcter 1 Byte ninguno 0 a 255
Boolean Booleano 2 Bytes ninguno True o False
Date Fecha/Hora 8 Bytes ninguno 1/Enero/100 a
31/Diciembre/9.999
Object Referencia a un objeto 4 Bytes ninguno Cualquier referencia a tipo de
Objeto
Variant Con nmeros 16 Bytes ninguno Cualquier valor numrico hasta el
intervalo de tipo Double
Variant Con caracteres 22 Bytes + 1 por
caracter
ninguno El mismo intervalo que para un
tipo String de longitud variable
Decimal Nmeros con 0 a 28 decimales 14
Bytes (No se puede declarar una
variable de este tipo. Slo se puede
utilizar con Variant)
ninguno Valor mayor con 0 decs: +/-
79.228.162.514.264.337.593.543.
950.335
Valor mayor con 28 decs: +/-
7,92281625142643375935439503
35
Tipos de datos numricos
Visual Basic proporciona varios tipos de datos numricos: Integer, Long (entero largo), Single
(signo flotante de simple precisin), Double (signo flotante de doble precisin) y Currency.
Utilizar un tipo de dato numrico emplea normalmente menos espacio de almacenamiento
que un tipo Variant.
Si sabe que una variable siempre va a almacenar nmeros enteros (como 12) en vez de
nmeros fraccionarios (como 3,57), declrela como un tipo Integer o Long. Las operaciones
con enteros son ms rpidas y estos tipos consumen menos memoria que otros tipos de
datos.
Si la variable contiene una fraccin, declrela como variable Single, Double o Currency. El tipo
de dato Currency acepta hasta cuatro dgitos a la derecha del separador decimal y hasta
quince dgitos a la izquierda; es un tipo de dato de signo fijo adecuado para clculos
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 7
monetarios. Los nmeros de signo flotante (Single y Double) tienen ms intervalo que
Currency, pero pueden estar sujetos a pequeos errores de redondeo.
El tipo de dato Byte
Todos los operadores que funcionan con enteros funcionan con el tipo de dato Byte excepto el
de resta. Puesto que Byte es un tipo sin signo con el intervalo 0 - 255, no puede representar
un valor negativo.
Es posible asignar todas las variables numricas entre s y a variables del tipo Variant. Visual
Basic redondea en vez de truncar la parte fraccionaria de un nmero de signo flotante antes
de asignarlo a un entero.
El tipo de dato String
Si tiene una variable que siempre contendr una cadena y nunca un valor numrico, puede
declararla del tipo String:
Private S As String
As podr asignar cadenas a esta variable y manipularla mediante funciones de cadena:
S = "Base de datos"
S = Left(S, 4)
De forma predeterminada, una variable o argumento de cadena es una cadena de longitud
variable; la cadena crece o disminuye segn le asigne nuevos datos. Tambin puede declarar
cadenas de longitud fija. Especifique una cadena de longitud fija con esta sintaxis:
String * tamao
Por ejemplo, para declarar una cadena que tiene siempre 50 caracteres de longitud, utilice un
cdigo como este:
Dim NombreEmp As String * 50
Si asigna una cadena con menos de 50 caracteres, NombreEmp se rellenar con espacios en
blanco hasta el total de 50 caracteres. Si asigna una cadena demasiado larga a una cadena de
longitud fija, Visual Basic simplemente truncar los caracteres.
Puesto que las cadenas de longitud fija se rellenan con espacios al final, ver que las
funciones Trim y RTrim, que quitan los espacios en blanco, resultan muy tiles cuando se
trabaja con ellas.
Tipo enumerado
La declaracin de un tipo enumerado es simplemente una lista de valores que pueden ser
tomados por una variable de ese tipo. Los valores de un tipo enumerado se presentarn con
identificadores, que sern las constantes del nuevo tipo. Por ejemplo:
Public Enum DasSemana
lunes
martes
mircoles
jueves
viernes
sbado
domingo
End Enum
Dim hoy As DasSemana
Este ejemplo declara la variable hoy del tipo enumerado DasSemana. Esta variable puede tomar
cualquier valor de los especificados, lunes a domingo. Las constantes son de tipo Long y sus
valores por omisin son 0, l, 2, etc. Segn esto, el valor de lunes es 0, el valor de martes es 1, y
as sucesivamente. Por lo tanto, una sentencia como
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 8
hoy = domingo
ser equivalente a
hoy = 6
A cualquier identificador de la lista se le puede asignar un valor inicial de tipo Long por medio de
una expresin constante. Los identificadores sucesivos tomarn valores correlativos a partir de
ste. Por ejemplo:
Public Enum DasLaborales
sbado
domingo = 0
lunes
martes
mircoles
jueves
viernes
NoVlido = -1
End Enum
Este ejemplo declara un tipo enumerado llamado DsLaborales. Los valores asociados con cada
una de las constantes son: sbado = 0, domingo = 0, lunes = 1, martes = 2, mircoles = 3,
,jueves = 4, viernes = 5, NoVlido = -l .
A los tipos enumerados se les aplican las siguientes reglas:
Un tipo enumerado puede declarase Private o Public.
De forma predeterminada, la primera constante de una enumeracin se inicia a 0 y las
siguientes constantes reciben un valor superior en una unidad al de constante anterior.
Dos o ms constantes pueden tener un mismo valor.
Una constante puede aparecer en ms de un tipo.
Para evitar referencias ambiguas cuando haga referencia a una constante individual,
califique el nombre de la constante mediante su enumeracin. Por ejemplo:
hoy = DasSemana.domingo
No es posible leer o escribir directamente un valor de un tipo enumerado; esto es,
cuando se escribe una variable de un tipo enumerado lo que se escribe es el valor
asociado, y cuando se lee, hay que introducir el valor asociado. En cambio en
asignaciones o en comparaciones s se pueden utilizar los identificadores del tipo
enumerado.
El tipo de dato Boolean
Si tiene una variable que siempre contendr solamente informacin del tipo verdadero y falso,
s y no o activado o desactivado, puede declararla del tipo Boolean. El valor predeterminado
de Boolean es False. En el siguiente ejemplo, blnEjecutando es una variable Boolean que
almacena un simple s o no.
Dim blnEjecutando As Boolean
' Comprueba si la cinta est en marcha.
If Recorder.Direccion = 1 Then
blnEjecutando = True
End if
El tipo de dato Date
Los valores de fecha y hora pueden almacenarse en el tipo de dato especfico Date o en
variables Variant. En ambos tipos se aplican las mismas caractersticas generales a las fechas.
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 9
El tipo de dato Variant
Una variable Variant es capaz de almacenar todos los tipos de datos definidos en el sistema.
No tiene que convertir entre esos tipos de datos si los asigna a una variable Variant; Visual
Basic realiza automticamente cualquier conversin necesaria. Por ejemplo:
Dim AlgunValor
AlgunValor = "17"
AlgunValor = AlgunValor - 15
AlgunValor = "U" & AlgunValor
En la primera instruccin se define la variable AlgunValor, la cual de forma predeterminada es
un tipo Variant. En la segunda AlgunValor contiene 17 (cadena de dos caracteres), en la
tercera AlgunValor ahora contiene el valor numrico 2 y en la ltima AlgunValor ahora
contiene "U2" (una cadena de dos caracteres).
Si bien puede realizar operaciones con variables Variant sin saber exactamente el tipo de dato
que contienen, hay algunas trampas que debe evitar.
Si realiza operaciones aritmticas o funciones sobre un Variant, el Variant debe
contener un nmero.
Si est concatenando cadenas, utilice el operador & en vez del operador +.
Cuando utilice el operador &, tenga cuidado de dejar un espacio entre el nombre de la variable y
el operador, de lo contrario Visual Basic interpretara que se trata del carcter de declaracin de
tipo Long.
Si intenta ejecutar una operacin o funcin matemtica sobre una variable Variant que no tenga
un valor que pueda ser interpretado como un nmero, ocurrir error. Para evitar esto, utilice la
funcin IsNumeric para interrogar si dicha variable contiene un valor que pueda ser utilizado
como un nmero. Por ejemplo:
Dim Dato 'Variant por omisin
Dato = "123" 'cadena de caracteres
If IsNumeric(Dato) Then
Dato = Dato + 1111 'resultado Double 1234
End If
Dato = Dato & "5" 'cadena de caracteres "12345"
Cuando asignamos un valor numrico a una variable Variant utiliza la representacin ms
compacta para registrar el valor.
Dim Dato 'variable de tipo Variant
Dato = 123 'contiene un valor Integer
Dato = Dato + 1111 'resultado Integer 1234
Una variable Variant no es una variable sin tipo; ms bien, es una variable que puede cambiar
su tipo libremente (una variable genrica). Cuando usted quiera conocer el tipo de dato que
almacena una variable Variant, utilice la funcin VarType. Cada tipo de dato tiene asociado en
Visual Basic un nmero entero que lo diferencia de los dems (por ejemplo, Integer tiene
asociado el 2, Single el 4, etc.). Ese nmero entero es devuelto por la funcin VarType. En el
ejemplo siguiente puede ver el valor asociado con cada tipo:
Sub TipoDato(Dato As Variant)
Dim Tipo As Integer
Tipo = VarType(Dato) 'almacena en Tipo un entero
Select Case Tipo
Case 0 'si Tipo es 0 la variable Dato no est iniciada, Empty
MsgBox "Vaco"
Case 1 'si Tipo es l, Dato no tiene datos vlidos (Null)
MsgBox "Null"
Case 2 'si Tipo es 2, Dato se corresponde con un entero
MsgBox "Integer: " & dato
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 10
Case 3
MsgBox "Long: " & Dato
Case 4
MsgBox "Single: " & Dato
Case 5
MsgBox "Double: " & Dato
Case 6
MsgBox "Currency: " & Dato
Case 7
MsgBox "Fecha/Hora: " & Dato
Case 8
MsgBox "String: " & Dato
Case 11
MsgBox "Boolean : " & Dato
Case 17
MsgBox "Byte: " & Dato
End Select
End Sub
La sentencia Case y la funcin y el procedimiento MsgBox se vern ms adelante.
En ocasiones, cuando operamos con variables Variant obtenemos resultados tipo Double, cuando
en realidad esperamos otro tipo de resultado. Por ejemplo:
Dato = Dato + 1111 'Para Dato = "123", valor Double 1234
En este ejemplo quiz usted esperaba obtener un valor Integer. Para que as sea, utilice la
funcin CInt para convertir la variable Variant a un valor entero.
Dato = CInt(Dato) + 1111 'valor entero
Las variables Variant tambin pueden contener valores de tipo Date y, con ellas, puede ejecutar
operaciones aritmticas y comparaciones. Por ejemplo:
Dim Dato 'Variant por omisin
Dato = Now 'contenido: dd/mm/aa
Dato = Dato - 1 'menos 1 da
If Dato > #24/10/99 3:00:00# Then
Dato = Dato - 1 / 24 'menos 1 hora
End If
Dato = Dato - 10 / 24 / 60 'menos 10 minutos
Visual Basic acepta para una variable Variant, datos en diversos formatos de fecha/hora,
incluidos entre #. Por ejemplo:
Dim Dato 'Variant por omisin
Dato = #18-4-01 15:30#
Dato = #18 Apr, 2001 3:30pm#
Dato = #18-Apr-01#
Dato = #18 Apri1 2001#
Para verificar si un determinado valor puede considerarse como uno del tipo Date
(fecha/hora), utilice la funcin IsDate. Para convertir dicho valor en uno del tipo Date, utilice
la funcin CDate. Por ejemplo, suponga que el contenido una caja de texto Textl es 18 4 01.
Las siguientes sentencias
If IsDate(Text1.Text) Then
Dato = CDate(Text1.Text)
End If
almacenan en la variable Dato el valor 18/04/01. Una alternativa a la funcin CDate es
DateValue.
Adems de poder actuar como otros tipos de datos estndar, los Variant tambin pueden
contener tres valores especiales: Empty, Null y Error.
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 11
El valor Empty
A veces necesitar saber si se ha asignado un valor a una variable existente. Una variable
Variant tiene el valor Empty antes de asignarle un valor. El valor Empty es un valor especial
distinto de 0, una cadena de longitud cero () o el valor Null. Puede probar el valor Empty
con la funcin IsEmpty:
If IsEmpty(Z) Then Z = 0
Cuando un Variant contiene el valor Empty, puede utilizarlo en expresiones; se trata como un
0 o una cadena de longitud cero, dependiendo de la expresin.
El valor Empty desaparece tan pronto como se asigna cualquier valor (incluyendo 0, una
cadena de longitud cero o Null) a una variable Variant. Puede establecer una variable Variant
de nuevo como Empty si asigna la palabra clave Empty al Variant.
El valor Null
El tipo de dato Variant puede contener otro valor especial: Null. Null se utiliza comnmente en
aplicaciones de bases de datos para indicar datos desconocidos o que faltan. Debido a la
forma en que se utiliza en las bases de datos, Null tiene algunas caractersticas nicas:
Las expresiones que utilizan Null dan como resultado siempre un Null. As, se dice que
Null se propaga a travs de expresiones; si cualquier parte de la expresin da como
resultado un Null, la expresin entera tiene el valor Null.
Al pasar un Null, un Variant que contenga un Null o una expresin que d como resultado
un Null como argumento de la mayora de las funciones hace que la funcin devuelva un
Null.
Los valores Null se propagan a travs de funciones intrnsecas que devuelven tipos de
datos Variant.
Tambin puede asignar un Null mediante la palabra clave Null:
Z = Null
Puede utilizar la funcin IsNull para probar si una variable Variant contiene un Null:
If IsNull(X) And IsNull(Y) Then
Z = Null
Else
Z = 0
End If
Si asigna Null a una variable de un tipo que no sea Variant, se producir un error
interceptable. Asignar Null a una variable Variant no provoca ningn error y el Null se
propagar a travs de expresiones que contengan variables Variant (Null no se propaga a
travs de determinadas funciones). Puede devolver Null desde cualquier procedimiento
Function con un valor de devolucin de tipo Variant.
Null no se asigna a las variables a menos que se haga explcitamente, por lo que si no utiliza
Null en su aplicacin, no tendr que escribir cdigo que compruebe su existencia y lo trate.
Conversiones entre datos numricos
Cuando una variable numrica de un tipo se asigna a otra variable numrica de un tipo
diferente, Visual Basic convierte el dato asignado al tipo de la variable destino de los datos. Las
conversiones se hacen de acuerdo con las reglas siguientes:
Dim ent1 As Integer, ent2 As Integer
Dim fracsp As Singler, fracdp As Double
1. Si se asigna un valor numrico de una precisin a una variable numrica de precisin
diferente, el nmero ser almacenado con la precisin declarada en el nombre de la
variable destino. Por ejemplo:
ent1 = 40.17
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 12
ent2 = 37.83
Print entl, ent2 'resultado: 40 38
2. Si se asigna un valor numrico de una precisin ms alta a una variable de precisin
ms baja, dicho valor se redondea, no se trunca. Por ejemplo:
fracsp = 22.3445577
ent1 = 17.5
Print fracsp, ent1 'resultado: 22.34456 18
ent1 = 17.4
ent2 = 17.6
Print entl, ent2 'resultado: 17 18
fracsp = 22.37
Print fracsp 'resultado: 22.37
Tenga en cuenta que un valor de tipo Single no tiene ms de 7 cifras significativas (cifras
enteras ms cifras decimales). Por lo tanto, el redondeo ocurre cuando tratamos de asignar ms
cifras de las aceptadas por la variable. Un razonamiento similar se puede seguir para el resto de
los tipos.
3. Si se cambia un nmero de precisin ms baja a una precisin ms alta, el nmero de
precisin ms alta resultante no podr ser ms exacto que el nmero de precisin ms
baja. Por ejemplo:
fracsp = 17.55
fracdp = fracsp
Print fracsp, fracdp 'resultado: 17.55 17.5499992370605
En este ejemplo se ha asignado un valor de precisin simple a una variable de precisin doble.
Quizs usted esperaba como resultado el mismo valor asignado. Para comprender este otro
resultado, piense en lo dicho anteriormente respecto a que al convertir un valor en base 10 de
tipo Single o Double al mismo valor en base 2 y viceversa, ocurre un error por no poderse
representar exactamente el valor decimal en binario.
4. Durante la evaluacin de una expresin, todos los operandos en una operacin
aritmtica o de relacin se cambian al mismo grado de precisin, que es el del operando
ms preciso. Por ejemplo:
ent1 = 8
fracdp = 3
Print ent1 / fracdp 'resultado: 2.66666666666667
Constantes simblicas
A menudo utilizamos valores constantes una y otra vez en el cdigo, o bien el cdigo depende
de ciertos nmeros difciles de recordar. En estos casos, la mejor solucin es definir estos
valores como constantes simblicas y utilizar en lo sucesivo los nombres que identifican estas
constantes.
Para definir una constante simblica, utilice la siguiente sintaxis:
[Public|Private] Const constante [As tipo] = expresin
Si no declara explcitamente el tipo de constante (utilizando As tipo), se asigna a la constante el
tipo de datos ms apropiado a su valor.
Para nombrar una constante, se utilizan las mismas reglas que se aplican para nombrar
variables. La expresin puede ser numrica, alfanumrica o de tipo fecha y hora. Por ejemplo:
Public Const MAX_ELEMS = 99
Public Const VERSION = "ver. 4.05.0A"
Const PI = 3.1415926, DOS_PI = 2 * PI
Const FECHA_POR_DEFECTO = #1/O1/01#
Es aconsejable definir todas las constantes globales en un nico mdulo. El mbito de una
constante se define por las mismas reglas que las variables.
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 13
Utilizando el examinador de objetos puede insertar en su cdigo muchas de las constantes
intrnsecas o definidas por el sistema.
Operadores
La tabla que se muestra a continuacin presenta el conjunto de operadores que soporta Visual
Basic ordenados de mayor a menor prioridad respecto a cmo se evalan cuando varios de ellos
intervienen en una misma expresin. Los operaciones que aparecen sobre una misma lnea
tienen igual prioridad. Las operaciones que se incluyan entre parntesis se evaluarn antes,
ejecutndose primero los parntesis ms internos.
Operador Tipo Operacin
^ Aritmtico Exponenciacin
- Cambio de signo
*, / Multiplicacin y divisin
\ Divisin entera
Mod Resta de una divisin
+, - Suma y resta
& Concatenacin Concatenar o enlazar
=, <>, <, >, <=,
>=
Relacional Igual, distinto, menor, mayor ...
Like Otros Comparar dos expresiones de caracteres
Is Comparar dos referencias a objetos
Not Lgico Negacin
And And
Or Or inclusiva
Xor Or exclusiva
Eqv Equivalencia (opuesto a Xor)
Imp Implicacin (falso si primer operando verdadero y segundo
operando falso)
Si al evaluar una expresin sucede que alguno de los operandos tiene un valor Null, el resultado
es Null.
Cuando en una expresin aritmtica intervienen operandos de diferentes tipos el resultado se
expresa, generalmente, en la precisin del operando que la tiene ms alta. El orden, de menor a
mayor, segn la precisin, es Integer, Long, Single, Double y Currency.
Los operadores relacionales, tambin conocidos como operadores de comparacin, comparan
dos expresiones dando un resultado True (verdadero), False (falso) o Null (no vlido).
El operador & realiza la concatenacin de dos operandos. Para el caso particular de que ambos
operandos sean cadenas de caracteres, puede utilizarse tambin el operador +. No obstante;
para evitar ambigedades utilice &. El resultado es de tipo String si ambas expresiones son de
tipo String; en otro caso, el resultado es, de tipo Variant.
Los operadores lgicos podemos utilizarlos de dos formas: para obtener un resultado de tipo
Boolean (True o False), una vez evaluadas dos expresiones a True o a False, o para realizar una
operacin lgica bit a bit entre dos expresiones numricas, colocando el resultado en la variable
que se especifique.
Cuando otros tipos de datos numricos se convierten a Boolean, 0 pasa a ser False, mientras
que todos los dems valores pasan a ser True. Cuando los valores Boolean se convierten en
otros tipos, False pasa a ser 0, mientras que True se transforma en 1.
Las tablas de ve rdad correspondientes a estos operadores son las siguientes:
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 14
A B Not A A And B A or B A Xor B A Eqv B A Imp B
True True False True True False True True
True False False False True True False False
False True True False True True False True
False False True False False False True True
El operador Not, no lgico, se utiliza para negar la afirmacin de un argumento. Por ejemplo,
para expresar si a no es mayor que b, entonces escribir a es menor o igual que b ;
escribiremos:
If Not a > b Then Print a ; " es menor o igual que "; b
Si queremos expresar mientras no existe, hacer..., escribiremos
Dim existe As Boolean
existe = False
While Not existe
'...
Wend
En este ejemplo, Not existe es True, ya que Not False es True (verdadero).
El operador And, Y lgico, recibe tambin a nivel de bits el nombre de producto lgico. Por
ejemplo, para expresar si a es mayor que b y b es mayor que c entonces escribir a,
escribiremos:
If a > b And b > c Then Print a 'si el resultado es True se escribe a
El operador Or, O lgico, recibe tambin a nivel de bits e1 nombre de suma lgica u Or inclusivo.
Por ejemplo, para expresar si a es igual a 0 o b es igual a 0, entonces finalizar', escribiremos:
If a = 0 Or b = 0 Then End 'si el resultado es True se finaliza
El operador Xor, Or exclusivo, recibe tambin a nivel bits el nombre de suma binaria. Por
ejemplo:
a = 10: b = 8: c = 6 'inicia variables
resu = a > b Xor b > c 'devuelve False
resu = b > a Xor b > c 'devuelve True
resu = a Xor b 'devuelve 2 (comparacin bit a bit)
Como vemos, el operador Xor ejecuta tambin una comparacin bit a bit para identificar bits de
dos expresiones numricas y establece el bit correspondiente en el resultado segn la siguiente
tabla de decisin lgica:
Si bit en operando1 es Si bit en operando2 es El resultado es
0 0 0
0 1 1
1 0 1
1 1 0
La expresin a Xor b da lugar a 2, puesto que si 10 es 1010 en binario y 8 es 1000 en binario,
10 Xor 8 es 0010 en binario, que en decimal es 2.
Podemos hacer un razonamiento similar para el resto de los operadores.
El operador Like se utiliza para comparar dos cadenas de caracteres. La sintaxis para este
operador es la siguiente:
[resultado =] expresin Like patrn
El resultado ser True si la expresin coincide con alguna de las definidas por el patrn, False si
no hay coincidencia y Null si la expresin y/o el patrn son Null. Por omisin, en las
comparaciones, se diferencian maysculas de minsculas; esta caracterstica puede ser alterada
por la sentencia Option Compare. En el patrn se pueden incluir los caracteres comodn
siguientes:
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 15
Car. Comodn Descripcin
? Un solo carcter
* Cero o ms caracteres
# Un solo dgito (0-9)
[lista_caracteres] Un solo carcter de los pertenecientes a la
lista
[!lista_caracteres] Un solo carcter de los no pertenecientes a
la lista
Por ejemplo:
Con este patrn Esta expresin retorna True Esta expresin retorna False
a?a aaa, a5a, aBa, aba aBbca
a*a aa, aBa, aBBba aBbc
a#a a0a, a2a, a9a aaa, aba, a29a
a[*]a a*a aaa, a0a
[a-z] f, p, j 3, A, .
[!0-9] A, a, ., - 0, 4, 7
a[!i-n]# ab1, az0, a99 aic, ak0, Ab1, az90
En el siguiente ejemplo el resultado de la comparacin ser True cuando la cadena de caracteres
Cadena coincida con una cadena de tres caracteres, en la que el primero sea una a, el segundo
cualquier carcter que no sea i, j, k, l, m o n, y el tercero un dgito 0 a 9.
Dim Cadena As String
. . .
If . Cadena Like "a[!i-n]" Then
'acciones a ejecutar si el resultado es True
End If
El operador Is se utiliza para comprobar si una variable definida se refiere a un objeto de los
existentes, o si dos variables definidas se refieren al mismo objeto. Por ejemplo:
Dim A As Form 'referencia a un formulario
Dim B As Control 'referencia a un control
Set A = Form1 'hacer que A se refiera al mismo
'formulario identificado por Forml
Set B = Text1 'hacer que B se refiera a la misma
'caja de texto identificada por Textl
If A Is Form1 And B Is Text1 Then
'acciones a ejecutar si el resultado es True
Else
'acciones a ejecutar si el resultado es False
End If
Form y Control son clases de objetos predefinidas en Visual Basic. En cambio, Form1 y Text1 son
objetos definidos por el usuario al disear la aplicacin (un formulario y una caja de texto).
Sentencias
Una sentencia es una lnea de texto que indica una o ms operaciones a realizar. Una lnea
puede tener varias sentencias, separadas unas de otras por dos puntos:
sueldo = horasTrabajadas * pagoPorHora: sueldoReal = sueldo - deducciones
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 16
Una sentencia Visual Basic puede escribirse en varias lneas fsicas utilizando el carcter de
continuacin de lnea (un espacio en blanco seguido del carcter de subrayado). Por ejemplo:
sueldoReal = horasTrabajadas * pagoPorHora _
- deducciones
La sentencia ms comn en Visual Basic es la sentencia de asignacin.
variable = expresin
que indica que el valor que resulte de evaluar la expresin tiene que ser almacenada en la
variable especificada. Por ejemplo:
Dim Cont As Integer
Dim Intereses As Double, Capital As Double
Dim TantoPorCiento As Single
Dim Mensaje As String
'. . .
Cont = Cont +1
Intereses = Capital * TantoPorCiento / 100
Mensaje = "La operacin es correcta"
Comentarios
Cuando una frase se encuentra precedida de una comilla simple (), Visual Basic interpreta que
esa frase
es un comentario y no
ejecuta accin alguna
sobre ella.
Los comentarios pueden seguir a una instruccin en la misma lnea o pueden ocupar una lnea
completa.
Los comentarios no pueden ir detrs de un carcter de continuacin de lnea en la misma lnea.
Puede agregar o eliminar smbolos que indican comentarios en un bloque de cdigo
seleccionando dos o ms lneas de cdigo y seleccionando los botones Bloque con comentarios
( ) o Bloque sin comentarios ( ) en la barra de herramientas Edicin.
Constantes numricas y de caracteres
Una constante es un valor que no cambia durante la ejecucin de un programa. Visual Basic
admite nmeros decimales (base 10), hexadecimales (base 16) y octales (base 8). Un nmero
hexadecimal va precedido por &H, un nmero octal va precedido por &O (letra O). El siguiente
ejemplo muestra los mismos nmeros en decimal, hexadecimal y octal.
Decima
l
Octal Hexadecimal
9 &O11 &H9
15 &O17 &HF
16 &O20 &H10
20 &O24 &H14
255 &O377 &HFF
Una constante de caracteres o constante alfanumrica es una cadena de caracteres encerrada
entre comillas dobles. Por ejemplo, Hola.
Desarrollaremos ahora una aplicacin para ejemplificar los temas expuestos anteriormente. La
aplicacin consiste en ingresar dos nmeros en dos cajas de texto y de acuerdo al botn de
pulsacin en el cual se hizo clic se efectuar la operacin aritmtica correspondiente, mostrando
el resultado de dicha operacin en un control Label. Comience por disear un formulario similar
al siguiente:
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 17
Los controles utilizados en el diseo del formulario junto con los valores de sus propiedades que
han sido modificadas se detallan a continuacin:
Objeto Propiedad Valor
Text1 Nombre txtVariable1
Text 0
Text2 Nombre txtVariable2
Text 0
Command1 Nombre cmdSuma
Caption Suma
Command2 Nombre cmdResta
Caption Resta
Command3 Nombre cmdDivisin
Caption Divisin
Command4 Nombre cmdMultiplicacion
Caption Multiplicacin
Label1 Nombre lblResultado
Caption
En primer lugar nos ocuparemos de la declaracin de las variables que contendrn a los valores
ingresados en las caja de texto. En la seccin de declaraciones del formulario escriba:
'declaracin de variables
Dim Primero As Integer
Dim Segundo As Integer
Ahora nos ocuparemos de escribir el cdigo correspondiente a los botones de pulsacin. En el
evento clic del control cmdSuma se asignarn los valores de las cajas de texto a las variables
definidas anteriormente y se proceder a mostrar el resultado de la suma de dichas variables en
control lblResultado:
Private Sub cmdSuma_Click()
'capturar nmeros introducidos en los cuadros de texto
Primero = txtVariable1.Text
Segundo = txtVariable2.Text
lblResultado.Caption = Primero + Segundo
End Sub
La lgica de los restantes botones es la misma, solamente variar la operacin aritmtica a
realizar. En el caso de la divisin, como sabr, al intentar dividir cualquier nmero por cero dar
error. Por lo cual deber agregar dicha validacin en el evento clic del botn de pulsacin
Divisin y mostrar un mensaje si se intentar dividir por cero. El cdigo correspondiente se
muestra a continuacin:
Private Sub cmdDivisin_Click()
'capturar nmeros introducidos en los cuadros de texto
Primero = txtVariable1.Text
Segundo = txtVariable2.Text
If Segundo = 0 Then
MsgBox "No se puede dividir por 0."
F FU UN ND DA AM ME EN NT TO OS S D DE E IIN NF FO OR RM M T TIIC CA A D De ep pa ar rt ta am me en nt too d de e I In ng ge en ni ie er r a a E El l c ct t r ri ic ca a
Visual Basic 18
Exit Sub
End If
lblResultado.Caption = Primero / Segundo
End Sub
Nota: La forma en se valida el ingreso de datos se detallar en captulos posteriores.
Ejecute la aplicacin y observe los resultados.