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.

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