使用變數

From LibreOffice Help
Jump to: navigation, search

下面介紹 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$=」
Warning.png 一旦將某個變數宣告為某種類型,就無法再將同名的變數宣告為不同的類型!

強制變數宣告

若要強制宣告變數,請使用以下指令:

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

日期型變數

日期型變數僅可包含以內部格式儲存的日期值和時間值。透過 DateserialDatevalueTimeserialTimevalue,對日期型變數指定的值將自動轉換為內部格式。可以使用 DayMonthYearHourMinuteSecond 等函數將日期型變數轉換為一般數字。使用內部格式,可以透過計算兩個數字之差來比較日期/時間值。這些變數只能透過關鍵字 Date 進行宣告。

Dim Variable As Date

初始變數值

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

只要數值型變數一經宣告,就會自動為其指定值「0」。

日期型變數在內部被指定值 0,相當於使用 DayMonthYearHourMinuteSecond 等函數將其值轉換為「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