Module
Contents
Index 🔎︎

# Dim Statement

宣告變數或陣列。

如果變數用逗號分隔 (例如，DIM sPar1, sPar2, sPar3 AS STRING)，則只能定義為變體型變數。請在單獨的行上定義每個變數。

    Dim sPar1 As String

    Dim sPar2 As String

    Dim sPar3 As String

Dim 宣告子常式中的局部變數。全域變數使用 PUBLIC 或 PRIVATE 陳述式來宣告。

## 語法：

    ReDim]Dim VarName [(start To end)] [As VarType][, VarName2 [(start To end)] [As VarType][,...]]

## 參數：

VarName：任意變數或陣列名稱。

Start, End： 用於定義元素數量的數值或常數 (NumberElements=(end-start)+1) 和索引範圍。

如果在程序層級採用 ReDim，則 Start 和 End 可以是數值型表示式。

VarType：用於宣告變數的資料類型的關鍵字。

Keyword：變數類型

Bool：布林型變數 (True (真)、False (假))

Currency：貨幣型變數 (具有 4 位小數的 Currency)

Date：日期型變數

Double：雙精度型浮點變數 (1.79769313486232 x 10E308 到 4.94065645841247 x 10E-324)

Integer：整數型變數 (-32768 - 32767)

Long：長型整數變數 (-2.147.483.648 - 2.147.483.647)

Object：物件型變數 (注意：隨後就只能使用 Set 定義此變數！)

Single：單精度型浮點變數 (3,402823 x 10E38 - 1,401298 x 10E-45).

String：最多可以含有 64,000 個 ASCII 字元的字串型變數。

[Variant]：變體型變數類型 (包含由定義指定的所有類型)。如果未指定關鍵字，除非使用 DefBool、DefVar 等陳述式，否則自動將變數定義為變體型類型。

在 LibreOffice Basic 中，您無須明確地宣告變數。但是，在使用陣列之前必須先對其進行宣告。您可以使用 Dim 陳述式宣告一個變數 (使用逗號分隔多個宣告)。若要宣告變數類型，請在名稱後輸入類型宣告字元，或者使用對應的關鍵字。

LibreOffice Basic 支援由指定變數類型定義的一維陣列和多維陣列。如果要在程式中編輯清單或表格，則使用陣列是適宜的。使用陣列的優點是，可用索引定位個別的元素，而該索引又可作為數值型表示式或變數來構成公式。

陣列使用 Dim 陳述式來進行宣告。定義索引範圍的方法有兩種：

DIM text(20) as String REM 編號為 0 到 20 的 21 個元素

DIM text(5 to 25) as String REM 編號為 5 到 25 的 21 個元素

DIM text(-15 to 5) as String REM 21 個元素 (含括 0)

REM 編號從 -15 到 5

二維資料欄位

DIM text(20,2) as String REM 63 個元素：第 1 級的 0 到 20；第 2 級的 0 到 20；第 3 級的 0 到 20。

如果使用 ReDim 陳述式在包含某個陣列的子常式或函式中定義了尺寸大小，則您可以將該陣列的類型宣告為動態。通常，您只能定義一次陣列尺寸，並且定義之後不能修改。在子常式中，您可以使用 ReDim 宣告陣列。您可以僅使用數值型表示式定義尺寸，這樣可以確保欄位可依需要變化。

## 示例：

    Sub ExampleDim1

    Dim sVar As String

    Dim iVar As Integer

        sVar = "Star Office"

    End Sub

    Sub ExampleDim2

    二維資料欄位

    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