Como usar a instrução ReDim em VBA?

Em VBA (Visual Basic for Applications), a instrução `ReDim` é utilizada para redimensionar arrays dinâmicos. Isso é útil quando você não sabe, no momento da declaração do array, quantos elementos ele precisará conter. Aqui está como você pode usar o `ReDim`:

Declaração do Array Dinâmico

Primeiro, você declara um array sem especificar o número de elementos:

Dim meuArray() As Integer

Redimensionando o Array com ReDim

Quando você souber quantos elementos precisa no array, pode usar `ReDim` para redimensioná-lo:

ReDim meuArray(4)

Este comando redimensiona `meuArray` para conter 5 elementos (índices de 0 a 4).

Preservar os Dados com Preserve

Se você já tiver dados no array e quiser redimensioná-lo sem perder esses dados, use a palavra-chave `Preserve`:

ReDim Preserve meuArray(10)

O uso de `Preserve` mantém os dados existentes no array. No entanto, é importante notar que `Preserve` só permite redimensionar a última dimensão de um array multidimensional.

Exemplo Completo

Aqui está um exemplo completo ilustrando o uso de `ReDim` e `Preserve`:

Sub ExemploReDim()
    ' Declarar um array dinâmico
    Dim numeros() As Integer

    ' Redimensionar array para conter 3 elementos
    ReDim numeros(2)

    ' Atribuir valores
    numeros(0) = 10
    numeros(1) = 20
    numeros(2) = 30

    ' Redimensionar mantendo os valores existentes,
    ' adicionando mais 2 elementos
    ReDim Preserve numeros(4)

    ' Atribuir valores aos novos elementos
    numeros(3) = 40
    numeros(4) = 50

    ' Imprimir valores do array
    Dim i As Integer
    For i = LBound(numeros) To UBound(numeros)
        Debug.Print numeros(i)
    Next i
End Sub

Considerações

  • Limitações do Preserve: `Preserve` só permite aumentar o tamanho do array na última dimensão, ou redimensionar em uma dimensão enquanto mantém o mesmo tamanho nas outras.
  • Reinicialização sem Preserve: Quando `ReDim` é usado sem `Preserve`, todos os dados existentes no array serão perdidos. Isso redefine o array com novos valores padrão de acordo com o tipo de dados do array.
  • Uso de LBound e UBound: As funções `LBound(array)` e `UBound(array)` são úteis para determinar os limites inferior e superior das dimensões do array, respectivamente.

Ao entender estas práticas e limitações, você pode utilizar `ReDim` eficientemente para manipular arrays dinâmicos em VBA.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project