VBA09_繰り返し処理でパソコンをこき使おう

おはようございます! にわか管理人のBenです。

前回まででプログラム作成に必要な基本的な作業が一段落したので、今回はより構造的なもの、まずは繰り返し処理です。人間は新しいことを次々生み出すのができる素晴らしい生き物です。一方パソコンは使い方にもよりますが、比較的簡単に一定の規則的な処理を何万回でも繰り返すのが得意です。Benも実務で数百万回くらいの計算を度々させています。そのときに役立つのが繰り返し処理です。

20141106a.gif
繰り返し処理には主に2つの方法があります。そのうちの一つがこのFor~Nextループです。以前、オブジェクトの属性を表すプロパティや、何をどうするの「どうする」にあたるメソッドを紹介してきました。実はもう一つあって、それが「○○しなさい!」っていうステートメントです。

先ほど紹介したFor~Nextもステートメントで、所定の回数繰り返しなさい! という命令形です。具体的にはとある変数(i)を使って、初期値(今回は1)、刻み幅(繰り返すたびに増える数。既定値は1)、どの値まで(正確にはこの値を超えたら)繰り返すかが終了値(今回は10)です。

20141106b.gif
でも、この繰り返し処理、ただ繰り返すだけでなく、iの値が1つずつ増えていくことに真の意味があるのです。たとえば、偶数だけ並べたいときは、i*2にすればi=1のときは2、i=2のときは4となり、偶数の一覧が作れます。

20151106c.png
例えばこういう表をVBAを使って自動で作るとします。1行目は普通にプロパティ設定するとして2行目以降をFor~Nextで効率化します。変数iを1から10まで1刻みでループさせてどうすれば表ができるでしょうか。

20151106d.png
コツは、それぞれの項目の増減の規則を見つけて、それをいかにをiを使って数式を作るかです。まず、aはiと全く一緒なのでa=i、bはiの2倍なのでi*2、a*bはa(i)とb(i*2)をかけるので2*i^2(2かけるiの2乗)です。これらのセルに入力する値のほか、もう一つ計算が必要ですね。それは入力するセルの行です。列は項目ごとに決まっているのでいいですが、行はi=1の結果は2行目に、i=2の結果は3行目に・・・つまりi+1行目に入力します。

20151106e.png
これらを実際にコーディングすると御覧のとおりです。Cells(行番号,列番号)のプロパティを使ってうまくi+1行としてうまく下まで入力しています。30個のデータを入力するのに変数の宣言を合わせても6行ですみます。For文の終了値を10から100に変えると、同じ6行のコードで300個の値を入力できます。繰り返し処理って便利なのでどんどんやらせてパソコンをこき使いましょう
このFor~Nextステートメントは組み合わせるとさらに威力が増します。それは次回のノートで

この記事へのコメント


この記事へのトラックバック