第6講 サブプロシージャの学習
第3話 初項5、末項35、公差3の等差数列の和
003
を実現するプログラム例
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話へ


トップへ