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