第12講 For文以外の様々なループ文
第10話 Do文とFor文に違いは?
今までの学習で、
For文で出来ることは、
Do文の各種ですべて出来ることが分かりました。
では、逆にDo文で出来ることはすべてFor文で出来るのでしょうか。
第9話で作った限界値を超えないプログラムをFor文で実現するにはどうしたらよいでしょうか。
ミソは、終了条件が制御変数側になく、合計値側にあるということです。
実現例は、
Private Sub CommandButton1_Click()
Range("C6").Select
Selection.ClearContents
Dim m As Long, n As Long, h As Long
If Cells(4, 2) = "" Or Cells(5, 2) = "" Or Cells(6, 2) = "" Then
Cells(6, 3) = "入力欄をすべて埋めてから再び実行ボタンを押してください。"
GoTo tobi
End If
m = Cells(4, 2)
n = Cells(5, 2)
h = Cells(6, 2)
Cells(7, 6) = f1(m, n, h)
Cells(8, 6) = f2(m, n, h)
Cells(9, 6) = f3(m, n, h)
Cells(10, 6) = f4(m, n, h)
tobi:
Cells(1, 1).Select
End Sub
Function f1(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
For i = m To 100000 Step h
If w + i >= n Then Exit For
w = w + i
Next
f1 = w
End Function
Function f2(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
For i = m To 100000 Step h
If w + i * i >= n Then Exit For
w = w + i * i
Next
f2 = w
End Function
Function f3(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
For i = m To 100000 Step h
If w + i * i * i >= n Then Exit For
w = w + i * i * i
Next
f3 = w
End Function
Function f4(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
For i = m To 100000 Step h
If w + i * i * i * i >= n Then Exit For
w = w + i * i * i * i
Next
f4 = w
End Function
Private Sub CommandButton2_Click()
Range("B4:B6,F7:F11,C6").Select
Selection.ClearContents
Range("A1").Select
End Sub
For i = m To 100000 Step hの100000部分は気持ちが悪いですが、
制御文の終了条件をかなり大きめに取っておけば、一応出来るということです。
ですから、While文やDo文で出来ることは、
すべてFor文でも出来るといえそうです。
ですが、終了条件が制御変数側にないときは、
While文やDo文の方に軍配が上がるといえるでしょう。
詳しくは次話を見て下さい。
次話では、Do文の強制終了について学びます。
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ