非表示にできる< 目次 >
本記事の信頼性
Nakamura(@nkmr_dai)
本記事で分かること
本記事では、以下のことが分かります。
ポイント
ForNextは大量処理をする上で必須スキルだと思うので、理解を深めてもられば幸いです。
For Next とは?
処理を10回続けて処理したい…など、回数上限でループ処理(繰り返し処理)を行いたい時にFor Nextを使用します。
For Nextが活躍する場面は多岐にあり、
EXCELの「1行目から10行目まで処理したい」や「1行目から最終行まで処理したい」という時にも使え、
本記事では説明しませんが EXCEL DOMでWebブラウザを制御するときにも多用するため、
ForNextは非常に便利な構文です。
とりあえず、回数上限付ループ処理=For Next構文ということを覚えておけば万事OKです。
For Nextを理解&使い方
For Next - 絶対ルール
For Nextを使用するためには 変数(Long型)が必要です。
変数って何?
For Next - 基本構文 + 図で理解
For Next構文は↓の通りです。
以下の画像で解説しております。
For〜Nextで囲まれた「〜」の部分を繰り返し処理をします。
For Next - 構造理解
For Next構文を知ったところで 構造を理解しておきましょう。
他のWebサイトでは 構造を理解するのにテキストベースなものが目立っていたため、図を用意しました。
絵にしたほうが理解はしやすいと思いますので、理解の一助になれば幸いです。
とりあえず、For Nextの構造は図の内容を理解していればOKです。
For Next - 途中でループから抜け出したい時(Exit For)
「Exit For」で抜け出せます。
IF文と併用し条件合致した際にループ処理から抜け出す…という時に使用します。
If文って何?
-
【解説付】VBA-IF/ElseIfの説明-ココだけ覚えれば良い【EXCEL VBA】
続きを見る
Exit Forの使い方は↓の通り。※後述で紹介するコードにExit Forを用いていますので見ると理解が深まると思います。
'処理したい内容
Next
For Next - 使用例(コピペ用コード有)
For 変数 = start(数値) to end(数値)の、
end(数値)に セルの最終行の数値を入れることで、
EXCELの先頭行から最終行まで 処理を行うことができます。
最終行を取得するコードは
「Cells(Rows.Count, 1).End(xlUp).Row」です。
(↑A列の最終行を取得できます)
最終行取得って何?
本質を知れば応用が効くので、深く知りたい方は別記事で説明していますので、そちらをご覧くださいませ。
-
【解説付】VBA-最終行を取得する方法-完全理解【EXCEL VBA】
続きを見る
では、コードを紹介します。
EXCELの先頭行から最終行までの繰り返し処理は このような形で組むことができます。
※コード内のコメントに説明を入れています。
◎コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Sub ForNextとIF文() Dim lastgyou As Long Dim i As Long '変数:lastgyou にA列の最終行(数値)を格納 lastgyou = Cells(Rows.Count, 1).End(xlUp).Row For i = 0 To lastgyou '★復習★:Cells(行,列)をあらわしている。 '条件式:A列が田中だったら、 If Cells(1 + i, 1).Value = "田中" Then 'B列にかっこいいと入力 Cells(1 + i, 2).Value = "かっこいい" '条件式:A列が鈴木だったら、 ElseIf Cells(1 + i, 1).Value = "鈴木" Then 'B列に要確認と入力し、 Cells(1 + i, 2).Value = "要確認" 'ForNextから抜ける(end値まで処理しないで抜ける) Exit For End If Next '←Nextに来るたびにiがカウントアップする。 End Sub |
編集後記
いかがでしたでしょうか。
For Next は効率化するにおいて切っても切れない大切な構文です。
コードを暗記する必要はありませんので、コピペでも何でも、積極的に利用し使用感を確かめて貰えれば より理解が深まると思います。
ちょっとだけ宣伝
もしVBA全般のルール・基本知識を身に付けたい方がいらっしゃいましたら、
本ブログでは「1週間で分かるVBA 」 なる記事もご紹介していますので、
一度 覗いてみてくれると幸いです。(当然、無料です。)
本ブログ記事をご覧いただいた皆様のVBAライフを少しでも充実させることが出来たのなら、管理人としては結構ハッピーです。
末筆ながら 今後ともどうぞよろしくお願いいたします。