VBA10_For~Nextループを入れ子に

こんばんは! Benです。
今朝のFor~Nextの続き、早速書いちゃいました。

20151107a.PNG
今朝、For~Nextは組み合わせると威力が増すと書きましたが、それは御覧のようにループの中にまたループを入れるという入れ子のことです。ネストとも呼びます。一つのループが1から10までの直線だとすると、入れ子は縦と横にそれぞれ長さがある長方形のような面になります。もちろん入れ子は3重4重もありますので、3次元的な立体処理や、ドラ○もんのポケットみたいな4次元もできます。

入れ子にするときの注意点は、必ず外側のForからNextの間に内側のForとNextを入れることです。交差してはいけません。また、繰り返している変数も内と外で別々のものが必要です。

20151107b.PNG
この辺を踏まえて例題です。外側の変数はi、内側はj、それぞれ1から9までループします。そして繰り返して実行する処理は一行だけ。Cells(i,j)=i*jだけです。つまり、i行のj列の値にi×jを入力するということです。では、実際そういう動きをするのでしょうか

20151107c.PNG
では先頭からスタートです。1行目でi=1です。2行目でjも1です。jのループでjは9まで処理して内側のj用のNextで晴れてお役御免となります。このときまだ、外側のiのNextにはついていないのでiは1のままです。jが1から9で終わってようやくiのNextでi=2になります。1行目に戻ってまたjのループが始まるのでj=1~9までを繰り返します。これを繰り返してi=9のj=9でようやく終了となります。

つまり、1行目1列目には1×1で値は1、1行目2列目には1×2で値は2・・・2行目3列目には2×3で値は6、8行目の8列目にはハッパ64。9行目9列目には9×9で値は81。なんか見えてきましたねえ これを実行した結果は。

20151107d.PNG
御覧のとおり、九九の表でした。2の段で3をかけると6になる。まさに九九ですね。Benも業務では2重3重4重当たり前に使います。そして便利です。ばっちり使いこなせるように練習しましょう。次回はもう一つの繰り返し処理です。

この記事へのコメント


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