エクセルVBAで、For nextを使って最終行まで処理するプログラムを紹介します。
ここではForNextを使って1行目から最終行まで、処理していきます。
目次
For Nextで最終行まで処理
B列の最終行まで数値を入力していきます。
まずは全体のプログラムを紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
'プログラム0|変数宣言の指定 Option Explicit 'プログラム1|プログラム開始 Sub Sample6() 'プログラム2|変数設定 Dim i As Long, cmax As Long 'プログラム3|最終行を取得 cmax = Range("A65536").End(xlUp).Row 'プログラム4|1~cmaxまで繰り返し処理 For i = 1 To cmax 'プログラム5|A列にiを出力 Range("B" & i).Value = i Next 'プログラム6|プログラム終了 End Sub |
以下で詳しく説明します。
プログラム0|変数宣言の指定
1 |
Option Explicit |
「Option Explicit」とは、変数宣言を強制するためのものです。
予期しないエラーを防止できるため「Option Explicit」を入力することを習慣化することを推奨しています。
詳しい説明は以下のページで紹介しています。
プログラム1|プログラム開始
1 |
Sub Sample6() |
VBAではプロシージャという単位でプログラムを呼び出します。
プロシージャの構文は下記となっています。
1 2 3 |
Sub プロシージャ名() '実行プログラム End Sub |
「Sub」で始まり「End Sub」で終わります。
プロシージャに関連するmoduleの話については以下で説明しています。
プログラム2|変数設定
1 |
Dim i As Long, cmax As Long |
本プログラムで使用する変数を設定します。
Long(整数)型の変数を2つを使います。
iはFornextの数値カウンター、cmaxは最終行取得用としてそれぞれ使用します。
変数については、以下のページで紹介しています。
プログラム3|最終行を取得
1 |
cmax = Range("A65536").End(xlUp).Row |
A列の最終行を取得します。
「cmax = ws.Range(“A65536”).End(xlUp).Row」は、wsのセルA65536, A65535, A65534,・・・, A10と上のセルをチェックしていき、値が入っている最初のセルを取得するという意味です。
この事例では、セルA65536から数えて、セルA10が値が入っている最初のセルなので、「cmax = 10」となります。
「Debug.Print()」で検証すると、以下の通りです。
Debug.Printでの検証結果
1 2 3 4 5 |
Dim cmax as Long cmax = ws.Range("A65536").End(xlUp).Row Debug.Print cmax >>>cmax:10 |
ここで取得したcmaxの値はForNextの終了地点として活用します。
プログラム4|1~cmaxまで繰り返し処理
1 2 3 4 5 |
For i = 1 To cmax 'プログラム5|B列にiを出力 'Range("B" & i).Value = i Next |
上記のFor(1行目)とNext(5行目)の間を、i=1,2,3,・・・,cmaxと1つずつカウントアップしながら、繰り返し処理を行います。
この事例では、cmax=10なので、i=1,2,3,・・・,10とカウントアップしていきます。
iがどのような動きをするかを以下で検証します。
Debug.Printでの検証結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim i As Long For i = 1 To cmax Debug.Print i Next >>>1 >>>2 >>>3 >>>4 >>>5 >>>6 >>>7 >>>8 >>>9 >>>10 |
上記のようにFor~Nextの間でiを1ずつ加算して、処理を行っていきます。
プログラム5|B列にiを出力
1 |
Range("B" & i).Value = i |
B列のi行目のセルに「i」を出力します。
iは1,2,3,・・・,cmaxという数値なので、数値を書き出していきます。
プログラム6|プログラム終了
1 |
End Sub |
プログラム1と対になるプログラムで、プログラム終了させるための記述です。
「End Sub」を読み込むと、プログラムが終了します。
プログラムの解説はここまでです。
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
少しずつレベルアップしながら、難しい内容に挑戦していくと効率的に学ぶことができます。
上記のリンクでは、VBA勉強に役立つ内容を紹介しています。
興味がある人はご覧ください。