はじめてプログラミングを勉強している方が挫折しやすいのが、繰り返し(ループ)処理です。
同じことを何回も繰り返すというのはプログラミング独特の概念なので、最初はなかなか分かりません。
慣れるのにはある程度時間がかかります。
(私はかかりました。)
さて、今日は Excel VBA(マクロ)での繰り返し処理の入門編ということで、For 文の使い方をじっくり解説します!
VBA 習いたての人が繰り返し処理で挫折してしまったらもったいないと思うんですよね。。
Excel VBA は経理などの事務職では使えるツールなので、「繰り返し処理の壁」は突破してして頂きたいです。
それでは行ってみましょう!
1、繰り返し処理の題材
For 文を使うための題材を用意しますね。
最初、Excel シート上の A列の A1 ~ A10 に 1 〜 10 の番号がふってあるものとします。
VBA を使ってこのシートのセル B1 〜 B10 に、次のように数字を並べたいと思います。
VBA を使うために Alt + F11 を押して VBE(エディタ)を開きましょう。
そして、Alt → I → M を押して標準モジュール(VBA コードを記述するところ)を挿入しましょう。
真っ白なエディタが出てきます。
ここに VBA コードを書き込みます。
上記の題材を使って VBA コードを書いて For 文の使い方を説明しますね!
2、For 文の使い方
今回の題材の場合だと、VBA コードは以下のようになります。
プロシージャ名(Sub の後)は test としました。
勉強を開始したばかりの方は、ぜひこれ↓ をそっくりそのままコピペして試して頂きたいです!
1 2 3 4 5 6 7 8 9 10 11 |
Sub test() Dim i For i = 1 To 10 Cells(i, 2) = Cells(i, 1) * 2 Next i End Sub |
まずは For文のルールを覚えましょう!
For 文は次のように記述して使います。
繰り返したい処理
Next 変数
最初の行に For を記述し、最後の行に Next を記述します。
そして、For の行と Next の行で囲まれた間に繰り返したい処理を書き込みます。
さて、先に For 文を理解するためのポイントを書いておきますね。
ポイント2: 最初(For の後)と最後(Next の後)の変数を同じにする
ポイント3: 繰り返し処理の法則を見つけ出す
ポイント4: 紙に図に書いてイメージを湧かせる
ポイント1: 処理を何回繰り返したいか? をはっきりさせる
For 文の最初の行では処理を繰り返す回数を指示します。
まず、処理を何回繰り返したいか? をはっきりさせましょう!
今回の場合は、セル B1~B10 に数字を並べたいのですよね。
とりあえず感覚的にでもかまわないので、「表示させる数字が10個だから、繰り返しの回数は 10回」と理解して下さい。
「変数」はその名のとおり変化します。
変数が 1 から 10 になるまで1つずつ変化させるという意味で次のように書きます。
For 変数 = 1 To 10
変数はどのような文字でもかまいません。
・アルファベット1文字、複数文字
・日本語1文字、複数文字
VBA で変数を使うときは、普通はアルファベットで書きます。
繰り返し処理の場合だと一文字の i、j、k を使うことが多いですかね!
今回は i を使っています。
ポイント2: 最初(For の後)と最後(Next の後)の変数を同じにする
次のように書くことで、 i が 1 から 10になるまで 1つずつ増やして変化させるという意味になります。
1 |
For i = 1 To 10 |
そして、最後の行には
1 |
Next i |
と記述します。
Next i
上記の間に繰り返したい処理を書き込むことになるわけですね。
さて、ここで気を付けなければならないのは For の直後の変数と Next の直後の変数を同じにするということです。
今回の場合は i にしていますよね!
For 文を使うときは、最初に
For i = 1 To 10
と書いたらそのすぐ後に
Next i
と書いてしまいましょう。
そうすれば間違わずに済みます。
ポイント3: 繰り返し処理の法則を見つけ出す
さて、ここまでできたら For と Next 間に繰り返したい処理を書いていきます。
繰り返したい処理
Next i
10回同じ処理を繰り返すことになります。
i が 2 のときに 2回目の処理
・
・
・
・
i が 10 のときに 10回目の処理
繰り返したい処理は For と Next の間の以下の部分になります。
さて、上記の Cells(i, 1) には変数 i が入っていますよね。
先ほどお話ししたように i は 1 から 10 まで 1つずつ変化します。
そうなると、セルを表す Cells(i, 1) も i が 1 から 10 まで増えていくにしたがって、どのセルを示すか変わるんですね!
i = 2 のとき Cells(2, 1) (A2 のこと)
・
・
・
・
i = 10 のとき Cells(10, 1) (A10 のこと)
これ、i が増えるにしたがって i を使って表される他の要素も変化するということです。
これをしっかりイメージできるようになって頂きたいです!
Excel の場合、i の変化にともない操作するセルが1つずつ変わることが多いです。
さて、今回は、B列に 2、4、6、8、10、、、、と並べたかったわけですよね。
そうしたい場合にどうすれば i を使ってそれを実現できるか考えます。
そして、A 列の値 Cells(i, 1) を2倍すればいいんだ! って気付けることが大事なのです。
以下のように掛け算を書くことで、B列にA列の値を2倍した値を表示できます。
Cells(i, 2) = Cells(i, 1) * 2
ポイント4: 紙に図に書いてイメージを湧かせる
For と Next の間に記述する内容は、指定した回数だけ繰り返したいことであり、かつ i を使って実現できることにします。
なかなか最初は分かりにくいことなので、繰り返し処理を考えるときにイメージが湧くように紙に図を書くなりすると良いでしょう!
3、まとめ
For 文の基礎的な使い方について説明しました。
今回は i を 1から10まで変化させる VBA コードですが、必ず i を1からスタートさせなければならないわけではありません。
2などの他の数字からスタートすることもできます。
また、必ず i を1つずつ増やしていかなければならないわけでもありません。
2つずつ増やすことも、3つずつ増やすこともできます。
逆に減らすこともできます。
色々な使い方がある For 文ですが、今日お話しした内容が基礎の基礎です。
苦手意識を持ちやすい繰り返し処理も、基礎をしっかり身に付けて繰り返し練習すれば使えるようになります。
私もはじめてプログラミングをやったときには繰り返し処理がさっぱり分かりませんでしたが、
何回も練習するうちにわかるようになりましたよ!
Excel VBA についてのメニューも提供させて頂いておりますのでよろしければ ↓
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
編集後記
昨日(9/20)は仕事の後、空き家についての勉強。
今週土曜日に空き家相談会に相談員として出向かせて頂きます。