エクセルマクロ(EXCEL VBA)

エクセルマクロ(EXCEL VBA) その5 繰り返し作業(For Next)

For Nextを使って作業を繰り返す

『指示した内容を忠実に繰り返してくれる』というのがエクセルマクロを作る醍醐味です。
前回、Cellsでセルの指定ができるようになったので、いよいよ繰り返し作業をやってみましょう。

 
氏名に様をつけるプログラム

例えば、こういう氏名のリストがあったとします。

氏名リスト

B2には、「様」をつけて、織田信長様にしたいと思った場合、どうすればよいでしょうか?
A列の全てをコピーしてB列に貼り付けてから一つずつ開いて「様」と打ち込んでいけばできますが、とても面倒です。

ということで、マクロで書けるようにしたいと思います。

まず、開発→Visual Basicを開き、
挿入→標準モジュールをクリックして空のウィンドウを出してください。
(このやり方は、その2で説明していますので、ご参照ください。)

そこに、

sub add_sama

と打ち込んでエンターを押しましょう。

add_samaを打ちこむ

そうすると、勝手にEnd Subが入ります。
このSubと、End Subの間に命令を打ち込んでいきましょう。

add_samaのプロシージャ

B2を狙いたいので、Cellsで言うと
cells(2,2)ですね。

なので、まずは

cells(2,2) = "様"

と打ち込んでみましょう。

B2に様を表示させる

これで、左上にある再生ボタンを押して実行してみてください。

実行する

エクセルの画面で、うまくB2に「様」が入りましたでしょうか?

様が入った

でも、本当にやりたいのは、B2に「織田信長様」としたいわけなので、ここで【文字列の結合】を使って実現してみます。

マクロ作成画面に戻って、

Cells(2,2) = Cells(2,1) + "様"

と修正してみましょう。

マクロを修正

これで実行すると、エクセルのB2が今度は「織田信長様」になったはずです。
うまく行きましたか?

織田信長様

無事にマクロで「様」を付けられました!
あとの二人も同じようにしたいときに、どうすればいいでしょうか?
豊臣秀吉のセルはCells(3, 1)ですし、徳川家康のセルはCells(4, 1)なので

 
根性で繰り返すと

こうやると良さそうですね。
ただこれだと、コピペするとの変わらないくらい、めちゃくちゃ手間がかかります・・・。

そこで、繰り返し作業の呪文の登場です。
こう打ち込んでください。

For i = 2 To 4
    Cells(i, 2) = Cells(i, 1) + "様"
Next

For Nextを打ち込む

先程、2, 3, 4と数字が増えていた箇所を「i」に置き換えて、
その前に、For i = 2 To 4
後ろにNextと付けました。

これで実行してみましょう。

様を付けた結果

うまく行きましたでしょうか。

これは、
For と、Nextで挟まれた処理を、i = 2 の時、i = 3 の時、i = 4 の時という風に、マクロちゃんが繰り返してくれたのです。

ちなみにもし、For i = 2 To 100 と書いていたら、100行目までマクロちゃんは「様」をつける作業をやってくれます。
試してみてください。

次回も、もう少しFor Nextに慣れるために練習してみましょう。

 
今回の最終的なコード

Sub add_sama()
For i = 2 To 4
    Cells(i, 2) = Cells(i, 1) + "様"
Next
End Sub

 

宿題-5
氏名のリストと、For Nextを使って、B列に「こんにちは!○○様」と入るようにしてください。

エクセルマクロ(EXCEL VBA) その6 繰り返し作業の練習(For Next)

(文:森脇孝/エントレ)

関連記事一覧