目次
索引 🔎︎

# Dim Statement

変数や配列を宣言します。

複数の変数名をコンマで区切って 1 度に宣言した場合 (たとえば 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:要素数 (要素の数 = (end-start)+1) とインデックス範囲を定義する数値または定数。

プロシージャーのレベルで ReDim を適用する場合、Start と End には数値表式を使えます。

VarType: 変数型を指定するキーワード。

キーワード: 変数型

Bool: ブール型変数 (True、False)

Currency: 通貨変数 (金額を示す小数点以下 4 桁の数値)

Date: 日付変数

Double: 倍精度型の浮動小数点変数 (1.79769313486232 × 10E308 から 4.94065645841247 × 10E-324)

Integer: 整数変数 (-32768 から 32767)

Long: ロング整数変数 (-2,147,483,648 から 2,147,483,647)

Object: オブジェクト変数 (注意:この変数を定義する場合は、Set ステートメントを使用する必要があります)

Single: 単精度型の浮動小数点変数 (3.402823 × 10E38 から 1.401298 × 10E-45)。

String: 最大 64,000 文字からなる文字列変数。

[Variant]: バリアント型変数 (定義によりすべてのデータ型を代入できる変数)。キーワードを省略した場合、DefBool や DefVar などのステートメントを使用していない限り、すべての変数は自動的にバリアント型とされます。

LibreOffice Basic では、変数を明示的に宣言する必要はありません。 ただし、配列はあらかじめ定義をしておく必要があります。 Dim ステートメントで変数を宣言する場合、コンマで区切ることで複数の宣言を 1 度に行うことができます。 変数のデータ型は、変数名の後に型宣言子またはキーワードを付けることで指定します。

LibreOffice Basic では 1 次元および多次元配列を使用することができ、変数宣言をする際に変数型を指定します。配列は、プログラム中でリストやテーブルを操作する場合に適しています。配列を使用するメリットとして、インデックスを指定することで配列中の各要素にアクセスできる点がありますが、これらのインデックス指定には数値表式や変数が使えます。

配列の宣言は、Dim ステートメントで行います。インデックス範囲の指定法には2通りあります。

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 (0 も含めた) 計 21 個の要素を定義

REM インデックスの範囲は -15 から 5 まで

2 次元のデータフィールド

DIM text(20,2) as String REM 計 63 要素 (それぞれ 0 から 20 までの要素が3レベル分)

配列を使用する関数やサブルーチン内で、ReDim ステートメントにより配列の次元を定義すると、動的な配列を宣言できます。通常、いったん定義をした配列の次元は変更することができません。サブルーチン内では、ReDim ステートメントを使って配列の次元を定義できます。次元の定義には数値表式のみを使用できます。これは、必要最小限のフィールドのみを確保するためです。

## 例:

    Sub ExampleDim1
    Dim sVar As String
    Dim iVar As Integer
        sVar = "Star Suite"
    End Sub

    Sub ExampleDim2
    2 次元のデータフィールド
    Dim stext(20,2) As String
    Const sDim as String = " Dimension:"
    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