模块
目录
索引 🔎︎

# 使用变量

下面介绍 LibreOffice Basic 中变量的基本用法。

## 变量标识符的命名规范

变量名称最多可以含有 255 个字符。变量名称的第一个字符「必须」是字母 A-Z 或 a-z。变量名称中可以使用数字，但不能使用除下划线字符 ("_") 以外的标点符号和特殊字符。在 LibreOffice Basic 中，变量标志是不区分大小写的。变量名称可以含有空格，但如果含有空格，就必须将其放在方括号中。

变量标识符示例:

          MyNumber=5
| 正确
          MyNumber5=15
| 正确
          MyNumber_5=20
| 正确
          My Number=20
| 无效，含有空格的变量必须用方括号括起来
          [My Number]=12
| 正确
          DéjàVu=25
| 无效，不允许使用特殊字符
          5MyNumber=12
| 无效，变量不能以数字开头
          Number,Mine=12
| 无效，不允许使用标点符号

## 声明变量

在 LibreOffice Basic 中，您不需要显式声明变量。变量声明时使用「Dim」语句。一次可以声明多个变量，但变量名称之间需要用逗号分隔。要定义变量类型，请在名称后使用类型声明符号，或者使用适当的关键字。

变量声明示例:

          Dim a$
| 声明变量「a」为字符串
          Dim a As String
| 声明变量「a」为字符串
          Dim a$, b As Integer
| 将一个变量声明为字符串，另一个声明为整数
          Dim c As Boolean
| 将「c」声明为可以是 TRUE 或 FALSE 的布尔变量

在声明变量时，即使是在声明而不是在关键字中使用，也要求每次都必须使用类型声明字符。因此以下语句无效:

          Dim a$
| 将变量「a」声明为字符串
          a="TestString"
| 缺少类型声明: 「a$=」

一旦将某个变量声明为某种类型，就不能再将同名的变量声明为不同的类型！

### 强制变量声明

要强制声明变量，请使用以下命令:

    Option Explicit

「Option Explicit 语句必须是模块中的第一行，位于第一个子程序之前。通常，只有数组需要显式声明。所有其他变量都按照类型声明字符进行声明，而如果省略了类型声明字符，则声明为默认类型单精度」。

## 变量类型

LibreOffice Basic 支持四种变量:

- 「数字」变量可以含有数字值。有些变量用于存储较大或较小的数字，另一些则用于存储浮点数或分数。

- 「字符串」变量含有字符串。

- 「布尔」变量含有 TRUE 或 FALSE 值。

- 「对象」变量可以存储各种类型的对象，例如在文档中含有表格和文档。

### 整数变量

整数变量的范围从 -32768 到 32767。如果向整数变量指定浮点数值，小数部分将被转换成下一个整数。整数变量在过程中的计算速度非常快，适合用作循环中的计数器变量。整数变量只需要两个字节的内存。其类型声明字符是「%」。

    Dim Variable%
    Dim Variable As Integer

### 长整数变量

长整数变量的范围从 -2147483648 到 2147483647。如果向长整数变量指定浮点数值，小数部分将被转换成下一个整数。长整数变量在过程中的计算速度非常快，适合用作大值循环中的计数器变量。长整数变量需要四个字节的内存。其类型声明字符是「&」。

    Dim Variable&
    Dim Variable As Long

### 小数变量

小数变量可以取正值、负值或零值，精确度最多到 29 位。

您可以用加号 (+) 或减号 (-) 作为小数的前缀。 (之间的空格可有可无)。

如果将一个小数赋值给一个整型变量，LibreOffice Basic 向上或向下取整。

### 单精度变量

单精度类型的变量可以取的正负值范围为3.402823 x 10E38 到1.401298 x 10E-45。单精度变量是浮点变量，其小数精度会随着非小数部分位数的增加而降低。单精度变量适合进行平均精度的数学计算。其计算速度比整数变量的计算速度慢，但比双精度变量的计算速度快。单精度变量需要四个字节的内存。类型声明符是「!」。

    Dim Variable!
    Dim Variable As Single

### 双精度变量

双精度变量可以接受从 1.79769313486232 x 10E308 到 4.94065645841247 x 10E-324 之间的正值或负值。双精度变量是浮点变量，其小数精度会随着非小数部分位数的增加而降低。双精度变量适合进行精确计算。其计算速度比单精度变量慢。双精度变量需要八个字节的内存。其类型声明字符是「#」。

    Dim Variable#
    Dim Variable As Double

### 货币变量

货币变量在内部存储为 64 位数字 (8 个字节)，并显示为固定位数的小数，其中含有 15 位非小数和 4 位小数。 取值范围从 -922337203685477.5808 到 +922337203685477.5807。货币变量用于计算货币值，且具有高精确度。 类型声明符是「@」。

    Dim Variable@
    Dim Variable As Currency

### 字符串变量

字符串变量可以保留最长达 65,535 个字符的字符串。每个字符都存储为相应的 Unicode 值。字符串变量适合在程序内进行字处理，也可以用于临时存储最长达 64 KB 的不可打印字符。存储字符串变量所需的内存量取决于此变量中含有的字符数。其类型声明字符是「$」。

    Dim Variable$
    Dim Variable As String

### 布尔变量

布尔变量只存储以下两个值之一: TRUE 或 FALSE。数字 0 的计算结果为 FALSE，其他任何值的计算结果均为 TRUE。

    Dim Variable As Boolean

### 日期变量

日期变量只能含有以内部格式存储的日期值和时间值。 通过 Dateserial、 Datevalue、 Timeserial 或者 Timevalue 赋于日期变量的值将自动转换为内部格式。 可用 Day、Month、 Year 或者 Hour、 Minute、Second 函数将日期变量转换为普通数字。 内部格式可以通过计算两个值之间的差比较日期/时间值。 这些变量只能用关键字「Date」声明。

    Dim Variable As Date

## 变量初始值

只要一声明变量，就会自动将其设置为「NULL」值。请注意以下规范:

声明「数字」变量后将自动指定值「0」。

「日期」变量在内部被指定值 0，相当于使用 Day、Month、Year 或 Hour、Minute、Second 函数将其值转换为「0」。

「字符串」变量在声明时被指定为空字符串 ("")。

## 数组

LibreOffice Basic 可以通过指定的变量类型来定义一维和多维数组。数组适用于在程序中编辑列表和表格。数组中的各个元素可以通过数字索引来定位。

数组「必须」使用「Dim」语句进行声明。定义数组的索引范围时可以使用以下方法:

          Dim Text$(20)
| 编号为 0 到 20 的 21 个元素
          Dim Text$(5,4)
| 30 个元素 (6 x 5 个元素的矩阵)
          Dim Text$(5 To 25)
| 编号为 5 到 25 的 21 个元素
          Dim Text$(-15 To 5)
| 编号为 -15 到 5 的 21 个元素 (包括 0)

索引范围可以包括正数与负数。

## 常数

常数有一个固定的数值，在程序中只能定义一次，不能重复定义:

    Const ConstName=Expression