第3講 For文(繰り返し処理)
第3話 a+(a+1)+(a+2)+・・・+lを求めるソフト
B3にはじめの値a、D3に終わりの値lを入力してから実行ボタンを押すと、
消去ボタンを押すと、
を実現するコード例
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ずつ変化させなさいという意味になります。
C3に初項、F3に末項、I3に公差を入力して実行ボタンを押すと、
となり、消去ボタンを押すと
(B5からE5までは結合してください。
セルを結合したときのセルを表すには、
Cells(5, 2)またはRange("B5")とします。
つまり、結合したときの最初のセルで結合セルを指定できるのです。)
※公差を白紙のままうっかりボタンを押すと公差dが0になってしまい、
エラーしますの注意してください。いつまで繰り返しても終了範囲に達しないので、
エラーするのです。このような繰り返しを永久ループといいます。
B5からE5までは結合してください。
第2話へ 第4話へ