Excel VBA

【Excel VBA】【マクロ】【Tips】For Nextの入れ子を学ぶ

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回はFor Nextの入れ子について学びましょう!

For Nextの入れ子を学ぶ

前回は、For Nextの基礎を学びましたが、今回はFor Nextの中にFor Nextを入れる、入れ子について学びましょう。
下のような九九の表を埋めていくマクロを、For Nextを2つ使って作ってみます!

コード

Sub Main()
    Dim i As Long, j As Long
    Dim lastRow As Long, lastCol As Long
    
    lastRow = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
    lastCol = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column
    
    For i = 3 To lastRow
        For j = 3 To lastCol
            ActiveSheet.Cells(i, j) = ActiveSheet.Cells(i, "B") * ActiveSheet.Cells(2, j)
        Next j
    Next i
End Sub

コードの説明

変数を宣言します。
最終行、最終列を可変にするため、格納する変数を用意しています。
また、For Nextで必須のカウンタ変数を2つ宣言しています。
最終行は、xlUpを使用し、Excelの最大行から上へ向かって最終行を取得しています。
最終列は、xlToLeftを使用し、Excelの最大列から左へ向かって最終列を取得しています。
続いてループの処理に入ります。
For Nextを入れ子で2つ作ります。
C3セルが表のスタートになるので、行、列のループの初期値はどちらも3となります。
内側のループの中で、掛け算の処理をいれます。
i行目のB列と2行目のj列を掛けた結果をi行目のj列番目に入れています。
3行目のC列(3列目)~K列目(11列目)まで行なったら、4行目のC~K列、5行目のC~K列…と最後の11行目まで行なっていきます。
ここは少しややこしいので、今何行目を見ているかな、何列目をみているかな、というのをイメージしながら進めていくとよいです。
また、わたしは外側を行、内側を列としましたが、逆でも構いません。その場合はiとjも入れ替えて作成してくださいね!

さいごに

うまく動けば以下の結果になるはずです。

For Nextの入れ子ができるようになると、ぐっと作業の幅が広がります!
ぜひマスターして業務に生かしてみてください。

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です