Indhold
Indholdsfortegnelse 🔎︎

# Dim-udtryk

Erklærer variabler eller matrixer

Hvis variablerne er adskil af kommaer, for eksempel Dim v1, v2, v3 As String - de første bliver defineret som Variant-variabler. Et linjeskift eller et kolon (:) hjælper med at adskille variabeldefinitioner.

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

Dim erklærer lokale variabler inde i subrutiner. Globale variabler erklæres med udtrykkene Global, Public eller Private

### Syntaks:

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

### Parametre:

variable: Ethvert varabel- eller matrixnavn.

typename: Nøgleord, der erklærer en variabels datatype.

Byte: Byte-variabel (0-255)

Boolean: Boolsk variabel (sand, falsk)

Currency: Valuta-variabel (Valuta med 4 decimalpladser)

Date: Datovariabel

Double: Dobbelt-præcis flydende variabel (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer: Heltalsvariabel (-32768 - 32767)

Long: Stor heltalsvariabel (32 bit) (-2.147.483.648 - 2.147.483.647)

Object: Objektvariabel (OBS: denne variabel kan kun efterfølgende defineres med Set!)

Single: Enkelt-nøjagtig decimaltalsvariabel (3,402823 X 10E38 - 1,401298 X 10E-45).

String: Strengvariabel bestående af højst 64,000 ASCII-tegn.

Variant: Variantvariabel-type (indeholder alle typer, angivet med definition). Hvis der ikke er angivet et typenavn, er variabler automatisk defineret som Variant-type, medmindre der bruges et udtryk fra DefBool til DefVar.

object: Universal Network object (UNO)-objekt eller ClassModule objekt-forekomst.

char: Specialtegn, der erklærer en variabels datatype.

I LibreOffice Basic behøver du ikke at erklære variabler udttrykkeligt. Du er imidlertid nødt til at erklære matrixer, før di kan bruge dem. Du kan erklære en variabel med udtrykket Dim med kommaer (,) til at adskille flere erklæringer. For at erklære en variabeltype indsætter du et type-erklæringstegn efter navnet eller bruger et relevant navn på et nøgleord.

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

array: Matrix-erklæring

start, end: Numeriske værdier eller konstanter, som definerer antallet af elementer (Antal elementer=(end-start)+1) og indeksområdet.

start og end kan være numeriske udtryk, hvis ReDim anvendes på procedure niveau.

LibreOffice Basic understøtter en- og flerdimensionelle arrays. Alle elementer i et array har samme variabeltype (evt. Variant). Arrays er passende hvis du har brug for at lave lister eller tabeller. Fordelen ved arrays er at det er muligt at adressere individuelle elementer via indekser, som kan formuleres som numeriske udtryk eller variable.

Matrixer erklæres med udtrykket Dim. Indeksområdet kan defineres på flere måder:

      Dim text(20) As String ' 21 elementer nummereret fra 0 til 20
      Dim value(5 to 25) As Integer ' 21 værdier nummereret fra 5 til 25
      Dim amount(-15 to 5) As Currency ' 21 beløb (herunder 0), nummereret fra -15 to 5
      REM Todimensionelt datafelt
      Dim table$(20,2) ' 63 elementer; fra 0 til 20 på niveau 1, fra 0 til 20 på niveau 2 og fra 0 til 20 på niveau 3.

Du kan erklære en matrix som dynamisk, hvis et ReDim udtryk definerer tallet af dimensioner i den subrutine eller den funktion, der indeholder matrixen. Generelt kan du kun definere en matrixdefinition en gang og du kan ikke ændre den. Inde i en subrutine kan du erklære en matrix med ReDim. Du kan kun definere dimensioner med numeriske udtryk. Dette sikrer, at felterne ikke er større end nødvendigt.

### Eksempel:

    Sub ExampleDim1
    Dim sVar As String
    Dim iVar As Integer
        sVar = "Office"
    End Sub

    Sub ExampleDim2
      REM Todimensionelt array
        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