サブプロシージャの呼び出し

VBAでは、FortranやC言語などと異なり、主プログラム(Main Program)と副プログラム(Sub Program)の区別はありません。
最初に実行したプロシージャが、主プログラム(Main Program)となります。

プロシージャの呼び出し

プロシージャから別なプロシージャを呼び出すには、次のように記述します。

  プロシージャ名 引数

      または

  CALL プロシージャ名(引数)

プロシージャ名と引数の間には空白が必要です。引が複数ある場合は , で区切ります。

キーワード Call を使用した Sub プロシージャ呼び出しでは、引数をかっこでくくります。

呼び出されたプロシージャは、引数として、定数、変数、または式などを取得できます。

プロシージャが引数を持たない場合、その Sub ステートメントには空のかっこを指定する必要があります。

構文

Sub Main()
  ・・・・・・・
  Sub1 arg   ' または Call Sub1(arg)
End Sub

Sub Sub1(arg)
・・・・・・・
End Sub

プロシージャを呼び出す際に使用する引数とプロシージャ(副プログラム)内で使用される変数の名前は同じでなくてもかまいません。

Sub DrawPolygon()    ' 主プログラム

  Dim n_sides, side

  InitializeTurtleGraphics
  n_sides = 6
  side = 100

  Polygon n_sides, side   ' またはCall Polygon(n_sides, side)
  
End Sub

Sub Polygon(n, side)    ' 多角形を描く副プログラム
' プロシージャ DrawPolygon で設定した、辺の数 6と辺の長さ 100 という値が渡されます

  Dim i
  
  For i = 1 To n
    TGMoveL side
    TGTurn 360 / n
  Next i
  
End Sub

実行結果

六角形