LibreOffice Basic: サブプロシージャ・関数


LibreOffice Basic でのサブプロシージャ・関数の書き方をまとめました。 だいたい VBA と同じですが、 気を付けるべきところもあります。

環境

  • LibreOffice 5.2.0.4

サブプロシージャ Sub

Sub の後にプロシージャ名を書き、その後に引数を並べます。 引数がなければ、括弧は省略できます。 プロシージャの最後には End Sub を書きます。

プロシージャを途中で終了するときは、 Return ではなく Exit Sub を記述します。

関数 Function

Function の後に関数名を書き、その後に引数を並べます。 そしてその後で戻り値の型を指定します。 引数がなければ括弧ごと省略できますし、戻り値の型も省略できます。 関数の最後には End Function を書きます。

関数の戻り値は、関数名に代入するように設定します。 複数回設定した場合は、変数と同じように上書きされて、最後の値が戻り値として採用されます。 関数を途中で終了するときは Return ではなく Exit Function を記述します。

オプション引数

引数に Optional をつけると、 呼び出す際に引数を付けてもつけなくてもよくなります。

IsMissing で、 引数が渡された否かを判定できます。

Sub TestProcedure(Optional B As String = "a") のようにデフォルト引数を設定することはできません。

引数についての注意

VBA には ByVal, ByRef というのがあり、 値渡しか参照渡しかを指定することができました。 そしてデフォルトでは ByRef (参照渡し) になっていました。

LibreOffice Basic でも同じように参照渡しになっています。 そして、 ByVal をつけることで値渡しにできます。

VBA : The method for passing parameters to procedures and functions in OpenOffice.org Basic is virtually identical to that in VBA. By default, the parameters are passed by reference. To pass parameters as values, use the ByVal keyword. In VBA, you can also use the keyword ByRef to force a parameter to be passed by reference. OpenOffice.org Basic recognizes but ignores this keyword, because this is already the default procedure in OpenOffice.org Basic.

次のコードを実行すると、 AddRef の後は引数に渡した i の値が2になりますが、 AddVal のところでは i は変化しません。