Beruflich Dokumente
Kultur Dokumente
Contenido
1 - Arreglos y vectores
2 - Matrices
Por ejemplo imaginemos que tenemos 20 variables de tipo String que almacenan
nombres (nombre1, nombre2, etc..). si yo ahora quisiera pasar todas estas cadenas a
minúsculas tendría que utilizar la función Lcase con cada variable: nombre1 =
Lcase(nombre1), nombre2 = Lcase(nombre2), etc..
For x = 0 To 30
nombres(x) = LCase(nombres(x))
Next
Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada
variable, hemos utilizado un arreglo llamado nombres con un número de índice 30 , es
decir que almacena 30 datos de tipo String
Importante: los arreglos se dividen en 2 grupos, los vectores y las matrices. Los
vectores son arreglos que contienen una sola dimensión y las matrices 2 o mas
dimensiones.
alumnos(1) = "juan"
alumnos(2) = "micaela"
alumnos(3) = "maría"
alumnos(4) = "ignacio"
Otro ejemplo
Next x
Por ejemplo:
Option Explicit
nombre As String
apellido As String
cpostal As Integer
End Type
personas(1).nombre = "carlos"
personas(1).apellido = "Martínez"
personas(1).cpostal = 1900
personas(2).nombre = "Héctor"
personas(2).apellido = "rosales"
personas(2).cpostal = 1898
End Sub
Para utilizar una estructura definida por nosotros en vectores o matrices, se hace de la
forma habitual, con la diferencia que debemos declarar el arreglo utilizando el tipo de
dato Type que hayamos creado, en este caso Dim personas(1 to 3) as agenda
2 - Las matrices
Como se dijo anteriormente, las matrices son arreglos de mas de 1 dimensión (2 o mas),
a diferencia de los vectores que poseen una sola dimensión.
Las matrices se declaran en el código de manera igual que los vectores, con la diferencia
que debemos indicar mas subíndices de acuerdo a la cantidad de dimensiones que
posea la matriz.
Si luego quisiera acceder a los datos de la misma basta con referirnos a los subíndices
Por ejemplo:
para acceder a los datos sería exactamente de la misma manera pero debemos utilizar un
índice mas.
Ejemplo:
cubo (1, 1 , 1) = 50
cubo (1, 1 , 2) = 50
cubo (1, 1 , 3) = 50
cubo (1, 2 , 1) = 50
cubo (1, 2 , 2) = 50
cubo (1, 2 , 3) = 50
cubo (1, 3 , 1) = 50
cubo (1, 3 , 2) = 50
cubo (1, 3 , 3) = 50
cubo (2, 1 , 1) = 50
cubo (2, 1 , 2) = 50
cubo (2, 1 , 3) = 50
cubo (2, 2 , 1) = 50
cubo (2, 2 , 2) = 50
cubo (2, 2 , 3) = 50
cubo (2, 3 , 1) = 50
cubo (2, 3 , 2) = 50
cubo (2, 3 , 3) = 50
cubo (3, 1 , 1) = 50
cubo (3, 1 , 2) = 50
cubo (3, 1 , 3) = 50
cubo (3, 2 , 1) = 50
cubo (3, 2 , 2) = 50
cubo (3, 2 , 3) = 50
cubo (3, 3 , 1) = 50
cubo (3, 3 , 2) = 50
cubo (3, 3 , 3) = 50
En el ejemplo anterior, que es un poco extenso, es para que veas todos los posibles
valores que puedes almacenar en una matriz de 3 x 3 x 3, y que da como resultado un
arreglo de 27 valores posibles.
3 - Vectores dinámicos
Hasta ahora habíamos visto solo vectores o arreglos de tamaño fijo, ¿ pero qué pasa
cuando no sabemos el tamaño o el largo de un vector y queremos que sea variable ?.
Visual basic posee una sentencia o función que nos permite cambiar el largo de un
vector en tiempo de ejecución, dándonos así mas flexibilidad, y de esta manera no
desperdiciar memoria y recursos de la pc creando vectores mas largos de lo que
realmente necesitamos.
Esta función se llama ReDim y ReDim Preserve , y un ejemplo de como aplicarla sería
de la siguiente manera:
alumnos(1) = "Luciano"
alumnos(2) = "Esteban"
alumnos(3) = "Mariano"
alumnos(4) = "Pedro"
Ahora para redimensionar el tamaño del vector por ejemplo a 7 elementos, utilizamos la
función ReDim Preserve, para preservar los 4 valores anteriores y le agregamos 3
valores mas:
alumnos(5) = "Karina"
alumnos(6) = "Raúl"
alumnos(7) = "Romina"
Para eliminar un array, arreglo o vector, podemos utilizar Erase, por ejemplo:
Erase Nombre_Del_Vector
Lbound y Ubound nos devuelve un número de tipo Long que nos permite saber el
límite superior e inferior de un vector o una matriz.
' Devuelve 1
LimiteInferior = LBound(UnVector)
' Devuelve 520
LimiteSuperior = UBound(UnVector)
' Devuelve 0
LimiteInferior = LBound(UnaMatriz, 1)
' Devuelve 20
LimiteSuperior = UBound(UnaMatriz, 1)
' Devuelve 5
LimiteInferior = LBound(UnaMatriz, 2)
' Devuelve 100
LimiteSuperior = UBound(UnaMatriz, 2)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 1)
' Devuelve 10
LimiteSuperior = UBound(OtraMatriz, 1)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 2)
' Devuelve 20
LimiteSuperior = UBound(OtraMatriz, 2)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 3)
' Devuelve 30
LimiteSuperior = UBound(OtraMatriz, 3)
End Sub
Como habrás visto en los ejemplos anteriores, para conocer los limites superiores e
inferiores en los vectores, solo se debe pasar como parámetro a las funciones Lbound y
Ubound, el nombre del vector con el cual queremos trabajar.
Si deseamos recorrer todos los elementos de un vector o una matriz podemos hacerlo
mediante un bucle For de la siguiente manera:
For x = LBound(vector) To UBound(vector)
MsgBox vector(x)
Next i
Visual basic en su sexta versión incorpora estas 3 funciones para trabajar solo con
vectores. Estas funciones están relacionadas con el tratamiento de las cadenas de
caracteres.
Función Join
Esta función se utiliza para unir en una sola variable el conjunto de subcadenas de un
vector. Esta función tiene solo 2 parámetros y es muy fácil de usar. Ejemplo:
vector(1) = "Carlos"
vector(2) = "Pedro"
vector(3) = "Juan"
Función Split:
Split se utiliza para rellenar un vector dinámico que contiene un número de subcadenas
a partir de una cadena que le pasamos como parámetro a la función.
Para aclarar un poco un ejemplo
Vector(0) = "maría"
Vector(1) = "natalia"
Vector(2) = "Romina"
End Sub
Función Filter :
Filter (vector donde buscar, cadena a buscar, valor booleano que indica si incluir o
excluir la cadena)
Ejemplo:
' Vector
Dim Alumnos(1 To 4) As String
Alumnos(1) = "Luciano"
Alumnos(2) = "Lucas"
Alumnos(3) = "juan"
Alumnos(4) = "Natalia"
Hasta acá se vió los aspectos de los vectores y matrices como estructuras que nos
permiten almacenar datos y resolver problemas lógicos en nuestros programas. Ahora
veremos los Arreglos de controles o vectores de controles
En un arreglo de controles todos los controles deben ser del mismo tipo y además no
puede haber un control dentro del arreglo que tenga el mismo número de índice, ya
que sería imposible identificarlo en el conjunto, además VB no lo permitiría y nos
mostraría un error.
Las ventajas principales que tenemos cuando trabajamos con un vector de controles
son las siguientes:
Nota: cualquier control de visual basic que no tenga un arreglo creado, la propiedad
index de los mismos no tendrá ningún número o valor, ya que esta propiedad está
reservada para los controles que formen parte de un vector o arreglo.
Ejemplo:
Como te darás cuenta, si tuvieses que hacer esto manualmente, es decir deshabilitar
cada TextBox individualmente tendrías que escribir
text1.enabled = False
y así para cada uno de los controles. en cambio haciendo un arreglo de controles,
recorremos mediante un For todos los controles refiriendonos al índice y
estableciéndole la propiedad Enabled en False para deshabilitarlos.
Dim i As Integer
For i = 0 To 9
text1(i).Enabled = False
Next
Por ejemplo supongamos que tenemos un programa que tiene muchos formularios. y
varios de esos formularios tienen una función que se encarga de limpiar todas los
textBox y eliminar el contenido de los mismos
Para solucionar esto, y no tener que repetir código, podríamos crear en un módulo de
código, una SubRutina para que la puedan utilizar y acceder desde todos los
formularios.
Para poder pasar un vector como parámetro a una rutina, la variable o argumento en la
Subrutina, debe estar declarada como de tipo Object
Ejemplo
Option Explicit
Private Sub Command1_Click()
Call Limpiar_TextBox(Text1)
End Sub
Dim i As Integer
For i = 0 To El_TextBox.Count - 1
El_TextBox(i).Text = vbNullString
Next
End Sub