Conteúdo

# 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 da matriz que está a ser redimensionada. ReDim só pode ser utilizado em sub-rotinas.

### Parâmetros:

variável: Qualquer nome de variável ou de matriz.

typename: Palavra-chave que declara o tipo de dados de uma variável.

Byte: Variável de tipo byte (0-255)

Booleano: Variável booleana (True, False)

Moeda: Variável de moeda (moeda com 4 casas decimais)

Data: Variável da data

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

Número inteiro: variável de números inteiros (-32768 - 32767)

Longo: Variável de números inteiros longos (-2.147.483.648 - 2.147.483.647)

Object: Variável de objeto (Nota: esta variável só pode ser definida posteriormente com Set!)

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

String: Variável de tipo String composta por um máximo de 2 147 483 647 caracteres.

Variant: Tipo de variável Variant (inclui todos os tipos, conforme especificado por definição). Se não for especificado um nome de tipo, as variáveis são automaticamente definidas como do tipo Variant, a menos que seja utilizada uma instrução entre DefBool e DefVar.

objeto: objeto Universal Network (UNO) ou instância do objeto ClassModule.

char: Carácter especial que declara o tipo de dados de uma variável.

No LibreOffice Basic, não é necessário declarar variáveis explicitamente. No entanto, é necessário declarar matrizes antes de as poder utilizar. Pode declarar uma variável com a instrução Dim, utilizando vírgulas (,) para separar várias declarações. Para declarar o tipo de uma variável, introduza um caractere de declaração de tipo a seguir ao nome ou utilize o nome da palavra-chave de tipo correspondente.

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

array: Declaração de um array.

início, fim: Valores numéricos ou constantes que definem o número de elementos (NumberElements=(fim-início)+1) e o intervalo de índices.

start e end podem ser expressões numéricas se ReDim for aplicado ao nível do procedimento.

O LibreOffice Basic aceita matrizes únicas ou multi-dimensionais definidas por um tipo de variável específico. As matrizes são úteis caso o programa contenha listas ou tabelas que deseje editar. A vantagem das matrizes é que tornam possível endereçar elementos individuais de acordo com os índices, que podem ser formulados como expressões numéricas ou variáveis.

Os tabulares são declarados com a instrução Dim. Existem várias formas de definir o intervalo de índices:

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

É possível declarar um tipo de matriz como dinâmico se uma instrução ReDim definir o número de dimensões na sub-rotina ou na função que contém a matriz. Geralmente, só é possível definir uma dimensão da matriz uma vez, não sendo possível alterá-la. Dentro de uma sub-rotina, é possível declarar uma matriz com ReDim. As dimensões só podem ser definidas com expressões numéricas. Isto garante que os campos tenham apenas o tamanho 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

Necessitamos da sua ajuda!