Top

hiroyuki.tank.support.site

簡単!マクロ講座

第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 | マクロ講座目次 | 前回 | 次回 |