第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に渡されるわけです。