VBAのReturnでGoSubから処理を戻す方法をわかりやすく解説(非推奨)

スポンサーリンク
スポンサーリンク

Returnの概要

制御文 VBAの予約語

Return

概要 Return は、VBAで GoSub ステートメントを使用した際に、呼び出し元に処理を戻すために使用されます。しかし、現在では GoSub 自体が非推奨であり、代わりに SubFunction を使用するのが一般的です。

わかりやすく説明 Return は、「GoSub で飛んできた処理を元の場所に戻すよ!」という命令です。ただし、現在ではあまり使われません。

  • GoSub を使った場合に、処理を呼び出し元へ戻す。
  • 現在では GoSub は推奨されておらず、代わりに SubFunction を使うのが一般的。
  • ReturnExit SubExit Function とは異なり、処理を継続できる。
  • ReturnはGoSub専用であり、GoSubが非推奨ですから、Returnも使用されません。一般的なプログラミング言語のreturnとは異なります。

Returnの基本的な使い方

Return を使って、GoSub から元の処理に戻る基本的な例です。

Sub ExampleGoSub()
    Dim result As Integer
    result = 10

    GoSub AddFive
    MsgBox "結果: " & result, vbInformation, "GoSub の例"
    Exit Sub

AddFive:
    result = result + 5
    Return
End Sub

解説:

  • GoSub AddFiveAddFive というラベルの処理にジャンプ。
  • Return に到達すると、GoSub を呼び出した行の次の行に戻る。

Returnの代替としてSubを使用する

GoSub は非推奨のため、代わりに Sub を使う方法が推奨されます。

Sub ExampleSub()
    Dim result As Integer
    result = 10
    
    Call AddFive(result)
    
    MsgBox "結果: " & result, vbInformation, "Sub の例"
End Sub

Sub AddFive(ByRef num As Integer)
    num = num + 5
End Sub

解説:

  • Sub AddFive を呼び出し、ByRef を使って値を変更。
  • GoSub を使わなくても、処理を適切に分割できる。

ExcelでのReturnの活用例(非推奨の方法)

Excel のセルの値を変更する際に、GoSub と Return を使用する例(推奨されない)です。

Sub ExampleGoSubExcel()
    Range("A1").Value = 5
    GoSub DoubleValue
    MsgBox "A1 の値: " & Range("A1").Value, vbInformation, "GoSub の例"
    Exit Sub

DoubleValue:
    Range("A1").Value = Range("A1").Value * 2
    Return
End Sub

解説:

  • GoSub を使って、セルの値を変更する処理に移動。
  • Return で元の処理に戻るが、現在は Sub を使うべき。

Returnの注意事項

  • GoSub と Return は非推奨: VBA では SubFunction を使うのが標準。
  • Return は GoSub のみで使用可能: 単独では使用できず、GoSub の戻り先としてのみ動作する。
  • 可読性が悪くなる: どこにジャンプするかが分かりにくく、コードの管理が困難になる。

よくある質問

Q: Return は通常の Sub でも使えますか?
A: いいえ。Return は GoSub とセットでしか使用できません。
Q: なぜ GoSub は非推奨なのですか?
A: 可読性が悪く、コードが複雑になりやすいため、Sub や Function を使う方が適切だからです。
Q: Return を使わずに GoSub から戻る方法は?
A: ありません。GoSub を使用した場合、Return で元の処理に戻る必要があります。
Q: Excel VBA で GoSub を使うべきですか?
A: いいえ。SubFunction を使用するのが推奨されます。

まとめ

  • Return は GoSub を使った処理で、元の位置に戻るために使用される。
  • 現在では GoSub 自体が非推奨であり、代わりに SubFunction を使用するのが一般的。
  • Return は単独では使用できず、必ず GoSub と組み合わせて使う必要がある。
  • 可読性や保守性を考慮し、GoSub を使用せずに適切な構造化プログラミングを行うことが推奨される。