広告

【プログラミング入門】【VBA】11日目 繰り返し「Do While」命令

2022.10.10更新

ExcelVBAでプログラミング入門のタイトル画像になります

お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!

ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!

ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!

繰り返し「Do While」命令

今回はもう一つの繰り返し命令「Do While(ドゥーフォワイル)」命令についてみていきましょう!

自由な「Do While」命令

■11日目 プログラム1■


'11日目 プログラム1

Sub test()

	Dim suji As Integer

	suji = 1

	Do While suji <= 10

		Worksheets("sheet1").Cells(suji,1).Value = "おはよう!"
		suji = suji + 1

	Loop

End Sub

■実行結果■

VBAにおける反復構造「Do While」命令の説明画像1

■説明■

「おはよう」を10回表示するプログラムを「Do While」で書き換えてみました。

「Do While」命令の場合は


Do While 条件

	繰り返したい命令

Loop

と最初に条件を決めるだけで「Do While ~ Loop」までの間を繰り返してくれます。

「For」命令の時にあった「初期化」と「進み方」は別の場所に書くという違いがあります。

でも書き方が違うだけでやってる事は一緒な気がしますよね!

「For」命令と「Do While」命令の使いどころの違いについては実際にいろいろなプログラムを組まないと最初はよくわからないと思います。

今は「こんな命令もあるんだ」ぐらいになんとなく流し読みしていってください。

いちようよく見かける「Do While」命令のカタチをいくつかご紹介します。

無限ループ系

■11日目 プログラム2■


'11日目 プログラム2

Sub test()

	Dim suji As Integer

	suji = 0

	Do While True

		If suji = 100 Then
			MsgBox "変数「suji」が「100」になりました!"
		End If

		If suji = 200 Then
			Exit Do
		End If

		suji = suji + 1

	Loop

	MsgBox "変数「suji」が「200」になったので終了します!"

End Sub

■実行結果■

VBAにおける反復構造「Do While」命令の説明画像2

■説明■


Do While True

何回繰り返ししたいかわからないけど、とりあえず繰り返ししたい時などに使われる方法です。

「If」命令の時に学んだ条件が「True」・・・合っている状態です。なのでずっとくり返す無限ループになります。

「Do While」の場合は「Exit Do」で繰り返しを途中で抜ける事ができます。

「Do While True」で無限ループ→条件が達成された時に「Exit Do」命令で脱出というやり方です。

無限ループ系その2

■11日目 プログラム3■


'11日目 プログラム3

Sub test()

	Dim password As String

	Do While True
		
		Continue:

		password = InputBox("パスワードを入力してね!(正解 : aiueo)")

		If password =  "aiueo" Then
			Exit Do
		Else
			Go To Continue
		End If

	Loop

	MsgBox "パスワードを受付ました!"

End Sub

■実行結果■

VBAにおける反復構造「Do While」命令の説明画像3

■説明■

さきほどと同じく条件が達成されるまでの無限ループ系ですね!

パスワードを入力してもらってパスワードが合うまで無限ループします。


Go To

この「Go To」命令は自分で名前をつけた場所に強制的に移動してくれる命令になります。(名前の事をラベルと言います)

今回は


Continue:

この部分がラベルになりまして名前の後に「:」コロンを書きます。

自分でつける名前なので


Kurikaeshi:

みたいな感じで好きなもので大丈夫です。

そして「Go To Continue」のようにその名前を書けばそこまでジャンプしてくれます。

「Go To」命令の使い過ぎ注意

「Go To」はわかりやすくとても便利なので、ついついたくさん使ってしまいがちなのですが、プログラムの流れがわかりずらくなってしまうので使い過ぎには注意しましょう!

(プロの人たちはどうしてもって時しか使いません!)

広告

フラグの切り替え

■11日目 プログラム4■


'11日目 プログラム4

Sub test()

	Dim flag As Boolean
	Dim count As Integer

	flag = True
	count = 0

	Do While flag

		If count = 100 Then
			flag = False
		End If
		
		count = count + 1

	Loop

	MsgBox "カウントが100になったのでフラグを切り替え終了します!"

End Sub

■実行結果■

VBAにおける反復構造「Do While」命令の説明画像4

■説明■

今度はIf命令の時に学んだフラグの役目をする変数を用意して、「Do While」命令の条件に当てはめ切り替える事によって「Do While」命令を脱出しております。

「Do~Loop While」命令

最後に「Do While」命令の仲間である「Do~Loop While」命令をご紹介します。

これは「While 条件」の部分の条件が合っても、合わなくても必ず一度は中身の命令が実行されるという命令になります。

プログラムで確認してみましょう!

■11日目 プログラム5■


'11日目 プログラム5

Sub test()

	Dim suji As Integer

	suji = 100

	Do

		MsgBox "必ず一回は実行されます!"

	Loop While suji < 50

End Sub

■実行結果■

VBAにおける反復構造「Do While」命令の説明画像5

■説明■

使い方は最初に


Do

だけ書いてお尻に


Loop While suji < 50

条件を書きます。最初に変数「suji」には「100」が入ったので条件が合わなくても最初の一回が実行されているのがわかりますね!

冒頭にも言いましたが「Do While」命令はいろいろなプログラムを組まないと「For」命令との違いやどこで使うのかイマイチわかりづらいと思います。

そのウチなんとなくわかってくると思いますので今は軽く心にとめておきましょう!

次回

12日目 配列の使い方

広告

Copyright 2016 K.N/petitetech.com