Top

hiroyuki.tank.support.site

簡単!マクロ講座

第17回〜穴埋-応用編〜

 今回は最後の穴埋6を解説します。
 なんで「穴埋」なの?というご質問がありましたが,「〃」という穴を埋めるという意味です。

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

 穴埋5と違う点は2行目の「列」という変数に「1」を入れているところです。
 穴埋5はA列に「〃」があるかないかを判断させていました。
 「〃」はB列にもありますから,A列が終わったらB列も処理しなければなりません。
 B列を処理するためには「Cells(i, 1)」を「Cells(i, 2)」に変えたらよかったですね。
 でも列が変わるたびに「Cells(i, 1)」の数字を何か所も変えていくと間違いも多くなるし大変です。そこで変数を使うと便利です。
 「Cells(i, 1)」の列番号の所を「列」という変数にしておいて,変数は最初に「列=1」と指定するのです。この方法を使うとB列を処理したいときは「列=2」にするだけでB列が処理できます。

 ここでもう一つ応用です。
 セルB10を見ると「同上」という文字が見えます。
 これも同じように一つ上の文字をコピーしたいときにはどうしたらいいでしょうか?
 簡単ですね。
 穴埋6の5行目,「〃」とあるところを「同上」に変えて実行したらできます。やってみてください。

 ここで問題のはじめにかえると,「まず手順をペンで書いてみよう」ということがありました。
 これはものすごく大切なことです。いくら頭でわかっていても自分で書いてそれを見てまた頭で考えることは重要です。手順を書けるか書けないかは大きい差です。

 最初考えた手順は次のようになっていました。
@セルA2を見る。
AA2に局名が入力されているか確認する。
BA3を見る。
CA3がもし「〃」だったら,A2をコピーしてA3に貼り付ける。
DA3がもし「〃」でなかったら,そのままにしておく。
EA4をみる。
FC,Dを繰り返し。
GA12までいったら終わり。

 これを振り返ってみると,プログラムはこの順番どおりにはかくことはできませんが,間違いなく手順どおりになっています。このあたりは若干の慣れが必要です。

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