第6講 サブプロシージャの学習
第3話 初項5、末項35、公差3の等差数列の和
を実現するプログラム例
Private Sub CommandButton1_Click()
CommandButton2_Click '社員CommandButton2_Clickに仕事を依頼
f '社員fに仕事を依頼した
End Sub
Sub f()
Dim w As Integer, i As Byte
w = 0 'wを0に初期化
For i = 5 To 35 Step 3
w = w + i
Next
Cells(3, 2) = "5+8+11+14+・・・+35の計算結果は"
Cells(4, 2) = w
Cells(5, 2) = "です。"
End Sub
Private Sub CommandButton2_Click()
Rows("3:2000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
参考ダウンロード添付ファイル
今回の社員fは
5+8+11+14+・・・+35を計算させて、
結果を表示することしか出来ない、
窮極の専門馬鹿です。
せめて、末項だけでも指定出来るようにして、
5+8+11+14+・・・+l
とできれば、少し汎用性が広がります。
そこで、lを引数として送るように変更します。
それにはコードを次のように書き換えます。
Private Sub CommandButton1_Click()
CommandButton2_Click '社員CommandButton2_Clickに仕事を依頼
f (35) '社員fに仕事を依頼した
End Sub
Sub f(l As Byte)
Dim w As Integer, i As Byte
w = 0 'wを0に初期化
For i = 5 To l Step 3
w = w + i
Next
Cells(3, 2) = "5+8+11+14+・・・+35の計算結果は"
Cells(4, 2) = w
Cells(5, 2) = "です。"
End Sub
Private Sub CommandButton2_Click()
Rows("3:2000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
整数の引数付きのSubプロシージャにするには、
Sub f(l As Byte)
とします。
初項も公差も引数にしたければ、
Sub f(a As Byte, l As Byte,d As Byte)
などとします。
そして、複数の引数付きで仕事を依頼するときには、
f 5, 35, 3
または、
Call f(5, 35, 3)
とします。
では、皆さん今回のプログラムを改良して、
初項、末項、公差のいずれも引数として送って下さい。
第2話へ 第4話へ