VBAで繰り返し処理をする方法【 For~Nextの使い方を紹介 】

Left Caption

豆父ちゃん

自動化といえば繰り返し処理!VBAで繰り返し処理をする方法が知りたい。

こんな疑問にお答えします。

結論から言うと、繰り返したいプログラムをFor~Nextで挟む!です。

For~Nextはエクセル業務の効率化を行うときに欠かすことのできない機能の一つで、繰り返し処理を行う機能のこと。For〜Nextを使って繰り返し処理を行えば、作業時間がグッと短くなり作業ミスがなくなります。

For〜Nextを使うようになってからは1日かかっていたエクセルの業務が、ものの一時間程度で終わらせることができるようになりました。

そんなエクセル業務の効率化に欠かせないFor~Nextの使い方を紹介します。


 

繰り返し処理(For〜Next)の使い方

使い方を簡単に説明すると繰り返し行いたいプログラムをForとNextで挟む!たったこれだけです。

あとは何回繰り返すのか、どこからどこまで繰り返すのか、を設定していく。

とても簡単でVBAの勉強を始めたとき一番最初に覚えた機能です。

For~Nextの詳しい使い方は3つのサンプル(仕事でよく使われる繰り返しVBA)を使って紹介します。

For~Nextのサンプル3選

 

  • 繰り返しの回数を指定する
  • カウント関数を使用し、繰り返しの回数を変動させる
  • 1個飛ばしや2個飛ばしで繰り返しを行う

 

繰り返し処理 For〜NextのサンプルVBA

繰り返しの回数を指定する

1列目(A列)の1行から10行のセルにテキスト「〇」を入力する!というVBAの作り方を紹介します。

サンプルVBA

1 Sub テスト()
2 For i = 1 to 10
3 Cells( i , 1 ) = “〇"
4 Next
5 End Sub

Forの後にi = 1 To 10と入力

※iは変数なのでkでもjでもOKです。

サンプルVBAの2行目は繰り返し行う回数を1から10とし、その回数をiで定義する!という意味です。

サンプルVBAの3行目は1列目(A列)の1行から10行のセルにテキスト「〇」を入力する!という意味です。

※ちなみにプログラムの中でこの記号「"」で挟むと、テキストとして入力される。

あとは「For」と「Next」で挟んだプログラムが指定した回数(今回は i )繰り返されます。

実行結果

 

繰り返し処理For~Nextは「F8」キーで実行すると、プログラムの動きがよくわかります。

上記のように繰り返し回数やエラーが何回目の繰り返しのとき発生しているのかなどを調べるときに便利です。繰り返し処理を導入したVBAはエラーを見つけることが難しい!というデメリットがあります。

下記の記事ではデバック(エラーを見つけて修正を行う)の方法を詳しく紹介しています。

繰り返し処理VBAとデバックの方法を合わせて覚えておきましょう。

 

カウント関数を使用し、繰り返しの回数を変動させる

A列のテキストが「おはよう」のときB列にテキスト「〇」を入力する!というVBAの作り方を紹介します。

 

サンプルVBA

1 SUb テスト()
2 j=Cells(Rows.Count,1).end(xlUp).Row
3 For i = 1 To j
4 If Cells(i,1) = “おはよう" Then
5 Cells(i,2) = ”〇"
6 Else
7 End If
8 Next
9 End Sub

2行目では最後の行数を変数「 j 」と定義しています。変数 j にデータが入力されている最後の行数「Cells(Rows.Count,1).end(xlUp).Row」を入れる!という意味です。

4行目から7行目のA列のテキストが「おはよう」のときB列にテキスト「〇」を入力する!というプログラムをForとNextで挟んで完成です。

実行結果

 

サンプルVBAの2行目(入力されたセルの最後の行数をカウントするVBA)のおかげで、テキストが増減しても対応してくれます。

行数や列数の増減に対応する方法は下記の記事で詳しく紹介しています。

繰り返し処理VBAと行数や列数に対応するVBAを組み合わせることで、より複雑なVBAを作ることが可能になります。合わせて覚えておきましょう。

 

1行飛ばしや2行飛ばしで繰り返し行う

1列目(A列)の1行から10行のセルに1個とばしでテキスト「〇」を入力する!というVBAの作り方を紹介します。

 

サンプルVBA

1 Sub テスト()
2 For i = 1 To 10 Step 2
3 Cells( i , 1 ) = “〇"
4 Next
5 End Sub

サンプルVBAの2行目にStep 2を付け加えるだけです。

実行結果

2行飛ばしにするときはStep 3に変更するだけ

とても便利で簡単なStepなのですが注意事項があります。それは「Step」と数字の間にスペースを入れる!ということです。スペースを入れないとエラーが発生してVBAが動作しません。

Stepを使う場面

 

  • 繰り返しセルの結合を行う
  • 一行飛ばしで行を削除する
  • 一行毎にセルの色を変える

繰り返し処理For~NextとStepはセットで使い方を覚えておきましょう。

 

作業効率化に繰り返し処理(For~Next)は絶対にはずせない理由

時間のかかる単純作業や処理パターンが決まっている作業にはFor〜Nextは欠かせません。For~Nextの繰り返し処理を使うとエクセル業務の効率が格段に上がります。

For〜Nextは使い方もシンプルで、何種類かのサンプルを見比べることで簡単に使えるようになるはずです。For~Nextを使いこなせるようになると、もっと複雑な処理が可能になります。

繰り返し処理を使った複雑なVBA

 

  • 行の繰り返しと列の繰り返しを組み合わせて使う
  • 関数For~Nextの中に関数For~Nextをいれて使う
  • 関数For~Nextの繰り返し中に、終了させる

仕事では2つ目のサンプルで紹介したカウント関数を使用し、繰り返しの回数を変動させるVBAをよく使っています。

プログラムの実行するたびに繰り返しの回数が変動するというのがExcel VBAでプログラムを組まなければできないことなので、Excel VBAの知識のない方は「こんなことができるのか」と驚いています。これからVBAの勉強をはじめるという方は必ず使い方をマスターしましょう。