Module
Inhalte
Index 🔎︎

# Anweisung Dim

Deklariert eine Variable oder ein Array.

Sind die Variablen durch Kommata getrennt (beispielsweise DIM sPar1, sPar2, sPar3 AS STRING), so können nur Variant-Variablen definiert werden. Verwenden Sie eine eigene Definitionszeile für jede Variable.

    Dim sPar1 As String

    Dim sPar2 As String

    Dim sPar3 As String

Dim deklariert lokale Variablen in Subroutinen. Globale Variablen werden mit den Anweisungen PUBLIC oder PRIVATE deklariert.

## Syntax:

    [ReDim]Dim VarName [(Anfang To Ende)] [As VarTyp][, VarName2 [(Anfang To Ende)] [As VarTyp][,...]]

## Parameter:

VarName: Ein beliebiger Variablen- oder Array-Name.

Anfang, Ende: Numerische Werte oder Konstanten zwischen -32768 und 32767, die die Anzahl der Elemente (AnzahlElemente=(Ende-Anfang)+1) sowie den Indexbereich definieren.

Start und End können numerische Ausdrücke sein, wenn ReDim auf Prozeduren-Ebene verwendet wurde.

VarTyp: Schlüsselwort zur Deklaration des Datentyps einer Variable.

Schlüsselwort: Variablentyp

Bool: Boolesche Variable (True, False)

Currency: Currency-Variable (Währung mit 4 Nachkommastellen)

Date: Date-Variable (Datum)

Double: Gleitkommavariable mit doppelter Präzision (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer: Integer-Variable (-32768 - 32767)

Long: Long Integer-Variable (-2.147.483.648 -2.147.483.647)

Object: Object-Variable (Hinweis: Diese Variable kann später nur mit Set definiert werden!)

Single: Gleitkommavariable mit einfacher Präzision (3,402823 x 10E38 -1,401298 x 10E-45).

String: String-Variable (Zeichenkette) mit maximal 64.000 ASCII-Zeichen.

[Variant]: Variant-Variablentyp (enthält per Definition alle anderen Typen). Ist kein Schlüsselwort angegeben, werden Variablen automatisch als Typ Variant definiert, sofern sie nicht einem mit DefBool, DefVar o. ä. festgelegten Namensbereich angehören.

In LibreOffice Basic brauchen Variablen nicht explizit deklariert werden. Arrays müssen vor der Verwendung jedoch deklariert werden. Sie können Variablen mit der Anweisung Dim deklarieren und mehrere Deklarationen dabei durch Kommata trennen. Zur Deklaration eines Variablentyps können Sie entweder ein Typ-Deklarationszeichen hinter dem Namen eingeben oder das entsprechende Schlüsselwort verwenden.

LibreOffice Basic unterstützt ein- oder mehrdimensionalen Arrays, die durch einen angegebenen Variablentyp definiert werden. Arrays eignen sich für Programme mit zu bearbeitenden Listen oder Tabellen. Arrays bieten den Vorteil, dass ihre Elemente einzeln über einen Index adressiert werden können, der als numerischer Ausdruck oder als Variable formuliert werden kann.

Arrays werden mit dem Dim-Befehl deklariert. Es gibt dabei zwei Möglichkeiten, festzulegen, in welchem Bereich die Indizes angesprochen werden können:

DIM text(20) as String REM 21 Elemente, von 0 bis 20 durchnummeriert

DIM text(5 to 25) as String REM 21 Elemente, von 5 bis 25 durchnummeriert

DIM text(-15 to 5) as String REM 21 Elemente (das 0. ebenfalls!),

REM von -15 bis 5 durchnummeriert

Zweidimensionales Datenfeld

DIM text(20,2) as String REM 63 Elemente; 0 bis 20 Ebene 1, 0 bis 20 Ebene 2 und 0 bis 20 Ebene 3.

Sie können einen Array-Typ als dynamisch deklarieren, wenn die Anzahl seiner Dimensionen in der Subroutine oder Funktion, die das Array enthält, durch eine ReDim-Anweisung definiert wird. Allgemein können Sie eine Array-Dimension nur ein einziges Mal definieren und danach nicht mehr ändern. Innerhalb einer Subroutine können Sie Arrays mit ReDim deklarieren. Die Dimensionen können dabei nur als numerische Ausdrücke definiert werden. So wird sichergestellt, dass die Felder nur so groß wie nötig sind.

## Beispiel:

    Sub ExampleDim1

    Dim sVar As String

    Dim iVar As Integer

        sVar = "Office"

    End Sub

    Sub ExampleDim2

    ' Zweidimensionales Datenfeld

    Dim stext(20,2) As String

    Const sDim As String = " Dimension:"

    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