Forを使った繰り返し処理で連番を自動入力

今回はVBA初心者講座の第7弾

【For~Next文を使った繰り返し処理について】のお話です。

VBAでプログラミングしていると、繰り返しの処理ほど便利な機能は無いと感じます。

Excelを使いこなせるようになっても同じことを繰り返すことはよくあります。

例えば、請求書の内容を毎月消して作り直したり出勤簿を毎月作り直す

日報を毎日作って報告するなど、同じことを毎回やることは、たくさんありますよね。

今回紹介するFor(フォー)文を使うと、繰り返しの作業を自動化することが出来ます。

例えば複数のシートの内容を調べて転記したり、1行ずつ内容を調べて条件に当てはまる項目をピックアップしたりする機能の基礎になるので、すごくオススメの機能の一つです。

将来的にもすごく活躍してくれるので、ぜひ覚えてみましょう

それでは、早速本編へ行ってみよう!!!

For文の基本的な書き方

まずは、For文の基本を押さえましょう。

書き方はこんな感じです。

Sub For文を使って連番を書こう()

    Dim i As Integer
    
    For i = 1 To 10
        Cells(i, 1).Value = i
    Next i

End Sub

このコードを実行すると、こんな風に「A1セル~A10セルに1~10までの数字」が自動で入力されます。

結果は単純ですがFor文の基礎が理解できれば、色々なところで応用が効くので少しずつ内容を理解してみましょう。

では、このコードを順番に解説していきます。

まず、「Dim i as Integer」は、前回の変数と定数の話で出てきたた通り、「i」という変数名に「Integer」というデータ型を指定して宣言しています。

つまり、「i」には短い数字が入るよという意味ですね。

よく分からない場合は、前回の記事を参考にしてみて下さい。

さて、次は「For i = 1 to 10 ~ Next i」の部分です。

For文は次のような使い方をします。

For文のルールはこんな感じです

  1. For 変数名~Next 変数名と書く
  2. For文は変数に最初の数字~最後の数字を設定するために使う
  3. 「変数=初期値 to 最終値」という書き方で変数に初期値~最終値を設定するという意味になる
  4. For~Nextの間に処理する内容を書く
注意

For文は書くことが少し多いので途中の半角スペースなどに注意が必要です
慣れてくると簡単ですが最初は注意してみてください

今回の場合は、変数「i」に「1~10までの数字」を入れていますよね。

これは「1で始まり10で終わる」つまり10回繰り返すという意味になります。

これをForで初めてNextまで行ったら戻るを繰り返します。

ちょっと分かりづらいので動きを分解して見ていきましょう

For文の基本の動きを分解しよう

For文の基本的な動きについて見ていきましょう。

まず、「For i =1 to 10 ~ Next i」の動きを見てみましょう。

こんな風にFor分は、1~10回という指定された回数繰り返す動きをします。

「For i = 開始する値 to 終了する値」なので10回繰り返すという動きをします。

この繰り返しを専門的に言うと、「10回ループさせる」と言います。

Loop(ループ)とは、「ヒモで作った輪」という意味があり「繰り返す」という意味もあります。

イメージとしては、メビウスの輪のような感じでしょうか。

メビウスの輪とは、一度ひねった細長い紙の端同士をくっつけて輪っかにし、鉛筆で線を引くとずっと線を引き続ける作りの輪っかのことです。

ずっと繰り返すことを「無限ループ」といったりしますが、つまりループとは繰り返すという意味です。

VBAでもループという言葉が出てくるので、なんとなくで良いのでこの言葉を覚えておきましょう。

For分の動きと一緒に変数「i」の動きも一緒に見てみましょう

変数「i」を段ボール箱にたとえると、今回の動きはこんな感じです。

変数「i」は、こんな風に1~10まで順番に入っていきます。

今まで入っていた「1」は消えるので、2回目以降は「2・3・4……」と順番に数字が入っていくイメージを持ってもらえればOKです。

順番に数字をシートに転記していく仕組みを分解しよう

次は今回のポイントである「 Cells(i, 1).Value = i 」がどうして1行おきに連続して数字を入力できるのか?

この仕組をみてみましょう。

これが理解できると、「繰り返しの処理と変数の理解」ができるのでよりVBAが楽しくなりますよ。

今回の仕組はこんな感じです。

こんな風に「i」には1から順番に10までの数字が入っています。

この変数「i」に入っている数字を上手く応用することで、自動的にA1~A10のセルに「1~10」の数字が入力されていきます。

今回は、少し難しいのでもう少し仕組みを見ていきましょう。

実際にシートに転記する処理は、こんな感じです。

こんな風に1ずつ増えていくという特徴を上手く応用できると、自動で連番をいくらでも振ってくれるプログラミングが出来ます。

もう少し分かりやすい方がいい場合は、次のコードでFor文がどんな風に表示してくれるのか? 見てみましょう

Sub For文を使って連番を表示する()

    Dim i As Integer
    
    For i = 1 To 10
        MsgBox i
    Next i

End Sub

以前、紹介しましたがこのコードを実行すると、メッセージボックスに1~10までの数字が表示されます。

こっちの方がシンプルですが、連番の自動化はこれを少し応用しただけなので、ぜひ自動で連番を振る仕組みを理解してみましょう。

VBAをシートから実行する方法とショートカットキー

そろそろ自分で書いたコードを実行する機会が多くなってきます。

そこで、VBAをシートから実行する方法と実行のショートカットキーを覚えてみましょう。

まず、シート側からコードを実行する方法です。

①「開発タブ」→コードグループの「マクロ」をクリック

②マクロ名の一覧から「For文を使って連番を書こう」をクリック→「実行」ボタンをクリック

これでコードが実行されます。めっちゃ簡単ですね。

マクロ名が2つあるのは、2つ以上のSubプロシージャ(プログラム)があるためです。

複数のプログラム名が表示される場合は、実行したい方のプログラムのタイトルをクリックして実行しましょう。

次はマクロの実行方法のショートカットキーについてです。

マクロの実行をショートカットキーで行うためには、「Altキー+F8キー」でマクロの実行ダイアログが表示されます。

普通、ショートカットキーといえば「Ctrl+アルファベット」ですが、マクロの実行は特殊な組み合わせで実行できるので、余裕があれば覚えちゃいましょう。

まとめ

今回のお話はいかがでしたか?

For分の基本的な使い方をきちんとお伝えできたでしょうか?

For文はかなり使いやすい繰り返し処理なので、ぜひマスターしましょう。

私が一番良く使う組み合わせの1つにFor文とIF文を組み合わせるという技があります。

繰り返し+条件分岐をする方法なのですが、これがかなり頻繁に使うのでまずはFor文を使いこなせるようになってVBAを楽しみましょう。

最後まで読んでいただきありがとうございました。

それでは、次回またお会いしましょう。

バイバイ!!!

コメントを残す

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