Instrução ReDim

Declara variáveis de matriz dinâmica e aloca ou realoca espaço de armazenamento no nível do procedimento.

Sintaxe

ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .

Argumentos:

  • Preserve: Preserva os dados em uma matriz existente quando você altera o tamanho da última dimensão.

  • Varname: Nome da variável; segue as convenções padrão de nomenclatura de variável.

  • Subscripts: Dimensões de uma variável de matriz.

Comentários

A instrução ReDim é usada para dimensionar ou redimensionar uma matriz dinâmica que foi formalmente declarada usando uma instrução Private, Public ou Dim com parênteses vazios (sem subscripts de dimensão). Você pode usar a instrução ReDim repetidamente para alterar o número de elementos e dimensões em uma matriz.

Se você usar a palavra-chave Preserve, poderá redimensionar apenas a última dimensão de matriz e não poderá alterar o número de dimensões. Por exemplo, se a matriz tiver apenas uma dimensão, você poderá redimensionar essa dimensão por ser a última e única dimensão. No entanto, se a matriz tiver duas ou mais dimensões, você só poderá alterar o tamanho da última dimensão e preservar o conteúdo da matriz.

O exemplo a seguir mostra como aumentar o tamanho da última dimensão de uma matriz dinâmica sem apagar nenhum dado existente contido na matriz.

Exemplo 1: Uso Básico de ReDim (Sem o Argumento Preserve)

Dim arr()
' Initially, create an array with 3 elements
ReDim arr(2)  ' Array can hold 3 elements (0, 1, 2)
' Assign values to the array
arr(0) = "Apple"
arr(1) = "Banana"
arr(2) = "Cherry"
' Now, resize the array to hold 5 elements
ReDim arr(4)  ' Array can hold 5 elements (0, 1, 2, 3, 4)
'If you try to access indexes 0, 1, 2 there will be no values.
' The previous values are lost because we did not use Preserve
arr(3) = "Date"
arr(4) = "Elderberry"

Exemplo 2: Uso do Argumento Preserve na Instrução ReDim para Manter os Dados Existentes

Dim arr()
' Initially, create an array with 3 elements
ReDim arr(2)  ' Array can hold 3 elements (0, 1, 2)
' Assign values to the array
arr(0) = "Apple"
arr(1) = "Banana"
arr(2) = "Cherry"
' Now, resize the array to hold 5 elements, keeping the existing data
ReDim Preserve arr(4)  ' Array can hold 5 elements (0, 1, 2, 3, 4)
' The previous values are preserved, so we can add more elements
arr(3) = "Date"
arr(4) = "Elderberry"

Cuidado: Se você tornar uma matriz menor do que era originalmente, os dados nos elementos eliminados serão perdidos.

Quando variáveis são inicializadas, as variáveis numéricas são inicializadas para 0 e as variáveis de string são inicializadas para uma string de tamanho zero (""). Uma variável que faz referência a um objeto deve ser atribuída a um objeto existente usando a instrução Set antes de ser usada. Até ser atribuída um objeto, a variável do objeto declarada tem o valor especial Nothing.