Excel VBAを速攻で覚えたい② ~ステートメント編~
こんにちは、こたつです。
前回の続きで、Excel VBAの「ステートメント」について解説していこうと思います。
「ステートメントを制する者はVBAを制する」といっても過言ではありません。
これを覚えることで、できることの範囲がグッと広がります。
目次
ステートメントとは
ステートメントには、「If ~ Then」ステートメントや「Do ~ Loop」ステートメントなどがあります。
他にもいくつかありますが、正直この二つを覚えたら大概のことはできます。
「百聞は一見に如かず」ということで、細かい説明は抜きにして、早速動かしていきましょう。
「If ~ Then」ステートメント
前回の記事で書いたコードの下に、
If Range("B3").Value = 8 Then Range("B3").Value = 800 End If
を入力してみてください。
そして画面上の再生ボタンを押して、元のExcel画面を見てみると、
セルB3の値が800となりました。
先程のコードを訳すと、
となります。
セルB3の値が8だったので、セルB3に800が入力されたというわけです。
この書き方は最初から暗記する必要はありません。
というかできません。すぐ忘れます。
最初はググってコピペすればOKです。
「Do ~ Loop」ステートメント
続いて「Do ~ Loop」ステートメントを書いていきます。
先程のコードの下に、
Range("B3").Select Do Until ActiveCell.Offset(1, 0).Value = 5 ActiveCell.Value = 777 ActiveCell.Offset(0, 1).Select Loop
を入力してください。
ActiveCell とは、選択しているセルのことです。
Range("B3").Select により、セルB3が選択されるので、
ここでいう ActiveCell は、まずセルB3のこととなります。
少しややこしくなってきましたが、とりあえず再生ボタンで動かしてみましょう。
ほほう・・・
先程のコードを訳していきます。
つまり、Do until から後ろに書かれている条件を満たせば、Loopの外(Loopの下)へ抜け、満たさない限り永遠と、中に書いてある処理を繰り返すというわけです。
今回の場合、
一週目では、条件であるセルB4の値がまだ5ではないので、セルB3の値は777となりました。
そしてセルC3が選択され、二週目へと向かいます。
ここでも、条件であるセルC4の値が5ではないので、セルC3の値が777となります。
セルD3が選択され、三週目へ向かおうとするとき、条件であるセルD4の値が5となりました。
なのでセルD3の値は777とならず、ここでLoopの外へ抜けることとなります。
いかがだったでしょうか?
少し難しかったとは思いますが、ここまで理解できればVBAマスターも目前です。
次回は「変数」について説明していこうと思います。
最後の力を振り絞って頑張りましょう!