![](https://codky.com/wp-content/uploads/2024/11/2299-1024x576.png)
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.