目次

# 基本

このセクションでは、LibreOffice Basicの基本について説明します。

LibreOffice Basicのコードは、Sub...End Sub と Function...End Function セクションで定義するサブルーチンおよび関数から構成されます。1つのSubおよびFunctionからは、他のSubやFunctionを呼び出すこともできます。SubやFunctionを記述する際に、可能な限り汎用的なコードにしておくと、他のプログラムで再利用できる可能性が高まります。プロシージャーおよび関数 も参照してください。

パブリック変数やサブルーチン、関数の名前にはいくつかの制限が適用されます。同じライブラリのモジュールのいずれかと同じ名前を使ってはいけません。

## Sub (サブルーチン) の用途

Sub とは、サブルーチン (subroutine) を省略したもので、1 つのプログラム中で実行する特定のタスクをブロック化する際に使用します。 サブルーチンを利用することで、1 つのタスクを複数のプロシージャーに分割することができます。 プログラムの構造を複数のプロシージャーやサブプロシージャーに分割すると、コードの可読性が高まると同時に、エラーの発生を抑える効果も期待できます。 下記の例のように、サブルーチンにはパラメーターとして複数の引数を渡すことも可能ですが、呼び出し元のサブルーチンや関数に戻り値を返すことはできません。

DoSomethingWithTheValues(MyFirstValue,MySecondValue)

## Function (関数) の用途

Function の基本的な機能はサブルーチンと同じですが、戻り値を返せるという点が異なります。下記の例のように、変数宣言部の右側に関数を配置することも可能で、通常の値の代わりに直接関数を記述することもできます。

MySecondValue = myFunction(MyFirstValue)

## 大域および局所変数

大域変数とは、1 つのモジュール内にあるすべてのサブルーチンと関数で使用できる変数のことです。これらの宣言は、モジュール内のすべてのサブルーチンや関数より前に記述する必要があります。

個々のサブルーチンや関数の中で宣言した変数は、該当するサブルーチンや関数の内部でのみ使用できます。これらの変数は、上位のサブルーチンや関数から継承した局所変数や大域変数と同じ名前があっても優先的に使用されます。

## 構造化

プログラムをプロシージャーや関数（SubおよびFunction）に分割して記述した場合、個々のプロシージャーや関数をファイルに保存して、他のプロジェクトで再使用することができます。LibreOffice Basicには、モジュールとライブラリの機能が用意されています。サブルーチンや関数は、常にモジュール内に定義されます。モジュールは、大域的に使用することも、特定ドキュメント内部でのみ使用することもできます。また複数のモジュールをまとめて、1つのライブラリとすることもできます。

サブルーチン、関数、モジュール、ライブラリは、ダイアログ マクロ を使用することで、ファイル間のコピーおよび移動が行えます。