【VBA言語】プロシージャ内のサブルーチン呼び出し(GoSub)【初心者向け解説】
GoSubとは?
VBA(Visual Basic for Applications)では、サブルーチンや関数を呼び出す方法として「GoSub」というキーワードを使うことができます。これは、あるプロシージャの中から、別の部分へ処理を一時的に移動させ、処理が終わった後に元の位置に戻るという特徴を持っています。
「GoSub」を使うと、コードを短く保つことができ、特定の処理を繰り返し使う場合に便利です。しかし、現在では「GoSub」はあまり推奨されていません。代わりに、サブルーチンや関数を呼び出す方法がよく使用されますが、初心者向けに「GoSub」の使い方を詳しく説明します。
GoSubの構文
「GoSub」を使う場合の基本的な構文は次の通りです:
Sub MainProcedure() ' MainProcedureの処理 GoSub SubRoutine ' GoSubの後続処理 Exit Sub Sub SubRoutine ' SubRoutineの処理 Return End Sub
この構文では、MainProcedure内でGoSubを使ってSubRoutineを呼び出し、SubRoutineの処理が終わると「Return」によってMainProcedureに戻ります。
GoSubの簡単な例
以下のコードでは、GoSubを使用して2つのサブルーチンを呼び出し、処理を移動させる例を示します。
Sub MainProcedure() MsgBox "メインプロシージャ開始" ' SubRoutine1を呼び出す GoSub SubRoutine1 MsgBox "SubRoutine1終了後のメイン処理" ' SubRoutine2を呼び出す GoSub SubRoutine2 MsgBox "SubRoutine2終了後のメイン処理" Exit Sub Sub SubRoutine1 MsgBox "SubRoutine1が実行されました" Return Sub SubRoutine2 MsgBox "SubRoutine2が実行されました" Return
この例では、メインプロシージャ内から2回「GoSub」を使用して、別のサブルーチンに処理を移動させています。各サブルーチンの処理が終了すると「Return」によって元の位置に戻ります。
GoSubと戻り値
GoSubを使ったサブルーチンでは、戻り値を返すことができません。戻り値を取得したい場合は、サブルーチンではなく関数を使用する必要があります。以下に、戻り値を求める方法を示します。
Sub MainProcedure() Dim result As Integer ' 戻り値を受け取る result = AddNumbers(5, 3) MsgBox "足し算の結果は: " & result End Sub Function AddNumbers(a As Integer, b As Integer) As Integer AddNumbers = a + b End Function
この例では、「AddNumbers」関数を使って戻り値を受け取っています。GoSubの場合は戻り値を利用できないため、代わりに関数を使うのが適切です。
GoSubの制限と注意点
GoSubは簡単にサブルーチンを呼び出すことができますが、いくつかの制限や注意点があります。
- 「GoSub」を使った後、処理を戻すためには必ず「Return」が必要です。
- 「GoSub」を使用するコードは、長くなると可読性が低くなり、メンテナンスが難しくなることがあります。
- VBAの最新バージョンでは、「GoSub」は非推奨となっているため、代わりに「Call」や関数呼び出しを使用することが推奨されます。
これらの点を考慮して、GoSubを使う場合はコードの簡潔さや可読性にも配慮しましょう。
「【VBA言語】プロシージャ内のサブルーチン呼び出し(GoSub)【初心者向け解説】」への1件のフィードバック
間違えていますSub()の中にSubは作れません。