Академический Документы
Профессиональный Документы
Культура Документы
Variable:
En Visual Basic las variables se utilizan para almacenar temporalmente valores durante la
ejecucin de la aplicacin. Las variables tienen un nombre que nos permite acceder al valor
que tiene la variable y un tipo de dato asociado que nos permite determinar la clase de datos
que la variable puede almacenar.
Tipos enteros (Byte, Integer, Long) :
Visual Basic tiene tres tipos de datos predefinidos para representar los nmeros enteros: Byte,
Integer y Long.
Byte: puede almacenar nmeros enteros dentro del rango desde 0 a 255.
Integer: puede almacenar nmeros enteros dentro del rango -32.768 a 32.767
Long: puede almacenar nmeros enteros dentro del rango - .147.483.648 hasta
2.147.483.648.
Tipos reales (Single, Double, Currency):
Single: almacena nmeros decimales en el rango +/- 1e-45 hasta 3e38.
Double: desde +/- 5e-324 hasta 1.8e308.
Currency: Las variables tipo Currency se almacenan como nmeros de 64 bits (8 bytes) en un
formato de nmero entero a escala de 10,000 para dar un nmero de punto fijo con 15 dgitos
a la izquierda del signo decimal y 4 dgitos a la derecha. Esta representacin proporciona un
intervalo de -922.337.203.685.477,5808 a 922.337.203.685.477,5807. El tipo de datos
Currency es til para clculos monetarios y para clculos de punto fijo, en los cuales la
precisin es especialmente importante.
Tipos cadenas (String):
Hay dos clases de cadenas: cadenas de longitud variable y cadenas de longitud fija.
-Las cadenas de longitud variable pueden contener hasta 2,000 millones de caracteres
-Las cadenas de longitud fija que pueden contener de 1 a 64 KB (2^16) caracteres.
Ej:
Dim Name as String * 30 la longitud mxima es de 30 caracteres
Pgina 1 de 43
Al asignar un valor a una variable declarada de esta forma, el Visual Basic nos indicar los
nombres (o valores posibles)
Por ejemplo:
Pgina 2 de 43
Cada vez que necesitemos una variable de este Nuevo tipo, tendremos que declararla como
cualquier otra variable:
Dim unPunto As tPunto
Pgina 3 de 43
Operadores:
Cuando necesitemos combinar diversos elementos del cdigo para obtener un resultado, por
ejemplo:
Sumar dos variables o unir dos cadenas de caracteres para formar otra nueva, haremos uso de
los operadores. Visual Basic dispone de un nutrido grupo de operadores agrupados en
diferentes categoras, en funcin del tipo de expresin a construir.
Aritmeticos:
Son aquellos que se utilizan para realizar las operaciones bsicas de las matemticas. En las
operaciones bsicas tenemos: suma, resta, multiplicacin, divisin, residuo y exponenciacin.
Como norma general, si uno de los operadores es Null, el resultado de la operacin ser Null.
Tambin en la mayor parte de los casos, si una expresin es Empty, se evaluar como 0.
+ Suma. Aparte de efectuar una suma de nmeros, permite incrementar una fecha en una
cantidad determinada de das o concatenar cadenas de caracteres. Para esto ltimo se
recomienda usar el operador &, de manera que en un rpido vistazo al cdigo sepamos si
estamos sumando o concatenando. Vemos unos ejemplos:
lnResultado = 2533 + 431 2964
-----------------------------con fechas:
la asignacin de fecha a una variable es
en el formateo #mes/da/ao#
ldtFecha = #3/15/97# 15/03/97
ldtFecha = ldtFecha + 5 20/03/97
Cuando una de las expresiones a sumar no es Variant, se producen los siguientes resultados:
- La suma se produce cuando ambas partes son nmeros, o una es Variant.
- La concatenacin se produce cuando ambas partes son String, o una es Variant.
- Si un operando es Variant Empty, devuelve el resto de la expresin sin modificar.
- Si un operando es numrico y el otro String se produce un error.
- Cuando las expresiones a sumar son Variant, se aplica lo siguiente:
- Se produce una suma cuando ambos operandos contienen nmeros, o uno es numrico y el
otro cadena de caracteres.
- Se concatenan las expresiones si las dos son cadenas de caracteres.
- Por norma general, en la suma de nmeros, el tipo del resultado es el del operando con
mayor precisin, siendo este orden de precisin: Byte, Integer, Long, Single,
Double, Currency y Decimal. En este punto se dan una serie de excepciones:
- El resultado es Double al sumar un Single y un Long.
- Se produce una conversin a Variant con valor Double si el resultado es Long, Single o Date
con valor Variant que excede su rango.
- Se produce una conversin a Variant con valor Integer si el resultado es Byte con valor
Variant que excede su rango.
- Se produce una conversin a Variant con valor Long si el resultado es Integer con valor
Variant que excede su rango.
- Al sumar a un tipo Date siempre se obtiene un Date.
Pgina 4 de 43
- Resta. Realiza una resta entre dos nmeros o la negacin de un nmero. Vemos unos
ejemplos
resta normal
lnResultado = 100 25 75
negacin
lnNum1 = 84
lnNum2 = -lnNum1 84
Los tipos de datos resultantes siguen las mismas reglas que en la suma, dndose el caso
adicional de que al restar dos tipos Date, el resultado es Double.
* Multiplicacin. Vemos un ejemplo:
ldResultado = 44 * 5 220
El tipo de dato devuelto por una multiplicacin se adapta al que sea ms aproximado al
resultado, con las siguientes variaciones:
- Si la multiplicacin es entre un Single y un Long, el resultado es un Double.
- Cuando el resultado es un Variant con valor Long, Single o Date, que se sale de rango, se
convierte a Variant con valor Double.
- Cuando el resultado es un Variant con valor Byte, que se sale de rango, se convierte a
Variant con valor Integer.
- Cuando el resultado es un Variant con valor Integer, que se sale de rango, se convierte a
Variant con valor Long.
/ Divisin. Divide dos nmeros y devuelve un resultado con precisin decimal. Vemos un
ejemplo:
ldResultado = 428 / 17 25,1764705882353
Antes de hacer la divisin, se redondean los nmeros para convertirlos a Byte, Integer o Long,
estos mismos tipos sern los resultantes de la operacin, o un Variant con el valor de esos
tipos. La parte fraccionaria de los nmeros se trunca.
Mod. Devuelve el resto de la divisin de dos nmeros. Vemos un ejemplo:
ldResultado = 428 Mod 17 3
El resultado es un tipo Byte, Integer o Long; o un Variant con el valor de esos tipos.
Concatenacin:
Los operadores "&" y "+" se utilizan para unir varias cadenas de caracteres en una sola, siendo
conveniente el uso de "&" para evitar ambigedades a la hora de revisar el cdigo.
Pgina 5 de 43
Si una de las dos cadenas no es un tipo String, se hace una conversin a Variant con valor
String dando tambin como resultado Variant con String. Si alguna de las expresiones es Null o
Empty se considera cadena de longitud cero. En el cdigo podemos ver algunas de las
posibilidades de concatenacin de valores.
Public Sub Main()
Dim lcResultado As String
Dim lnNum As Integer
Dim lvntCambia As Variant
vamos a concatenar cadenas sencillas
atencin al espacio en blanco entre cadenas,
es importante tenerlo en cuenta
lcResultado = "hola" & "amigos" "holaamigos"
lcResultado = "hola " & "amigos" "hola amigos"
vamos a concatenar una cadena y un nmero
lnNum = 457
lcResultado = "el nmero " & lnNum "el nmero 457"
el contenido de lvntCambia es Empty
lcResultado = "el valor " & lvntCambia "el valor "
lvntCambia = Null asignamos Null a lvntCambia
lcResultado = "el valor " & lvntCambia
End Sub
Lgicos:
Efectan operaciones lgicas entre dos expresiones devolviendo un valor Boolean, y a nivel de
bit retornando un numrico.
And Realiza una conjuncin entre dos expresiones. Sintaxis:
XResultado = xExpresionY And xExpresionZ
La tabla muestra los valores que pueden tomar las expresiones y el resultante de la operacin.
Pgina 6 de 43
La tabla muestra los valores que pueden tomar las expresiones y el resultante de la operacin.
Pgina 7 de 43
La tabla muestra los valores que pueden tomar las expresiones y el resultante de la operacin:
Pgina 8 de 43
La tabla muestra los valores que pueden tomar las expresiones y el resultante de la operacin:
Pgina 9 de 43
Pgina 10 de 43
Comparacin:
Estos operadores devuelven True (Verdadero) o False (Falso) como resultado de comparar dos
expresiones. Si alguna de estas expresiones es Null, se devuelve siempre Null.
Al realizar comparaciones entre cadenas de caracteres hay que tener en cuenta la siguiente
instruccin:
Option Compare TipoComparacion
Se usa a nivel de mdulo para especificar el tipo de comparacin entre cadenas en el mdulo
donde se define. TipoComparacion puede ser Binary, Text o Database, siendo Binary el modo
usado por defecto.
Cuando se usa Binary, se realiza una comparacin basada en los valores binarios de los
caracteres; con lo que una expresin como "a" = "A" resultara falso.
Cuando se usa Text, se realiza una comparacin basada en los propios caracteres sin distinguir
maysculas de minsculas y en la configuracin del pas establecida en el sistema. Aqu una
expresin como "a" = "A" resultara verdadero.
La opcin Database slo se puede usar con Access, con la que se hacen comparaciones
basadas en el orden de los datos.
El modo de comparacin entre valores que no son de tipo Variant son los siguientes:
Se realiza una comparacin numrica si las dos expresiones son de tipo numrico; Byte,
Integer, Double, etc., o una es un Variant con valor numrico
Se realiza una comparacin de cadenas si las dos expresiones son String, o una es un Variant.
Se produce un error de tipos cuando una expresin es numrica y la otra es Variant de
cadena de caracteres que no puede convertirse a nmero.
Con una expresin numrica y otra Empty, se realiza una comparacin numrica dando a
Empty el valor 0.
Con un String y un Empty, se realiza una comparacin de cadenas dando a Empty el valor de
cadena de longitud cero.
Si ambas expresiones son Variant, depender del tipo interno de la expresin, quedando las
comparaciones de la siguiente manera:
Hay comparacin numrica si ambas expresiones son numricas.
Hay comparacin de cadenas si ambas expresiones son cadenas de caracteres.
Cuando una expresin es numrica y la otra una cadena, la expresin numrica es menor
que la de cadena.
Si una expresin es Empty y la otra numrica, se realiza comparacin numrica dando a
Empty el valor 0.
Si una expresin es Empty y la otra una cadena, se realiza comparacin de cadenas dando a
Empty el valor de cadena de longitud cero.
Cuando las dos expresiones son Empty el resultado es igual.
En comparaciones numricas, entre un Single y un Double, se redondea a Single. Entre un
Pgina 11 de 43
Los resultados de este operador dependen en gran medida de la instruccin Option Compare
vista anteriormente. El patrn de bsqueda puede estar compuesto por caracteres normales y
los caracteres especiales de la tabla de abajo.
Si queremos realizar una bsqueda de los propios caracteres especiales, hay que incluirlos
dentro de corchetes. Para buscar un carcter de corchete de cierre es necesario incluirlo slo
en el patrn. Podemos establecer un rango de bsqueda en la lista de caracteres, incluyendo
un guin "-" entre los valores inferior y superior; este rango ha de incluirse en orden
ascendente, de menor a mayor.
Para buscar el propio carcter de exclamacin "!", no hay que incluirlo entre corchetes. Para
buscar el carcter de guin "-", se debe poner al principio o final de la lista de caracteres
Pgina 13 de 43
If Then Else:
Mediante esta estructura podemos seleccionar el cdigo a ejecutar en funcin de que una
condicin a evaluar sea verdadera o falsa.
If condicin Then
[cdigo-if]
ElseIf condicin Then
[cdigo-elseif]
Else
[cdigo-else]
End If
En primer lugar se comprueba el valor de la condicin If, si es True se ejecuta el bloque de
cdigo asociado; en el caso de que la condicin sea False, se comprueba si existen lneas ElseIf,
que pueden ser una o ms, para ver si alguna de sus condiciones es True. Si ningn ElseIf es
verdadero, se ejecuta el cdigo asociado a Else si existe, pasando por ltimo a la primera lnea
despus de End If, que es la que cierra esta estructura.
En el momento en que se ejecuta el cdigo de una condicin que sea verdadera, el control del
programa pasa, despus de ejecutar ese cdigo a la primera lnea despus de End If, ignorando
las siguientes condiciones que existan.
Veamos un ejemplo demostrativo del uso de esta estructura de control:
Dim lnNum As Integer
Dim lcNombre As String
'asignamos valor a las variables
lnNum = 125
lcNombre = "Pedro"
'la condicin de la siguiente lnea
'devuelve False, por lo que pasamos
'a la siguiente
If lnNum = 11 Then
MsgBox "Valor de la variable lnNum: " & lnNum
'esta lnea da True, por lo que
'se ejecuta su cdigo asociado
ElseIf lcNombre = "Pedro" Then
'despus de ejecutar esta lnea
'pasaremos a End If
MsgBox "Valor de la variable lcNombre: " & lcNombre
'si no hubiera existido ningn valor
'verdadero, se habra ejecutado la
'siguiente lnea
Else
MsgBox "No hay coincidencias"
End If
Vamos a variar un poco el cdigo fuente para incluir un If anidado.
Dim lnNum As Integer
Dim lnOtroNum As Integer
Dim lcNombre As String
lnNum = 11
lnOtroNum = 2000
lcNombre = "Pedro"
'evaluamos la primera condicin
Pgina 14 de 43
Pgina 15 de 43
Pgina 18 de 43
Do [While|Until condicin]
[cdigo]
[Exit Do]
[cdigo]
Loop
O bien esta otra:
Do
[cdigo]
[Exit Do]
[cdigo]
Loop [While|Until condicin]
Cuando el flujo de la aplicacin llega a esta estructura, se evala la condicin, entrando a
ejecutar el bloque de cdigo en funcin de la partcula usada con Do:
Si es While y la condicin es True, se ejecutar el bloque de cdigo hasta que sea False o
encuentre una sentencia Exit Do; en el caso de que sea False, el control del programa pasar a
la primera lnea despus de Loop, que es la palabra que cierra este tipo de estructura.
Si es Until y la condicin es False, se ejecutar el bloque de cdigo hasta que sea True o
encuentre una sentencia Exit Do; cuando sea True, el control del programa pasar a la primera
lnea despus de Loop.
Utilizando ms de una estructura Do...Loop anidada, si forzamos una salida con Exit Do desde
uno de los bucles interiores, el control de la aplicacin pasar al bucle de nivel superior al que
estamos situados en ese momento. Es posible poner varias sentencias Exit Do dentro de un
bucle Do. Loop, para permitir la salida del bucle en diversas situaciones.
En el cdigo vemos algunas formas de crear este tipo de bucles.
Dim lnNum As Integer
Dim lnInterior As Integer
Dim lnCuenta As Integer
Dim lnAcumula As Integer
'el siguiente es un sencillo bucle que se mantiene en ejecucin hasta que
'dentro de su cdigo no se cambia el valor de una variable
lnNum = 1
lnAcumula = 1
Do While lnNum = 1
lnAcumula = lnAcumula + 1
If lnAcumula = 20 Then
lnNum = 2
End If
Loop
'en este tipo de construccin el cdigo se ejecuta al menos una vez, ya que la
'expresin de evaluacin de la condicin se realiza al final del bucle
lnNum = 2
Do
lnAcumula = lnAcumula + 1
If lnAcumula = 20 Then
lnNum = 2
End If
Loop While lnNum = 1
'con este Do...Loop utilizamos la clusula Until, y no saldremos del bucle hasta que la condicin
Pgina 19 de 43
Pgina 20 de 43
laCiudades(3) = "Berln"
laCiudades(4) = "Roma"
laCiudades(5) = "Bruselas"
laMonum(1) = "C"
laMonum(2) = "o"
laMonum(3) = "l"
laMonum(4) = "i"
laMonum(5) = "s"
laMonum(6) = "e"
laMonum(7) = "o"
'procesar el array, si encontramos un determinado elemento, entrar en
'un For Each...Next anidado
For Each lvntCiudad In laCiudades
MsgBox "Ciudad en proceso: " & lvntCiudad
If lvntCiudad = "Roma" Then
'tomar cada elemento del array laMonum y agregarlo a la variable lcMonumento
'una vez procesado todo el array mostrar el contenido de lcMonumento
For Each lvntLetra In laMonum
lcMonumento = lcMonumento & lvntLetra
Next
MsgBox "Contenido del array laMonum " & lcMonumento
End If
Next
IIF:
Devuelve uno de dos objetos, dependiendo de la evaluacin de una expresin.
IIf(Num > 1000, "Mayor a 1000", "Menor a 1000")
Goto:
Desva el flujo del programa a una etiqueta o seccin de cdigo identificada por un nombre y
dos puntos ":".
El uso de GoTo y etiquetas de cdigo en los procedimientos, salvo contadas excepciones como
puede ser el tratamiento de errores, es muy desaconsejable debido a la poca estructuracin
del cdigo y complejidad de mantenimiento que producen; por este motivo y slo en casos
muy determinados, desaconsejamos al lector el uso de este tipo de codificacin, ya que por lo
general, siempre existir una forma ms estructurada de realizar las tareas.
En los cdigos siguientes vamos a ver dos fuentes que realizan la misma tarea, en uno se utiliza
GoTo junto a una etiqueta, en el otro se hace una llamada a un procedimiento para realizar esa
tarea. Cdigo versin con GoTo.
'declaramos variables y les asignamos valor
Dim lcNombre As String
Dim lnNum As Integer
lcNombre = "Aurora"
'enviamos el control del programa a la etiqueta VerMsg, las lneas de
'cdigo entre Goto y la etiqueta no se ejecutarn
GoTo VerMsg
lnNum = 111
lcNombre = lcNombre & lnNum
VerMsg:
MsgBox "El valor de lcNombre es: " & lcNombre
Cdigo versin con llamada a procedimiento.
Public Sub Main()
'declaramos variables y les asignamos valor
Dim lcNombre As String
Dim lnNum As Integer
lcNombre = "Aurora"
'llamamos al procedimiento VerMsg y le pasamos como parmetro la variable
'lcNombre, al terminar de ejecutarse devolver el control a esta lnea
'con lo que el resto de lneas de este procedimiento si se ejecutarn
VerMsg lcNombre
lnNum = 111
lcNombre = lcNombre & lnNum
End Sub
' ---------------------------------Public Sub VerMsg(rcNombre As String)
MsgBox "El valor del Nombre es: " & rcNombre
End Sub
Directivas:
Las directivas del compilador son una serie de instrucciones especiales que permiten compilar
condicionalmente porciones de cdigo en funcin de la definicin de ciertas constantes
especiales para el compilador.
#Const NombreConstante = xExpresin.
Pgina 23 de 43
Mediante esta instruccin se definen las constantes de compilacin condicional, y se les asigna
una expresin que puede ser un nmero, cadena, otra constante condicional, o expresin que
no incluya la palabra clave Is.
No es posible declarar estas constantes como pblicas, siendo siempre privadas para el
mdulo en que se declaran.
#Ifthen#Else#End If:
Esta estructura de control sirve para compilar condicionalmente porciones de cdigo
dependiendo de la existencia de una constante de compilacin condicional. El
comportamiento es anlogo a la estructura If...Then...End If vista en el apartado dedicado a
estructuras de control.
En el cdigo se ha definido una constante de compilacin al comienzo del mdulo, por lo que
en el bloque #If...#End If se compilar slo el cdigo que est en la expresin de comprobacin
de existencia de la constante.
'definimos constante de compilacin condicional
#Const Vale = 1
Public Sub Main()
Dim lcNombre As String
lcNombre = "hola"
'si la constante est definida...
#If Vale Then
'este cdigo si se compilar
MsgBox "Valor de la variable " & lcNombre
#Else
'este cdigo no se compilar
MsgBox "No hay directiva definida"
#End If
End Sub
Existe adems un pequeo truco en el que podemos emplear las directivas del compilador,
para comentar un extenso bloque de cdigo de forma que no se ejecute, debemos incluir al
principio de cada lnea el carcter de comentario, con lo cual el compilador ignorar ese grupo
de lneas. Pues bien, si encerramos ese bloque de cdigo en una directiva #If...#End If
preguntando por una constante de compilacin condicional inexistente, ese cdigo no se
ejecutar, como muestra el cdigo.
Public Sub Main()
Dim lcNombre As String
lcNombre = "hola"
'la constante Comentario no est definida,
'por lo que el cdigo del siguiente #If...#End If
'no se compila ni ejecuta
#If Comentario Then
lcNombre = "cadena uno"
lcNombre = "cadena otra"
#End If
lcNombre = "cadena vlida"
MsgBox "Contenido de la variable " & lcNombre
End Sub
Pgina 24 de 43
ocurrido y se reinicializan a cero al salir del procedimiento, con el mtodo Clear(), o con la
instruccin Resume.
Propiedades:
Number. Nmero de error de los establecidos en VB o proporcionado por el programador.
Source. Nombre del proyecto en ejecucin.
Description. Cadena informativa sobre la causa del error.
HelpFile. Ruta del fichero de ayuda para el error.
HelpContext. Contiene un identificador para la ayuda contextual sobre el error.
LastDllError. Cdigo de error del sistema en la ltima llamada a una DLL.
Mtodos
Clear. Inicializa a cero o cadena vaca las propiedades del objeto Err.
Raise( nNumber, cSource, cDescription, cHelpFile, nHelpContext ). Provoca un error durante
la ejecucin del programa, los parmetros a pasar coinciden con las propiedades del objeto
explicadas anteriormente.
On Error:
Esta sentencia activa o desactiva una rutina de manejo de errores, que es una parte de cdigo
incluida en una etiqueta. On Error tiene los siguientes modos de empleo:
1. On Error GoTo Etiqueta.
Veamos el cdigo:
Public Sub Main()
Dim lcCadena As String
Dim lnNum As Integer
'definimos un controlador de errores
On Error GoTo CompErr
lcCadena = "A"
'la siguiente lnea provoca un error
'por lo que el control pasa a la
'etiqueta que tiene el controlador
lnNum = lcCadena
lcCadena = "otro valor"
lnNum = 232
Exit Sub
CompErr:
'tomamos informacin del error generado
'mediante el objeto Err
MsgBox "Error: " & Err.Number & vbCrLf & _
"Descripcin: " & Err.Description
End Sub
Si en un procedimiento que incluye un controlador de errores, no ponemos la instruccin Exit
Sub antes de la etiqueta que da comienzo al controlador, en el caso de que no se produzca un
error, al llegar a la etiqueta, el cdigo en ella incluido ser ejecutado, y como es lgico
nosotros slo queremos que ese cdigo se ejecute nicamente cuando haya un error. Por ese
motivo las rutinas de control de error se sitan en una etiqueta al final de un procedimiento y
antes del comienzo de la etiqueta se pone una sentencia Exit Sub para que el control del
programa salga del procedimiento en el caso de que no existan errores.
Si queremos que el control de la aplicacin vuelva al lugar donde se origin el error, tendremos
que utilizar la instruccin Resume en alguna de sus variantes:
Resume. Terminado de controlar el error, el programa vuelve a la lnea en donde se origin
dicho error. Hemos de tener cuidado de solucionar el error en la etiqueta de control de
Pgina 26 de 43
Ahora en el cdigo declararemos un array multidimensional, con tres elementos, los cuales a
su vez, contendrn cada uno otro array de cuatro elementos.
Dim aNombresMult(2,3) As String
La estructura de este array aparece en la siguiente figura. Al declarar un array, el valor inicial
de sus elementos estar en funcin del tipo de dato con el que se haya declarado; por
ejemplo, si es un array numrico, todos sus elementos sern cero, si es de tipo cadena sern
cadenas de longitud cero, etc.
Pgina 28 de 43
Para asignar valor a un elemento de un array usaremos el nombre del array, el ndice en el que
vamos a depositar un valor y el operador de asignacin "=" como indica el cdigo:
aNombres(2) = "Juan"
En el cdigo anterior hemos introducido en el elemento dos del array aNombres una cadena
de caracteres.
De forma similar, para recuperar el valor de un elemento de un array, utilizaremos el nombre
del array y el nmero de elemento a recuperar, asignndolo por ejemplo a una variable.
lcUnNombre = aNombres(2)
El cdigo anterior asigna el contenido del elemento dos del array aNombres en la variable
lcUnNombre.
Es posible igualmente, asignar el contenido de un array a otro, de la misma forma que se
asignan valores a una variable. De esta manera, evitamos tener que recorrer elemento a
elemento del array origen, para copiarlo en un array de destino.
En el cdigo siguiente, podemos ver un ejemplo de este tipo de operacin.
Public Sub Main()
'declarar arrays
Dim lcNombres(1 To 3) As String
Dim lcValores() As String
'asignar valores a uno de los arrays
lcNombres(1) = "Ana"
lcNombres(2) = "Elisa"
lcNombres(3) = "Laura"
'copiar el array asignado al
'array vaco
lcValores = lcNombres
End Sub
Debemos tener en cuenta, que si el array destino al que vamos a asignar el contenido de otro
array, es esttico, la asignacin no se producir, generndose un error. Por este motivo, el
array destino deber ser siempre dinmico.
Pgina 29 de 43
Pgina 30 de 43
Un detalle importante a tener en cuenta, es que si declaramos un array con mbito pblico en
un mdulo que tenga Option Base 1, y dicho array lo usamos en otro mdulo en el que el
lmite inferior para los arrays sea 0, el array seguir conservando 1 como lmite inferior.
Podemos comprobarlo en el cdigo fuente siguiente:
Module1
Option Explicit
el lmite inferior para los arrays
declarados en este mdulo ser 1
Option Base 1
declaramos el array en este mdulo,
pero ser visible en todos los mdulos
Public aPalabras(2) As String
-------------------------Public Sub Main()
VerArray
End Sub
-------------------------Module2
Option Explicit
Public Sub VerArray()
damos valor a los elementos del array
empezando por el elemento 1,
si intentramos usar el 0 provocaramos
un error
aPalabras(1) = "mesa"
aPalabras(2) = "silla"
End Sub
Otro modo ms flexible de indicar los lmites para un array se basa en el uso de la clusula To
en el momento de declarar el array, como aparece en el cdigo siguiente.
Dim aNombreArray( nIndInferior To nIndSuperior ) As Tipo
De esta forma, podramos ejecutar el cdigo fuente siguiente:
Public Sub Main()
Dim aNombres(1 To 5) As String
aNombres(1) = "Elena"
aNombres(2) = "Juan"
aNombres(3) = "Ana"
aNombres(4) = "Enrique"
aNombres(5) = "Luis"
End Sub
Esta clusula es muy verstil, ya que podemos utilizar un nmero determinado de elementos
para un array, asignndoles el intervalo de ndice que mejor convenga al contexto del
procedimiento o mdulo.
Como ejemplo para este punto, en el cdigo fuente 73 declaramos un array con cinco
elementos, pero le asignamos el intervalo de ndices del 18 al 22, teniendo siempre en cuenta
que si intentamos utilizar un nmero de ndice fuera de ese intervalo, se producir un error.
Pgina 31 de 43
Pgina 32 de 43
Option Explicit
'declarar un array visible a nivel de mdulo
Private aNombres() As String
' -------------------------------------Public Sub Main()
Dim lnElementosCompletos As Integer, Dim lnInd As Integer
'dimensionamos el array con dos elementos: 0 y 1
ReDim aNombres(1)
'asignamos valor slo al elemento 1
aNombres(1) = "casa"
VerArray ' vemos su contenido
'redimensionamos el array ampliando su nmero de elementos, pero perdemos
'el elemento 0
ReDim aNombres(1 To 3)
aNombres(2) = "Francia"
aNombres(3) = "Alemania"
'al visualizar el array, esperamos ver en el elemento 1 el valor "casa", pero
'esto no es as, ya que al redimensionar el array se pierden los valores anteriores
VerArray
'volvemos a redimensionar el array ampliando los elementos a 5,
'esta vez usamos Preserve para conservar los elementos que hubiera en el array
ReDim Preserve aNombres(1 To 5)
aNombres(1) = "Italia"
aNombres(4) = "Espaa"
aNombres(5) = "Reino Unido"
VerArray
'guardamos el nmero de elementos de array
lnElementosCompletos = UBound(aNombres)
'redimensionamos el array con dos elementos ms
ReDim Preserve aNombres(1 To UBound(aNombres) + 2)
'damos valor a los elementos nuevos, la variable lnElementosCompletos nos sirve
'para saber cuntos elementos del array tienen valor, y dar valor slo a los
'elementos que no lo tienen
For lnInd = lnElementosCompletos + 1 To UBound(aNombres)
aNombres(lnInd) = "Elemento nuevo " & CStr(lnInd)
Next
VerArray
'redimensionar el array disminuyendo el nmero de elementos
ReDim Preserve aNombres(1 To 3)
VerArray
End Sub
' -------------------------------------Public Sub VerArray()
'visualizar el contenido del array
Dim lnInd As Integer
'usando este bucle, recorremos el array desde el primer elemento hasta el ltimo,
'la variable lnInd guarda el ndice del elemento a consultar
For lnInd = LBound(aNombres) To UBound(aNombres)
MsgBox "Elemento " & lnInd & " del array" & vbCrLf & _
"Contenido: " & aNombres(lnInd)
Next
End Sub
Pgina 33 de 43
Pgina 36 de 43
Pgina 37 de 43
hola"
Veamos un ejemplo:
Public Sub Main()
Dim lcCorta As String
Dim lcLarga As String
Dim lnResulta As Integer
lcCorta = "es la pequea"
lcLarga = "esta cadena es mayor"
lnResulta = StrComp(lcCorta, lcLarga) ' -1
End Sub
Otro ejemplo
Dim TestStr1 As String = "ABCD"
Dim TestStr2 As String = "abcd"
Dim TestComp As Integer
TestComp = StrComp(TestStr1, TestStr2, CompareMethod.Text)
' Las cadenas son iguales, devuelve 0
TestComp = StrComp(TestStr1, TestStr2, CompareMethod.Binary)
' TestStr1 se ordena antes y devuelve -1.
TestComp = StrComp(TestStr2, TestStr1, CompareMethod.Binary)
' TestStr2 se ordena despues de TestStr1 y devuelve 1.
InStr(*nInicio, + cCadenaBuscar, cCadenaBuscada*, nTipoCompara+). Devuelve un valor
Variant Long que indica la primera ocurrencia de una cadena dentro de otra. Los parmetros
de esta funcin son los siguientes:
1. nInicio. Indica el carcter de comienzo de la bsqueda, si no se especifica comienza por el
primero.
2. cCadenaBuscar. Cadena en la que se realiza la bsqueda.
Pgina 39 de 43
Pgina 40 de 43
"Left"
10)
2)
4)
Pgina 42 de 43
Join Forma una cadena uniendo las cadenas contenidas en una matriz.
Dim TestItem() As String = {"Pickle", "Pineapple",
"Papaya"}
Dim TestShoppingList As String = Join(TestItem, ", ")
' Devuelve "Pickle, Pineapple, Papaya"
Split Devuelve una matriz unidimensional basada en cero que contiene un nmero
especificado de subcadenas