エクセルVBA超入門講座(5) -表の最後の行まで繰り返せ

くり返しは For… Next で

エクセルVBA超入門講座(2) で、エクセルで作るプログラムのパターンは

  • 表のデータを読み込む
  • 計算する
  • 結果を書き込む
  • 次の行に進む

だと書きました。このうちの、次の行に進むというのは、最初の行から全ての行に対して処理を繰り返すということです。
くり返しを表すには、For…Nextを使います。

For i = 1 To 100
 …(処理)
Next i

このように書くと、プログラムはForとNextの間の処理を繰り返します。

何回繰り返すかというと、変数iが1から100になるまで100回繰り返します。

この変数は、i でも j でも Countでも何でも構いません。数字(整数)で定義された変数なら大丈夫です。

For i=1 To 100
と書かれていると最初はiは1です。
次の行の処理を行って、Next i のところに来ると、i が次の値、つまり2に変わり、Forのところからまた繰り返します。
(処理)の部分がiが100になるまで、つまり100回繰り返されます。

表の最初の行から最後の行まで繰り返す

ここでiは最初は1でなくてもかまいません。
For i = 7 To 10 なら最初は7です。10になるまでですから4回繰り返されます。

上の表のように、7行目から610行目にデータが書かれている場合などは、iが7から10になるまで繰り返して、i行目のデータについて処理を行うプログラムを作ったりします。

Stepで飛ばす

また、iを1つづつ進めるのではなく、飛ばすこともできます。

For i = 1 To 26 Step 5
というふうに書くと、iは最初は1、次は6、というように5つ飛ばしになります。表の5行目ごとに小計が入っていて小計に対してのみ処理を行う場合などはStep 5 とします。Stepの記述が省略されているときには、Step 1 になります。

「じゃあ、Toの先の最後の値がStepで止まる値でなかったらどうなるんだ?」
という疑問を持ちませんでしたか? 持ったかたはいいセンスです!
どうなるかは、一度やって確かめてみてください。

さらにはStepをマイナスにしてもかまいません。
For j = 100 To 1 Step -1
にすると、例えば表の下から順番に処理したい場合に使えます。

くり返しを終わらせるには

扱う表の行数が分からないとき、表の各行の処理を For … Next の繰り返しで行った場合に表の最後の行が終わったら繰り返しを終わらせる必要があります。そのためには2つの方法があります。

  1. あらかじめ表の最終行を調べておき、To で最終行を指定する
  2. 行のデータを取ってきて、なかったら(空白だったら)処理をやめて終わらせる

くり返しを使うには、For…Next の他にも、Do…Loopというコマンドを使うこともできます。このコマンドは繰り返し回数が不明の場合に向いています。

けれども、Do…Loopは終了条件の記述がちょっとだけ難しく、間違えると無限にループしてプログラムが終わらなくなってしまうことがあります。

ですから初心者はまずは分かりやすいFor…Nextだけ使うことをおすすめしています。それだけでもある程度のプログラムを作ることができますから。

今回は繰り返し処理の説明でした。


(B) エクセルプログラミング初級勉強会 5000円。詳しくはこちら

  • 7/27(土)横浜 13:00-16:00
         マクロの操作とセルの色や罫線の自動編集編
  • 8/4(日) 横浜 13:00-16:00
         セル内の文字列の編集編

(C) 夏休みの自由研究ができあがる、親子エクセルプログラミング教室 
   親子で5000円。詳しくはこちら

  • 7/27(土)横浜 10:00-12:00
         クイズゲームを作ってみよう
  • 8/4(日) 横浜 10:00-12:00
         かるたゲームを作ってみよう