Excel VBAで、コードの再利用や可読性を向上させるために処理(プロシージャ)のパーツ化があります。汎用性の高いパーツを作成するときは、引数を設定しますが、Optionalキーワードを使用して引数を省略可能にする方法を知っておくと便利です。
引数を省略可能にするメリット
Excelの関数であれば、省略可能な設定値がある関数があります。省略した場合は既定値で処理がされ、利用しやすい関数となります。
例えば、LEFT関数であれば、
=LEFT(文字列,[文字数])
で設定します。このとき、文字数を指定する箇所を省略すると、既定値の"1"で計算されて利用しやすい関数になっています。
プロシージャの引数を省略する方法
VBAで引数を省略可能にする場合は、Optionalキーワードを使用します。
要は、省略したい引数の前にOptionalキーワード をつけます。
引数が省略されたとき、既定値(定数)を代入することもできます(変数の後ろに”="で設定します)。
VBAサンプル
次のように、メインのプロシージャから「パーツ」を呼びだすとき、引数が省略されると「処理完了」が引数に代入されます。
Sub メイン() Call パーツ Call パーツ("〇〇の処理完了") End Sub Sub パーツ(Optional メッセージ As String = "処理完了") MsgBox メッセージ End Sub
補足説明
- 上記は、引数がある場合は当該のメッセージ(事例の場合、”〇〇の処理完了")が表示されます。引数が省略された場合は、既定値の”処理完了”が表示されます。
- 呼び出されるプロシージャ側で
Sub パーツ(Optional メッセージ As String = "処理完了")
の赤字部分が引数の省略に関する箇所です。
「= "処理完了"」の箇所は既定値の定数です。不要であれば、削除します。
以上、Excel VBAの処理のパーツ化で引数を省略可能にする方法でした。