第3話 Sub プロシージャの引数(1)


皆さん、前話ではSubプロシージャを呼び出すとき、
何の値も渡さないで、呼び出しましたが実は何種類かの値を渡すことができます。

具体例がないと何のことを言っているかわからないと思いますので、具体例を出しましょう。
次のプログラムをクリックして開いてください。
このプログラムは1からE2で与えられた整数まで加えていくプログラムです。
例えば、E2に100を入れると
1+2+3+・・・+100
が計算されC4に答えの5050が出てくるようになっています。
プログラムソースは
Private Sub CommandButton1_Click()

    Dim n As Long

    wa = 0
    n = Cells(2, 5)
    wakeisan n

End Sub

Sub wakeisan(n)

   Dim i As Long, wa As Long

   For i = 1 To n
       wa = wa + i
   Next
   Cells(4, 2) = "答えは"
   Cells(4, 3) = wa

End Sub

wakeisanでSubプロシージャwakeisanを呼び出していますが、
その際、nの値をSubプロシージャwakeisanに渡しています。
E2(つまりCells(2,5))に100が入力されている今の例では、
渡される値は100となります。具体的には
For i = 1 To n
の部分で使われます。
つまり、For文は1から100まで100回繰り返されるのです。
そして、その答えが
   Cells(4, 2) = "答えは"
   Cells(4, 3) = wa
の部分で出力されることになります。
nを引数といいます。

今は、わかりやすさを優先して
Sub wakeisan(n)

   Dim i As Long, wa As Long

   For i = 1 To n
       wa = wa + i
   Next
   Cells(4, 2) = "答えは"
   Cells(4, 3) = wa

End Sub
としましたが、例えば
Sub wakeisan(syuuti)

   Dim i As Long, wa As Long

   For i = 1 To syuuti
       wa = wa + i
   Next
   Cells(4, 2) = "答えは"
   Cells(4, 3) = wa

End Sub
としてもまったく同じです。
グローバル変数の宣言を
(これはすべてのSubプロシージャの前、
つまりプログラムの先頭で宣言するものです。)
しない限り、変数はすべてローカルでそのSubプロシージャ内でしか、
有効でないことを忘れないでください。
だから、変数名は自由に取ることができます。
大事な点は引数nの値がSubプロシージャwakeisanのsyuuti
に渡されるということです。
E2に100が入力されている場合、
nの値が100がsyuutiに渡されるわけです。


第2話へ 第4話へ