Top |
|
簡単!マクロ講座
第42回〜あてな-Loop1〜
ちょっと難しいですね。いまどうなっているかを書いておきます。
Sub Macro2()
datagyo = 2
Sheets("データ").Select
Cells(datagyo, 1).Select
If Cells(datagyo, 1) = "レ" Then
Range(Cells(datagyo, 2), Cells(datagyo, 6)).Select
Selection.Copy
Sheets("入力").Select
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub
つぎいってみましょう。
【手順】
5.次の行を見る
6.2から繰り返し(ループ)
手順5と6が問題です。次の行を見ようと思ったら変数datagyoを変えなければなりませんし,繰り返しとあります。もっと難しくなってきました。
繰り返しはプログラムでループ(Loop)をよく使います。第16回ででてきた「For Next」も繰り返しをしますが,今回はLoopを使ってみましょう。
VBAでの基本形は,「Do ... Loop」となります。指定された条件が真または偽になるまで繰り返し(Loop)実行(Do)するということです。これではなんのことかわかんないですね。あてなはちょっとおいといてLoopを簡単な例で実際に使ってみましょう。
「あてな.xls」のMacro2と同じモジュール(ページ)に次のコードを書いてみてください。(最初の数字は説明用ですから不要です)コピーペーストすると早いです。
*******************************************************************
1 Sub aa()
2 datagyo = 2
3 Sheets("データ").Select
4 Do Until Cells(datagyo, 3) = "" 'データがなければ終わり
5 If Cells(datagyo, 1) = "レ" Then 'レ印があったら
6 MsgBox "チェックがありました!"
7 End If
8 datagyo = datagyo + 1
9 Loop
10 End Sub
*******************************************************************
データのチェック欄に「レ」を入れてからこれを実行すると,「チェックがありました!」とメッセージが出るはずです。チェックがある数だけメッセージが出ます。
解説します。
1-名前を「aa」とつけました。
2-変数「datagyo」に2を入れました。これは2行目からチェックを探して欲しいので2を初期値にしました。
3-シート「データ」を選択
4-セルdatayo行目の3列目が空白になるまで
5-もしセルdatayo行目の1列目に"レ"があれば
6-"チェックがありました!"とメッセージを表示
7-If構文終わり
8-変数「datagyo」に1を加える
9-Loop繰り返し-4から繰り返し
こんな感じです。チェックが入っていたらメッセージを表示し,9までいったらもう一度4から繰り返し,データがなくなるまでそれを続けています。だからチェックがなければなにも起こらずプログラムは終了しますし,チェックを入れていたらチェックの数だけメッセージが出るわけです。ひとつひとつ見ていくとそう複雑でもありません。
| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |