この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
Excelで繰り返し処理を自動化するマクロのVBAでは、「Do~Loop構文」と「For~Next構文」を使う機会が多いかと思います。
私は「Do~Loop構文」を好んで使っているので、「For~Next構文」をあまり使っていませんが、経理事務用のExcelマクロを作成する時に、使う場合もあるかと思いますので簡単に記載します。
※ For~Nextの間にEachを記述する構文ついては後日、記載します。
関連記事 Do~Loopを使って繰り返し作業を自動化するExcelマクロの作成
目次 表示
For~Next構文の基本
For~Nextの基本的な記述を記載するため、Do~Loopの記事で使用した次のExcelファイルを使います。
A列の2~10行目までの数値をC列に転記する記述すると次のとおりとなります。
Forの直後にはこの転記の命令を実行するための条件を記述するします。記述方法は次のとおりです。
For 初期値 to 最終値 (step 増加数)
stepは省略することが可能です。
省略した場合は、増加数は「1」となります。(※1)
今回は「lonYaを2から10まで1ずつ増やして実行する」という条件を記述しました。
条件を記述した次の行にはCellsを使って「C列の特定したセルにA列の同じ行にあるセルの数値を転記する」という記述をしてあります。実行すると次のとおりです。
※1 増加数について
経理事務では、セルの操作のために増加数について「1」を指定するケースが多いかと思いますが、小数点以下の数値を設定することもできます。
上記のとおり、変数varAa(型はVariant)を定義し、増加数を「0.432548」と記述してみました。
実行すると次のように表示されます。(4回目には、最終値「3」を超えるのでFor~Nextの処理は終了します。)
最大行の指定
最初の例のようにA列に入力されているデータ数が10行と決まっていない場合に、入力されているデータの最大行の数値をFor~Next構文の最終値に指定する記述をしてみます。
先ほどよりデータ数を増やした次のようなシートを用意しました。
上記のシートの最大行の行数は「19」となります。
この最大行の行数を取得するため、変数lonYy(型はLong)を定義し、次のように記述すると、最大行の数値「19」をlonYyに代入することができます。
「lonYy = ws1.Cells(Rows.Count, 1).End(xlUp).Row」
先ほどのFor~Next構文にlonYyを加えると次のような記述になります。
上記の記述を実行すると次のとおりとなります。
※2 私が記述したプログラムでは、確認のため、最後にlonYaの数値をMsgBoxを使って表示しています。
最大行(19行目)のA列の数値をC列に転記した後、再度、Nextで1つ数値が増加しますので、画面に表示される数値は、「20」となります。
■□◆◇ 編集後記 ◇◆□■
井ノ上先生が、私が欲しいトラックボールのマウスを3つも購入されていました。よく研究されています。安いものはそれなりの作りのようですが、3,000円ちょっとなら買いですね。
LINK Ex-it;ロジクールトラックボールM570、M570t、M570並行輸入版の比較。Windowsでもっともおすすめのマウス。