Top

hiroyuki.tank.support.site

簡単!マクロ講座

第16回〜穴埋-For Next〜

 今回は穴埋3〜穴埋5を見ながら解説し,「For Next」構文をマスターします。

【穴埋4】
************************************************************
1 Sub 穴埋4() 'A列i行目が「〃」だったら1行上の文字を入力
2 i = 3
3 moji = Cells(i - 1, 1)
4 If Cells(i, 1) = "〃" Then
5 Cells(i, 1) = moji
6 Else
7 MsgBox "同じじゃないよ"
8 End If
9 End Sub
############################################################

 穴埋3と違う点は3行目の「moji」という変数が使ってあることです。
 穴埋3では「もし『〃』だったら『東京』を入れる」ということになっていました。大阪でも広島でもいつもいつも「東京」になってしまうのは具合が悪いですね。
 そこで,「moji」という変数を使ってその都度セルに入れる文字を変えてしまおうという作戦です。
 「moji = Cells(i - 1, 1)」は,「moji」にセルA2の中身を入れるということになります。
 なぜA2になるかというと,i=3だからです。
 では,なぜmojiはA2の中身でなければならないかというと,A3がもし「〃」だったら一つ上の行「i-1」の中身を(ここではA2の「東京」のこと)をA3の中に入れなければならないからです。
 ここはわかりにくいところですから,エクセルの表とよく見比べ何度も読んで理解してください。

【穴埋5】
************************************************************
1 Sub 穴埋5() 'A列i行目が「〃」だったら1行上の文字を入力繰り返し
2 For i = 3 To 11
3 moji = Cells(i - 1, 1)
4 If Cells(i, 1) = "〃" Then
5 Cells(i, 1) = moji
6 Else
7 MsgBox "同じじゃないよ"
8 End If
9 Next
10 End Sub
############################################################

 穴埋4と違う点は2行目の「For i = 3 To 11」,9行目の「Next」という構文が使ってあることです。
 穴埋4ではiが3と固定されていましたから,次の行にいくことができません。
 A3だけで終わりならいいのですが,11行目までを処理しなければなりませんから,穴埋4でやったことを繰り返し11行目までをやる必要があります。
 ここで「For Next」という構文が出てきます。
 2行目の「For i = 3 To 11」というのは,「iは3から11へ」という意味です。英語を読んだら何となくそのとおりのようですね。
 プログラムは上から下へ流れるのが基本ですから,まず最初1行目を処理して次に2行目委を処理します。2行目に「iは3から11へ」と記述してありますから,まずiに3をいれて処理が進みます。そして9行目まで行くと,「Next」が待っています。
 この「Next」があると「For」のある位置までもどってそこから再度処理されます。そして今度はiに4をいれて処理されます。これがiに11が入るまで繰り返されます。
 この「For Next」という構文は便利な構文ですから覚えておいて損はありません。

 穴埋5を実行してみてください。動くとうれしいものです。

| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |