Uso de ReDim en Visual Basic

Uso de Redim en Visual Basic

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:

  1. Se declara una matriz llamada nombres que puede contener cinco elementos de tipo String.
  2. Se asignan valores a cada uno de los elementos de la matriz.
  3. Se usa un bucle For para recorrer la matriz desde el primer elemento (1) hasta el último (5).
  4. 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies