第3講 For文(繰り返し処理)
第3話 a+(a+1)+(a+2)+・・・+lを求めるソフト
031
B3にはじめの値a、D3に終わりの値lを入力してから実行ボタンを押すと、
032
消去ボタンを押すと、
031
を実現するコード例
Private Sub CommandButton1_Click()
  Dim w As Long, a As Integer, i As Integer, l As Integer
  a = Cells(3, 2)
  l = Cells(3, 4)
  w = 0 'wを0に初期化する
  For i = a To l
    w = w + i
  Next
  Cells(4, 5) = w
End Sub
Private Sub CommandButton2_Click()
  Range("B3,D3,E4").Select
  Selection.ClearContents
  Range("A1").Select
End Sub
参考ダウンロード添付ファイル

次の課題は、さらに汎用性を広げて
初項a、末項l、交差d
の等差数列の和を求めるソフトを実現しましょう。
等差数列とは、
4,7,10,13,16,・・・,34
のような数列のことです。
このとき、4を初項、34を末項、項の差である3を公差(字に注意、項差ではありません)と呼ぶのです。
ですから、実現すべき課題は
a+(a+d)+(a+2*d)+・・・+l
を計算させることです。
For文において1ずつ変化させるのではなく、
例えば、3つずつ変化させる場合には
  For i = 1 To 10 Step 3
    ・・・
    ・・・
    ・・・
  Next
とします。
この場合には、iは次のように変化します。
1,4,7,10
です。
  For i = 1 To
12 Step 3
    ・・・
    ・・・
    ・・・
  Next
の場合でも
1,4,7,10
となります。
なぜなら次は13で範囲の終わりである12を超えてしまうからです。
つまり、
  For i = 1 To 12 Step 3
は1から12の範囲でiを3ずつ変化させなさいという意味になります。

070
C3に初項、F3に末項、I3に公差を入力して実行ボタンを押すと、
071
となり、消去ボタンを押すと
070
(B5からE5までは結合してください。
セルを結合したときのセルを表すには、
Cells(5, 2)またはRange("B5")とします。
つまり、結合したときの最初のセルで結合セルを指定できるのです。)
※公差を白紙のままうっかりボタンを押すと公差dが0になってしまい、
  エラーしますの注意してください。いつまで繰り返しても終了範囲に達しないので、
  エラーするのです。このような繰り返しを永久ループといいます。
B5からE5までは結合してください。

第2話へ 第4話へ

トップへ