La instrucción ReDim permite redimensionar una matriz en Visual Basic. Personalmente la he utilizado cuando he usado VBA en Access, un código que es compatible con VB6 (Visual Basic versión 6).
Es útil en aquellos casos en que necesitamos almacenar datos en una matriz pero no sabes, a priori, cual será el número total de elementos a incorporar.
Un ejemplo práctico es cuando hacemos una utilidad para tratar los archivos de una carpeta pero al hacer el programa no sabemos cuantos archivos puede llegar a contener dicha carpeta y no sería eficiente diseñar matrices enormes para prever cualquier situación.
Option Explicit Dim MiMatriz() As String Private Sub Form_Load() ReDim MiMatriz(NuevoIndice) As String End Sub
La instrucción Redim puede ir seguido del parámetros Preserve: «Redim Preserve…» como su nombre indica lo que se hace es indicarle que al aumentar el tamaño de la matriz se preserven los datos de la misma.
La instrucción Redim puede utilizarse también para liberar espacio en una matriz ya procesada y que no necesitamos tener sus datos. Por ejemplo poniendo ReDim MiMatriz(0)
Como iterar por la matriz:
Dim ind as integer For ind = 0 To UBound(MiMatriz) debug.print MiMatriz(ind) Next
Usar Redim para leer el contenido de Excel
En este ejemplo se usa la instrucción ReDim para leer el contenido de una hoja de Excel.
Public Sub ImportarDatosLaCaixa(Optional ArchivoExcel As String = "") Dim RutaArchivo As String Dim ObjHoja As Object Dim strfilename As String Dim objexcel As Object Dim i As Integer Dim objHojas As Object 'Integer Dim Respuesta As String Dim itm As Variant Dim Sheetcount As Integer Dim canHojas As Integer Dim Lista() strfilename = ArchivoExcel If Len(Dir(strfilename)) = 0 Then Respuesta = MsgBox("El archivo XLS que especificó no existe. Verifique la ruta", vbYesNo + vbCritical + vbDefaultButton2, " Archivo ") Exit Sub End If Set objexcel = CreateObject("excel.application") With objexcel .displayalerts = False .workbooks.Open (strfilename) Sheetcount = .worksheets.Count ReDim Lista(1 To Sheetcount) For i = 1 To Sheetcount '.worksheets.Count Set objHojas = .sheets(i) canHojas = canHojas + 1 Lista(i) = .sheets(i).Name DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel8, "LaCaixa2008", strfilename, True, Lista(i) & "!" & "A1:Q300" Next i End With objexcel.Quit Set objexcel = Nothing 'close Set ObjHoja = Nothing MsgBox "Proceso Finalizado" End Sub
Puedes consultar más ejemplos de Visual Basic en la sección Trucos y ejemplo de VBA para Microsoft Access.
Ejemplo de uso de matrices
En Visual Basic for Applications (VBA), que es comúnmente utilizado en aplicaciones de Microsoft como Excel, las matrices se usan para almacenar múltiples valores en una única estructura de datos variable. Te proporcionaré un ejemplo simple del uso de matrices en VBA:
Supongamos que queremos crear una matriz que almacene los nombres de cinco empleados. Luego, queremos recorrer la matriz para mostrar cada nombre en una caja de mensaje. Aquí te muestro cómo podrías hacerlo:
Sub EjemploMatrices() ' Declaramos una matriz de tipo String con 5 elementos Dim nombres(1 To 5) As String ' Asignamos valores a la matriz nombres(1) = "Ana" nombres(2) = "Luis" nombres(3) = "Marta" nombres(4) = "Juan" nombres(5) = "Sofía" ' Recorremos la matriz y mostramos cada nombre en una caja de mensaje Dim i As Integer For i = 1 To 5 MsgBox "Empleado " & i & ": " & nombres(i) Next i End Sub
En este código:
- Se declara una matriz llamada nombres que puede contener cinco elementos de tipo String.
- Se asignan valores a cada uno de los elementos de la matriz.
- Se usa un bucle For para recorrer la matriz desde el primer elemento (1) hasta el último (5).
- En cada iteración del bucle, se muestra una caja de mensaje (MsgBox) con el nombre del empleado correspondiente a la posición actual del bucle.
Este es un ejemplo básico, pero las matrices pueden ser mucho más complejas y versátiles, permitiendo el manejo eficiente de grandes cantidades de datos.