Module
Contents
Index 🔎︎

# 使用變數

下面介紹 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 陳述式必須位於模組的第一行，且在第一個 SUB 之前。通常，只有陣列需要明確地宣告。所有其他變數都依類型宣告字元進行宣告，或者如果省略了類型宣告字元，則宣告為預設類型 單精度型變數。

## 變數類型

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

## 初始變數值

只要變數一經宣告，就會自動將其設定為「空」值。請注意以下慣例：

只要數值型變數一經宣告，就會自動為其指定值「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