Debes saber un par de cositas, hay arrays estáticos y arrays dinámicos y tu estas trabajando con los dinámicos, es decir, no estas sujeto a trabajar con la misma cantidad de elementos con las que le asignes la primera ves ¿pero queeeé? y ¿por qué dices eso? si es así ¿como son los estáticos?
te explico:
Arrays Dinámicos
Option Explicit
Dim Var() As String
Private Sub Form_Load()
' Se asigna espacio de almacenamiento a una variable de matriz, usando ReDim
ReDim Var(2)
'asignar valores
Var(0) = "carlos"
Var(1) = "jose"
Var(2) = "martin"
MsgBox Var(0) & " " & Var(1) & " " & Var(2)
'redimensionamos...
ReDim Var(6) 'indicar la cantidad de elementos del vector
'asignar valores
Var(3) = "luis"
Var(4) = "Yessi"
Var(5) = "yohanna"
MsgBox Var(3) & " " & Var(4) & " " & Var(5)
End Sub
Arrays estáticos
Trabajando con arrays estáticos te evitas el tener que redimensionarlo, pero muchas veces no es lo que se desea, para declarar un array estático (array con un número fijo de elementos), Visual Basic hace tres consideraciones importantes:
- Para declarar un array global, hágalo en la sección de declaraciones de un módulo utilizando la sentencia Public.
- Para declarar un array a nivel de un módulo, hágalo en la sección de declaraciones del módulo utilizando la sentencia Public o Dim.
- Para declarar un array local a un procedimiento, utilice la sentencia Dim o Static dentro del propio procedimiento.
Option Explicit
' Es ESTÁTICO, por lo tanto indicas la cantidad de elementos de una vez. :o
Dim Var(3) As String
Private Sub Form_Load()
On Error GoTo Error
'asignar valores
Var(0) = "carlos"
Var(1) = "jose"
Var(2) = "martin"
MsgBox Var(0) & " " & Var(1) & " " & Var(2)
'NO puedes redimensionar el vector, porque es ESTÁTICO
ReDim Var(4) 'indicar la cantidad de elementos del vector
'asignar valores
Var(4) = "luis" 'Lo podrias hacer si fuera dinámico, pero no lo es o.O
Exit Sub 'NO presentamos el mensaje de ERROR sino es necesario...
Error:
MsgBox "No puedes redimensionar un array ESTATICO"
Err = 0
End Sub