サイトアイコン エントレ|演劇動画ニュース

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

エクセルマクロ(EXCEL VBA)

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

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

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

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

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

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

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

そこに、

sub add_sama

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

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

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

なので、まずは

cells(2,2) = "様"

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

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

エクセルの画面で、うまく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

先程、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列に「こんにちは!○○様」と入るようにしてください。

▼ クリックで解説を表示

解説
B2に、こんにちは!織田信長様 と入れるためには、文字列の結合を使って

Cells(2, 2) = "こんにちは!" + Cells(2, 1) + "様"

とすれば良いですね。
これを、For Nextを使って 2行目から4行目まで繰り返せば良いので、

Sub hw05_hello()
For i = 2 To 4
    Cells(i, 2) = "こんにちは!" + Cells(i, 1) + "様"
Next
End Sub

とすれば完成です。

答えファイルのダウンロード

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

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

モバイルバージョンを終了