関数・メソッド

再帰呼び出しで自身のプロシージャを呼び出す【ExcelVBA】

再帰呼び出し

プロシージャ内で自身のプロシージャを呼び出すことを「再帰呼び出し」と言います。
再帰プロシージャ、再帰処理、再帰関数など呼び方は様々です。

再帰呼び出しを使用したサンプルコード

'■元のプロシージャ
Public Sub sample()
    Call Call_Count(5)
    
    'カウント:5
    'カウント:4
    'カウント:3
    'カウント:2
    'カウント:1
End Sub
'■再帰処理を行うサブプロシージャ
Function Call_Count(ByVal i As Long) As Long
    If i <> 0 Then
        Debug.Print "カウント:" & i
        Call_Count = Call_Count(i - 1)
    End If
End Function

注意点

  • 終了条件がないと無限ループが発生するので必ず記述してください。
    ※プロシージャが自身を呼び出すたびにメモリの容量を使うので、無限ループが発生するとエラーになります。
  • 再帰呼び出しはパフォーマンス低下や無限ループ発生のリスクを考慮する必要があります。
    ほとんどがループ処理で対応できるので、そちらも検討してください。
  • Functionプロシージャーを再帰呼び出しするときには、引数のリストがない場合でもプロシージャ名の後に()を付けてください。
    ※関数のタイトルが関数の戻り値であると見なされてしまいます。

関連記事

コメント

タイトルとURLをコピーしました