LibreOffice Basicで、マクロを作成する際に、利用が推奨されるコンパイラ・オプションを紹介します。
コンパイラ・オプションは、モジュールごとに指定できます。
オプション | 説明 |
---|---|
Def | 変数名に基づいて、宣言されていない変数にデフォルト型を指定します。 |
Option Base | 最初の配列の添字が、0か1であるかどうか制御します;指定されていないと仮定します。 |
Option Compatible | Star Basicに、よりVBのようなふりをさせます。 |
Option VBASupport 1 | Star Basicに、よりVBAのようなふりをさせます。 |
Option Explicit | すべての変数を定義することを強制します。マクロの実行中に、まだ定義されていない変数が使用されると、エラーが発生します。 |
Def
コンパイラ・オプション 「Def」(Option はつけない)は、変数名に基づいて、宣言されていない変数にデフォルト型を指定します。
Base
コンパイラ・オプション 「Option Base」で、配列の最初の添字が、0から始まるか、1から始まるかを指定します。
- VBAでは、1から始まります。
- LibreOfficeでは、0から始まります。
Compatible
コンパイラ・オプション 「Option Compatible」を指定すると、そのオプションを持つモジュールは、Visual Basicとより互換性が高くなります。
また、実行時関数、CompatibilityMode(True/False)は、マクロの実行中に、ランタイム関数の動作を変更できます。
Option Compatible
違いの例(一部)
変数名
VBAは、有効な変数名として、Latin-1(ISO 8859-1)文字が使用できます。LibreOffceでは、利用できません。具体的には、VBAでは、変数名に、日本語が利用でき、LibreOffceは、英数字しか利用できません。コンパイラ・オプション 「Option Compatible」を指定することで、LibreOffceでも、日本語の変数名が利用できます。
rmdir()コマンド
- VBAでは、指定されたディレクトリが空でない場合、エラーが発生します。
- LibreOffceでは、指定されたディレクトリの中身ごと削除します。(エラーは発生しません。)
bounds (LBoundとUBound)を決定する関数
- VBAでは、空の配列に利用するとクラッシュします。
- LibreOffceでは、問題なく機能します。(エラーは発生しません。)
アクセス修飾子
PrivateとPublicのアクセス修飾子は、コンパイラ・オプションOption Compatibleが指定(あるいは、CompatibilityMode(True)を指定しないと機能しません。
コンパイラ・オプションOption Compatibleが指定(あるいは、CompatibilityMode(True)が使用されている)されている区別されます。
Option Compatibleを指定していない場合は、プライベート変数は。宣言しているモジュールの外側から見えてしまいます。
VBASupport
VBAで作成されたコードをLibreOfficeで実行するためには、マクロ(モジュール)の最初に、コンパイラ・オプション「VBASupport 1 」を指定する必要があります。
Option VBASupport 1
Explicit
コンパイラ・オプション「Explicit」を使用すると、明示的に定義されていない変数を指定するとエラーが発生します。使用しない場合、コマンドのスペルミスは、変数として認識されるので、間違いがとても見つけにくくなります。コンパイラ・オプション「Explicit」の使用を推奨します。
Option Explicit