[Excel で VBA] 繰り返し (続き)

前回、繰り返し構造である For 文および While 文をを学んだ。
繰り返し構造にはいくつかのバリエーションがあるが、今回はそれを取り扱い、 繰り返し構造の仕上げとする。

繰り返し (続き)

前回の最後に学んだ While 文は以下のような構造をしていた。

Sub prog()
Dim i As Integer
Dim s As Long

	s = 0
	i = 0

	While i <= 10
		s = s + i
		i = i + 2
	Wend

	MsgBox "sの値は" & s & "です"
End Sub

特徴は、条件判定がループの始めに行われていることである。
このプログラムの流れは以下のようであった。

条件判定の位置を意識してもらうために横線「-----」を適宜挿入している。

i = 0
(ここから While 文に入る)
-----
i = 0 は i<=10 を満たす
  s = s + 0
  i = i + 2 (i=2)
-----
i = 2 は i<=10 を満たす
  s = s + 2
  i = i + 2 (i=4)
-----  
i = 4 は i<=10 を満たす
  s = s + 4
  i = i + 2 (i=6)
-----
…
-----
i = 10 は i<=10 を満たす
  s = s + 10
  i = i + 2 (i=12)
-----
i = 12 は i<=10 を満たさない
(While 文終了)


繰り返しを行なう While 文には他にもいくつかのバリエーションがある。
今日はそれらを一気に学ぶ。

これらは「全て覚える必要がある」というわけではなく、 この内の一つを覚えておけば用は足りることが多い。
しかし、これらのバリエーションのそれぞれの違いを理解しておくことは有用である。

[条件文が始めにくる場合]
1. 
Do While 条件式
   命令文  (複数で良い)
Loop
2. 
Do Until 条件式
   命令文  (複数で良い)
Loop


[条件文が後にくる場合]
3. 
Do 
   命令文  (複数で良い)
Loop While 条件式
4. 
Do
   命令文  (複数で良い)
Loop Until 条件式


上記のうち、「条件文が始めにくる場合 (1. および 2.)」 は 先週の While 文の動作に近い。
ただし、Until で条件をした場合、条件が満たされないとき繰り返しが行なわれ、条件が満たされたときに終了する
これは While 文と逆なので注意しよう。

「条件文が後にくる場合 (3. および 4.)」 もこれらと似ているのだが、
条件文が後にくるので、命令が少なくとも必ず一回は実行される、という点が異なる。

(条件文が始めに来る場合、命令の前に条件判定があるので、命令が一回も実行されないことがあり得る)

以上の 4 例を「10 以下の偶数の和」の例で実現したのが以下の 4 例である。
結果は全て 30 になるのだが、While と Until による条件文の違いに注意しよう。

いつも通り Excel の VBA を起動して以下を実行せよ。 (Visual Basic Editor の起動方法は「第一回:プログラムを書き始めるまでの準備」参照)

  • 以下の 4 例を全て試して、全て等しい結果 (30) が得られることを確認せよ。


1. 条件文が始め。While
Sub prog()
Dim i As Integer
Dim s As Long

	s = 0
	i = 0

	Do While i <= 10
		s = s + i
		i = i + 2
	Loop

	MsgBox "sの値は" & s & "です"
End Sub

2. 条件文が始め。Until
Sub prog()
Dim i As Integer
Dim s As Long

	s = 0
	i = 0

	Do Until i > 10
		s = s + i
		i = i + 2
	Loop

	MsgBox "sの値は" & s & "です"
End Sub

3. 条件文が後。While
Sub prog()
Dim i As Integer
Dim s As Long

	s = 0
	i = 0

	Do
		s = s + i
		i = i + 2
	Loop While i <= 10

	MsgBox "sの値は" & s & "です"
End Sub

4. 条件文が後。Until
Sub prog()
Dim i As Integer
Dim s As Long

	s = 0
	i = 0

	Do
		s = s + i
		i = i + 2
	Loop Until i > 10

	MsgBox "sの値は" & s & "です"
End Sub





←For 文の続き/While 文による繰り返し配列→

Excel で学ぶ Visual Basic for Applications (VBA)に戻る