Sumário
Índice 🔎︎

# Instrução ReDim

Declara ou redefine variáveis ou matrizes.

### Sintaxe:

    ReDim [Preserve] variable [(start To end)] [As type-name][, variable2 [(start To end)] [As type-name][,...]]

Opcionalmente, adicione a palavra-chave Preserve para preservar o conteúdo do vetor que é redimensionado. ReDim só pode ser utilizado em sub-rotinas.

### Parâmetros:

variable: qualquer nome de variável ou matriz.

typename: palavra-chave que declara o tipo de dado da variável.

Byte: variável byte (0-255)

Boolean: variável booleana (True, False)

Currency: variável monetária (moeda com 4 casas decimais)

Date: variável de data

Double: variável de ponto flutuante de precisão dupla (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer: variável de número inteiro (-32768 - 32767)

Long: variável de número inteiro longo (-2.147.483.648 - 2.147.483.647)

Object: variável de objeto (Nota: essa variável só poderá ser definida posteriormente com Set!)

Single: variável de ponto flutuante de precisão simples (3,402823 x 10E38 - 1,401298 x 10E-45).

String: variável de cadeia de caracteres que consiste em um máximo de 64.000 caracteres ASCII.

Variant: variável de tipo Variant (contém todos os tipos, especificados por definição). Caso não seja especificada nenhuma palavra-chave, as variáveis serão automaticamente definidas como Variant, a não ser que seja usada uma instrução de DefBool para DefVar.

object: Objeto UNO (Universal Network Object) ou instância de objeto ClassModule.

char: caractere especial que declara o tipo de dados da variável.

Você não precisa declarar variáveis explicitamente no LibreOfficeDev Basic. No entanto, você precisa declarar uma matriz antes de usá-la. Você pode declarar uma variável com a instrução Dim, utilizando vírgulas (,)para separar as várias declarações. Para declarar um tipo de variável, digite o caractere de declaração de tipo seguido do nome ou use uma palavra-chave correspondente.

Declaration character | Variable type name
--- | ---
% | Integer
& | Long
! | Single
# | Double
$ | String
@ | Currency

array: declaração de matriz.

start, end: valores numéricos ou constantes que definem o número de elementos ( = (end-start)+1) e o intervalo de índices.

start e end podem ser expressões numéricas caso ReDim seja aplicado dentro da rotina.

O LibreOfficeDev Basic oferece suporte a matrizes uni ou multidimensionais que sejam definidas por um tipo de variável especificado. As matrizes são úteis quando o programa contém listas ou tabelas que você queira editar. A vantagem das matrizes é que elas possibilitam fazer referência a elementos individuais de acordo com índices, que podem ser formulados como variáveis ou expressões numéricas.

As matrizes são declaradas com a instrução Dim. Há várias maneiras para definir o intervalo de índices:

      Dim text(20) As String ' 21 elementos numerados de 0 a 20
      Dim value(5 to 25) As Integer ' 21 valores numerados de 5 a 25
      Dim amount(-15 to 5) As Currency ' 21 montantes (incluindo 0), numerados de -15 a 5
      REM campo de dados bidimensional
      Dim table$(20,2) ' 63 itens; de 0 a 20 nível 1, de 0 a 20 nível 2 e de 0 a 20 nível 3.

Você pode declarar um tipo de vetor como dinâmico se a instrução ReDim definir o número de dimensões na sub-rotina ou na função que contém o vetor. Em geral, você só poderá definir a dimensão do vetor uma única vez e não poderá modificá-la posteriormente. Em uma sub-rotina, pode-se declarar um vetor com ReDim. Você só pode definir dimensões com expressões numéricas. Isso garante que os campos tenham apenas o tamanho estritamente necessário.

## Exemplo:

    Sub ExampleRedim
        Dim iVar() As Integer, iCount As Byte
        ReDim iVar(5) As Integer
        For iCount = 1 To 5
            iVar(iCount) = iCount
        Next iCount
        ReDim iVar(10) As Integer
        For iCount = 1 To 10
            iVar(iCount) = iCount
        Next iCount
    End Sub