![見出し画像](https://assets.st-note.com/production/uploads/images/69876608/rectangle_large_type_2_c8ac9a656ab8f420b65f8ed03043c66b.png?width=1200)
#6 繰り返し処理をやってみよう!【Excelマクロ講座】
![](https://assets.st-note.com/img/1642133405432-A3zorgIlsV.png?width=1200)
![](https://assets.st-note.com/img/1642133409759-pmln5ZQ5yd.png?width=1200)
繰り返し処理「For~Next」を使ってみる
Sub 繰り返し処理()
'変数宣言
Dim i As Integer
'繰り返し処理
For i = 0 To 3
'変数iの中を確認
MsgBox i
Next i
End Sub
![](https://assets.st-note.com/img/1638861814172-7o6xgpcBw9.png?width=1200)
![](https://assets.st-note.com/img/1638942982688-oUESYGuZNi.png?width=1200)
【解説】
Dim i As Integer
繰り返し処理で使うために変数を宣言(カウンター変数)
変数名は「i」 データ型は整数型
For i = 0 To 3
For … 繰り返し処理が始まりますよという合図
i… 繰り返す”回数”を入れていくための変数
0 to 3… 0から3まで順番にiに代入していくよ(つまり繰り返す回数!)
Next i … 繰り返し処理はここまでだよという合図(Nextの後ろのiは省略可)
・カウンター変数は何でも良いけどiがよく使われる
・For 変数 = 値 To 値 から Next の間に繰り返したい処理を書く
![](https://assets.st-note.com/img/1638943208529-5QdfZBT2QU.png?width=1200)
ヒント:変数を使ったセルの操作はcells()を使おう!
~~~シンキングタイム~~~
答え!
Sub 答え()
For i = 1 To 3
Cells(i, 1).Value = i
Next i
End Sub
★point
カウンター変数はカウンターとしての役割だけでなく色々利用できる!
Cells()の行や.Valueもカウンター変数iで指定すれば順番に入力していってくれる!
他にもやり方は色々あるので参考までに!
![](https://assets.st-note.com/img/1638944227897-czA1QPkads.png?width=1200)
ヒント:
シートの追加:Worksheets.Add
※挿入されたシートが自動でアクティブシート(作業中のシート)になる
シートの名前:ActiveSheet.Name = "名前"
文字列と変数の結合: & や + を使う
~~~シンキングタイム~~~
答え!
Sub 答え()
For i = 1 To 3
Worksheets.Add
ActiveSheet.Name = "シート" & i
Next
End Sub
もっとシンプルに書くと
Sub 答え()
For i = 1 To 3
Worksheets.Add.Name = "シート" & i
Next
End Sub
とも書ける!
色々試してみよう!
他の繰り返し処理
![](https://assets.st-note.com/img/1641965689083-uoH4mBxlDq.png?width=1200)
Do While ~ Loop
![](https://assets.st-note.com/img/1641966029426-ox0rS6Qyav.png?width=1200)
条件式が一致している間処理を繰り返してくれる!
例えば…
![](https://assets.st-note.com/img/1642128079090-2VMMwdnpZr.png?width=1200)
Sub 繰り返し処理2()
'変数を宣言して代入
Dim n
n = 1
'3じゃない間=3が出るまで ループ開始
Do While Cells(n, 1).Value <> 3
Cells(n, 2).Value = "○"
'次の行へ
n = n + 1
Loop
End Sub
【解説】
Dim n
as~を省略するとバリアント型変数(どんなデータでも格納できる)に!
n=1
値を入れておかないと0のまま。次の Cells(n,1).value でエラーになってしまうので代入を忘れず!
Do While Cells(n, 1).Value <> 3
「 Cells(n, 1).Value <> 3」で値が3以外の時
※<>は「~ではない」という演算子(空白ではない、などに使える!)
Cells(n, 2).Value = "○"
B列に○を入力していく
n = n + 1
nを1増やす
これを忘れるとnの値が変わらず無限ループに!(要注意!)
※もし無限ループして画面が固まった場合は「Esc」キーでマクロを強制終了しよう!
![](https://assets.st-note.com/img/1641967842537-Ap2ehpQKan.png?width=1200)
memo:
Do…Loop には全部で4パターンある
★条件式が前にくるか後ろに来るか
処理をする前に条件をチェックするか、処理をしてからチェックするかの違い
①Do While 条件
処理
Loop
②Do
処理
Loop While 条件
★条件が正しくない間繰り返す処理の場合
③Do Until 条件
処理
Loop
④Do
処理
LoopUntil 条件
なので上記の例なら
Do While Cells(n, 1).Value <> 3
↓
Do Until Cells(n, 1).Value = 3
とも書ける!
つまり…
繰り返す回数が決まっているなら
For Next
繰り返す条件が決まっているなら
Do…Loop
これを頭の片隅に置いておこう!
ここまでお疲れさまでした!
次回:
条件分岐でできることの幅が広がる!
ifを使って複雑な処理に挑戦しよう!
この記事が気に入ったらサポートをしてみませんか?