Workin' in the Life

Workin' in the Life

IT活用により、ワークライフバランスを実現させるためのブログ

Excel VBAを速攻で覚えたい② ~ステートメント編~

f:id:offcourse839:20200722194128j:plain
こんにちは、こたつです。

前回の続きで、Excel VBAの「ステートメント」について解説していこうと思います。

ステートメントを制する者はVBAを制する」といっても過言ではありません。
これを覚えることで、できることの範囲がグッと広がります。



目次

ステートメントとは

ステートメントには、「If ~ Then」ステートメント「Do ~ Loop」ステートメントなどがあります。
他にもいくつかありますが、正直この二つを覚えたら大概のことはできます。

「百聞は一見に如かず」ということで、細かい説明は抜きにして、早速動かしていきましょう。

「If ~ Then」ステートメント

前回の記事で書いたコードの下に、

If Range("B3").Value = 8 Then
    Range("B3").Value = 800
End If

を入力してみてください。

f:id:offcourse839:20200721215527p:plain

そして画面上の再生ボタンを押して、元のExcel画面を見てみると、

f:id:offcourse839:20200721215341p:plain

セルB3の値が800となりました。

先程のコードを訳すと、
f:id:offcourse839:20200721221849p:plain
となります。
セル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

を入力してください。

f:id:offcourse839:20200722180727p:plain

ActiveCell とは、選択しているセルのことです。
Range("B3").Select により、セルB3が選択されるので、
ここでいう ActiveCell は、まずセルB3のこととなります。

少しややこしくなってきましたが、とりあえず再生ボタンで動かしてみましょう。
f:id:offcourse839:20200722180811p:plain

ほほう・・・
先程のコードを訳していきます。
f:id:offcourse839:20200722184824p:plain
つまり、Do until から後ろに書かれている条件を満たせば、Loopの外(Loopの下)へ抜け、満たさない限り永遠と、中に書いてある処理を繰り返すというわけです。

今回の場合、
一週目では、条件であるセルB4の値がまだ5ではないので、セルB3の値は777となりました。
そしてセルC3が選択され、二週目へと向かいます。

ここでも、条件であるセルC4の値が5ではないので、セルC3の値が777となります。

セルD3が選択され、三週目へ向かおうとするとき、条件であるセルD4の値が5となりました。
なのでセルD3の値は777とならず、ここでLoopの外へ抜けることとなります。




いかがだったでしょうか?



少し難しかったとは思いますが、ここまで理解できればVBAマスターも目前です。


f:id:offcourse839:20200722191832p:plain


次回は「変数」について説明していこうと思います。

最後の力を振り絞って頑張りましょう!

wbala.hatenablog.com