広告

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

2022.10.10更新

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

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

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

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

繰り返し「For」命令

プログラムの基本は

(1)上から順番に
(2)条件で分かれ道
(3)繰り返し

でしたね!

今回から最後の(3)繰り返しをやっていきます!

本格的なプログラミングの始まりですね!

注意

繰り返し命令を誤って使うと無限ループ(ずっと繰り返しでプログラムが止まらない状態)などに入ってコンピューターに負担をかけてしまう場合があるのできちんと理解して使いましょう!

通常の無限ループの場合は「Esc」キーまたは「Ctrl + Break」キーをすぐに押すと

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

プログラムが中断されてこのようなメッセージが表示されますので「終了」を選択すれば止まってくれます。

もしこれで止まらない場合は近くの詳しい人に聞きましょう!(プログラムの内容が消えてしまう可能性もあります!)

「Cells」命令

今回から結果を表示するのに「Cells」命令をたくさん使うので少しおさらいしておきましょう。


Worksheets("シートの名前").Cells(行の位置,列の位置).Value = "メッセージ"

「Cells」命令はセルの位置を数値で指定してそこに結果を書き込んだり、そこの値を取得したりする事ができます。

たとえば「Cells(1,1)」→「A1」セル、「Cells(5,2)」→「B5」セルみたいな感じです。

「Range」命令との大きな違いは数値で指定できるので、変数を使う事ができます。


Dim suji As Integer
Dim suji2 As Integer

suji = 5
suji2 = 2

Worksheets("sheet1").Cells(suji,suji2).Value = "メッセージ"

この場合は「Cells(5,2)」を指定したのと同じ意味になります。

この点をよく踏まえておきましょう。

数字を一つずつ上げていきます。

それでは「For(フォー)」命令を使っていきたいと思います。

■10日目 プログラム1■


'10日目 プログラム1

Sub test()

	Dim suji As Integer

	For suji = 1 To 10 Step 1
		Worksheets("sheet1").Cells(suji,1).Value = "おはよう!"
	Next suji

End Sub

■実行結果■

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

■説明■

「For」命令で繰り返し条件を決めて、その中の命令を繰り返します。

まず繰り返し用の変数を用意します。そして「For」命令の登場です!


For カウンタ変数初期化 To 最終値 Step 進み方

	繰り返したい命令

Next カウンタ変数

	↓

For suji = 1 To 10 Step 1
	Worksheets.("sheet1").Cells(i,1).Value = "おはよう!"
Next suji

「For カウンタ変数初期化」~「Next カウンタ変数」で1セットとなります。

一つずつ見ていきましょう。

カウンタ変数初期化


suji = 1

ここで最初の数を決めます。

最終値


To 10

次に「カウンタ変数」の最終値、終わりの値を決めます。

「カウンタ変数」がこの値になるまで繰り返しをします。

進み方

いくつずつ進むかをここで決められます。


Step 1

この場合はくり返すたびに変数「suji」に「+1」されます!

なので結果「Cells(1,1)」→「Cells(2,1)」→「Cells(3,1)」・・・「Cells(10,1)」のように進みます。

一つずつだけ進めたい場合はこの部分を省略する事ができます。

ちなみに、ここを「Step 2」とするとくり返すたびに変数「suji」が「+2」されるので先ほどのプログラムであれば変数「suji」の値は


1 3 5 7 9

のように進みます。

その結果

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

このようになります。

繰り返しの条件などをいろいろ変えて試してみましょう!

広告

たくさん練習しましょう!

それでは「習うより慣れろ」だと思いますのでたくさん練習して身に付けてしまいましょう!

練習その1・・・「おいっす」を横に5回表示する。

■10日目 プログラム2■


'10日目 プログラム2

Sub test()

	Dim suji As Integer

	For suji = 1 To 5
		Worksheets("sheet1").Cells(1,suji).Value = "おいっす"
	Next suji

End Sub

■実行結果■

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

■説明■

まずはキホンですね!変数「suji」が「1~5」の間繰り返しをします。

「Cells」命令の列位置に変数「suji」を使えば横に表示する事ができますね!

練習その2・・・「If」命令と組み合わせる。

「10」までカウントして「3」の倍数がきたら「おいっす!」と叫んでみましょう!

■10日目 プログラム3■


'10日目 プログラム3

Sub test()

	Dim suji As Integer

	For suji = 1 To 10
		If suji = 3 Then
			Worksheets("sheet1").Cells(1,1).Value = "suji = " & suji & ":おいっす!"
		ElseIf suji = 6 Then
			Worksheets("sheet1").Cells(2,1).Value = "suji = " & suji & ":おいっす!"
		ElseIf suji = 9 Then
			Worksheets("sheet1").Cells(3,1).Value = "suji = " & suji & ":おいっす!"
		End If
	Next suji

End Sub

■実行結果■

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

■説明■

繰り返しをしている途中で「If」命令の条件が合えば「おいっす!」と表示します。

繰り返しを想像しながらプログラムを作りましょう!

練習その3・・・他の変数も一緒に変化させる。

■10日目 プログラム4■


'10日目 プログラム4

Sub test()

	Dim suji As Integer
	Dim suji2 As Integer

	suji = 1
	suji2 = 4

	For suji = 1 To 4
		Worksheets("sheet1").Cells(suji,1).Value = "suji = " & suji
		Worksheets("sheet1").Cells(suji,3).Value = "suji2 = " & suji2
		suji2 = suji2 - 1
	Next suji

End Sub

■実行結果■

VBAにおける反復構造「For」命令の説明画像6

■説明■

繰り返し中一緒に他の変数「suji2」も変化させています。

100まで計算

では繰り返し命令の定番プログラム

「1 + 2 + 3 + 4 + 5 ~ 98 + 99 + 100」

と順番に足していく「100まで計算」プログラムを作ってみましょう!

■10日目 プログラム5■


'10日目 プログラム5

Sub test()

	Dim suji As Integer
	Dim goukei As Integer

	suji = 1
	goukei = 0

	For suji = 1 To 100
		goukei = goukei + suji
	Next suji

	MsgBox "1~100まで足し算答えは" & goukei & "です!"

End Sub

■実行結果■

VBA,「For」命令を使った「100まで計算」プログラムの説明画像

■説明■

合計を入れる為の変数「goukei」にひたすら増加し続ける変数「suji」を足し合わせております。

試しに変数goukeiの値を少し追ってみましょう!

繰り返し0回目 goukei(0) + suji(0) → goukei(0)

繰り返し1回目 goukei(0) + suji(1) → goukei(1)

繰り返し2回目 goukei(1) + suji(2) → goukei(3)

繰り返し3回目 goukei(3) + suji(3) → goukei(6)

繰り返し4回目 goukei(6) + suji(4) → goukei(10)

繰り返し5回目 goukei(10) + suji(5) → goukei(15)

このように繰り返し命令を使って、変数「goukei」の値を塗り替えていく事で、複雑そうな計算もシンプルな繰り返し命令で書く事ができます!

繰り返し途中で抜ける

繰り返しを途中で抜ける技術も大事ですね!

■10日目 プログラム6■


'10日目 プログラム6

Sub test()

	Dim suji As Integer

	For suji = 1 To 10
		Worksheets("sheet1").Cells(suji,1).Value = "suji = " & suji

		If suji = 6 Then
			Exit For
		End If

	Next suji

	Worksheets("sheet1").Cells(7,1).Value = "変数「suji」が6になったので繰り返しを終了しました!"

End Sub

■実行結果■

VBAにおける反復構造「For」命令の説明画像7

■説明■

繰り返しを途中で抜ける「Exit For」になります。

これを書けばそこで繰り返しから抜ける事ができます。

通常は「If」命令と組み合わせて条件が合致した場合に「Exit For」で繰り返しを抜けるみたいに使用します。

次回はもう一つの繰り返し「Do While」命令を紹介したいと思います。

どこまでくり返せばいいのかわからないけど繰り返したい時などに便利な命令です。今回の「For」命令と合わせてご覧ください。

次回

11日目 繰り返し「Do While」命令

広告

Copyright 2016 K.N/petitetech.com