模块
目录
索引 🔎︎

# Dim 语句

声明变量或数组。

如果变量之间用逗号分隔 (例如，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