Conteúdo
Índice 🔎︎

# Instrução Dim

Declara variáveis ou matrizes.

Se as variáveis são separadas por vírgulas - por exemplo Dim v1, v2, v3 As String - as primeiras são definidas como variáveis Variant. Uma nova linha ou sinal de dois pontos (:), ajuda a separar as definições de variáveis.

      Dim text As String
      Dim pv As com.sun.star.beans.PropertyValue, d As Date
      Dim Units as Integer : Dim EULER As Double

Dim declara variáveis locais dentro de subrotinas. Variáveis globais são declaradas com instruções Global, Public ou Private .

### Sintaxe:

    Dim variable [(start To end)] [As typename][, variable2[char] [(start To end)] [,...]]

### 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 LibreOffice 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 LibreOffice 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 ExampleDim1
    Dim sVar As String
    Dim iVar As Integer
        sVar = "Office"
    End Sub

    Sub ExampleDim2
      ' Campo de dados bidimensionais
        Dim stext(20,2) As String
      Const sDim as String = " Dimensão:"
      For i = 0 To 20
        For ii = 0 To 2
            stext(i,ii) = str(i) & sDim & str(ii)
        Next ii
      Next i
      For i = 0 To 20
        For ii = 0 To 2
            MsgBox stext(i,ii)
        Next ii
      Next i
    End Sub