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 位小数的货币）

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 = "Office"

    End Sub

    Sub ExampleDim2

    ' 二维数据字段

    Dim stext(20,2) As String

    Const sDim As String = " 维度:"

    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