Modulo
Contenuto
Indice 🔎︎

# Istruzione Dim

Dichiara una variabile o una matrice.

Se le variabili sono separate da una virgola (ad esempio, DIM sPar1, sPar2, sPar3 AS STRING), è possibile definire solo variabili di tipo Variant. Usate una riga di definizione separata per ogni variabile.

    Dim sPar1 As String

    Dim sPar2 As String

    Dim sPar3 As String

Dim dichiara le variabili locali all'interno delle subroutine. Le variabili globali vengono dichiarate con le istruzioni PUBLIC o PRIVATE.

## Sintassi:

    [ReDim]Dim NomeVar [(inizio To fine)] [As TipoVar][, NomeVar2 [(inizio To fine)] [As TipoVar][,...]]

## Parametri:

NomeVar: nome di una variabile o di una matrice.

Inizio, Fine: valori numerici o costanti che definiscono il numero di elementi (NumeroElementi=(fine-inizio)+1) e l'intervallo dell'indice.

Se ReDim è applicato a livello della procedura, Inizio e Fine possono essere espressioni numeriche.

TipoVar: parola chiave che dichiara il tipo di dati di una variabile.

Parola chiave: tipo di variabile

Bool: variabile booleana (True, False)

Currency: variabile per valuta (con 4 cifre decimali)

Date: variabile per data

Double: variabile numerica decimale con doppia precisione (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer: variabile numerica intera (compresa tra -32768 e 32767)

Long: variabile numerica intera lunga (compresa tra -2.147.483.648 e 2.147.483.647)

Object: variabile oggetto (Nota: questa variabile può essere definita solo con Set!)

Single: variabile numerica decimale con precisione singola (compresa tra 3,402823 x 10E308 e 1,401298 x 10E-45).

String: variabile stringa contenente fino a un massimo di 64.000 caratteri ASCII.

[Variant]: tipo di variabile variante (contiene tutti i tipi ed è specificata dalla definizione). Se non è specificata una parola chiave e non viene usata un'istruzione DefBool-DefVar, alle variabili viene assegnato automaticamente il tipo Variant.

In LibreOffice Basic, non è necessario dichiarare le variabili in modo esplicito. Tuttavia, prima di utilizzarle è sempre necessario dichiarare una matrice. Per dichiarare una variabile potete usare l'istruzione Dim, usando le virgole per separare più dichiarazioni. Per dichiarare un tipo di variabile, usate un carattere di dichiarazione del tipo dopo il nome oppure la parola chiave corrispondente.

LibreOffice Basic supporta le matrici a una o più dimensioni definite da un tipo di variabile specifico. L'uso delle matrici è appropriato se il programma contiene elenchi o tabelle da modificare. Il vantaggio delle matrici è che consentono di fare riferimento a singoli elementi in base agli indici, che possono essere formulati come espressioni numeriche o come variabili.

Le matrici vengono dichiarate con l'istruzione Dim. Potete procedere in due modi per definire l'intervallo degli indici:

DIM testo(20) as String REM 21 elementi numerati da 0 a 20

DIM testo(5 to 25) as String REM 21 elementi numerati da 5 a 25

DIM testo(-15 to 5) as String REM 21 elementi (incluso lo 0)

REM numerati da -15 a 5

Campo di dati bidimensionale

DIM testo(20,2) as String REM 63 elementi; da 0 a 20 livello 1, da 0 a 20 livello 2 e da 0 a 20 livello 3.

Potete dichiarare una matrice di tipo dinamico se un'istruzione ReDim definisce il numero di dimensioni della subroutine o la funzione che contiene la matrice. In genere, potete definire le dimensioni della matrice una sola volta e non potete modificarle successivamente. All'interno di una subroutine, potete dichiarare una matrice con ReDim. Per definire le dimensioni potete usare solo espressioni numeriche. In questo modo si garantisce che i campi non superino la dimensione necessaria.

## Esempio:

    Sub ExampleDim1

    Dim sVar As String

    Dim iVar As Integer

        sVar = "Office"

    End Sub

    Sub ExampleDim2

    ' Campo di dati bidimensionale

    Dim stext(20,2) As String

    Const sDim As String = " Dimensione:"

    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