こんにちは! ハマラクです。
ループ処理を覚えて、いろんなプログラムを書けるようになったと思いますが、その時々で処理の結果を変えたいと思っていませんか。
この記事では、VBAで業務改善を目指す3段階目「条件分岐」について説明いたします。
条件分岐とは?ともった方もいるでしょうが、この記事では以下のことがわかります。
・条件分岐とは何か?どんな時に使うのか
・覚えるべき条件分岐文はたった一つ
・実際に条件分岐処理をやってみよう!
条件分岐処理を覚えると簡単な業務改善はできるようになります。この記事を読み終えると条件分岐をマスターし、頭の中で自分の業務の中で改善できそうな仕事が浮かんでいるでしょう。
このサイト内の「VBA」タグはVBA初心者が日頃の業務を改善し、自分の時間を作っていくこと応援することを目的に作成しています。
条件分岐とは何か?どんな時に使うのか
条件分岐とは、データに対して設定した条件の時に処理を変える制御構文のことです。例えば、変数sumの中身が1000未満ならAという文字を表示させる、1000以上ならBという文字を表示させるという処理をさせることができます。VBAで書くと次のような形になります。
Dim sum as Integer
sum = 1000
If sum < 1000 Then
MsgBox(“A”)
Else
MsgBox(“B”)
EndIf
このように条件によって処理を変えたいような場面では、条件分岐処理は有効になります。Excelの関数にもif文はあるので、ループ処理よりも身近に感じるかもしれません。具体的な例を挙げると次の場合などが当てはまります。
1.いっぱいある変数の中から目的の値が入った変数を探す場合
2.セルの中から条件に合った値があった場合にフォントを変える場合
3.ループから抜け出す場合
この処理を覚えると大抵のプログラムは書くことができるようになります。
次は、条件分岐で覚えるべき構文について説明いたします。
覚えるべき条件分岐文はたった一つ
条件分岐では大きく2つにあります。それが、If Then文とSelect Case文になります。
1.If Then文 ・・・ 「もし~ならば、~を行う」という処理を行う
2.Select Case ・・・ 変数を指定してその値によって多くの分岐処理を行う
ここで覚えてほしい条件分岐文は1つ目のIf文のみです。2つ目のSelect Case文は、多くの条件分岐を行う場合には有効ですが、始めたての時はまだ多くの分岐をする機会も少ないのでしばらくはIf文のみで十分です。また、If文で大抵の条件分岐はできてしまいます。Select Caseは条件分岐が増えてプログラムを短くしたくなった場合に覚えましょう。
If文の構成は次のようになります。
If 処理を判断する条件 Then
処理したい制御
End If
処理を判断する条件には比較演算子を使います。Aが1000以上という条件はIf A>=1000 Thenという文になります。比較演算子の種類は以下のようになります。
演算子 | 働き | 使い方 | 意味 |
= | =(等しい) | a = b | aとbは等しい |
< | <(小なり) | a < b | aはbより小さい |
> | >(大なり) | a > b | aはbより大きい |
<= | ≦(以下) | a <= b | aはb以下 |
>= | ≧(以上) | a >= b | aはb以上 |
さらに高度な条件設定をする場合は、論理演算子を使用します。
演算子 | 働き | 使い方 | 意味 |
And | 論理積(~かつ~) | ( A >= 1) And (A < 50 ) | Aは1以上 かつ 50未満 |
Or | 論理和(~または~) | (A = 1) Or (A = 10) | Aは1 または 10 |
Not | 論理否定(~ではない) | Not ( A = 1000 ) | Aは1000ではない |
このように、組み合わせによっていろんな条件を設定することができます。
実際に条件分岐処理をやってみよう!
条件分岐処理の実践編となります。基本的な条件分岐の書き方は分かったと思いますが、ここで実践に移る前にもう一つ条件を複数設定する方法について説明いたします。
条件分岐では条件が一つだけで動かすことは少なく、複数の条件を設定する必要が出てきます。If文で条件を追加するのがElse文になります。以下がその構成となります。
If 条件A Then
処理AA
Else If 条件B Then
処理BB
Else
処理CC
End If
ここでは条件Aに当てはまったときに処理AA、条件Bに当てはまったときに処理BB、それ以外を処理CCを行うことになります。ここで分かるようにIf文の中に条件を追加するときはElse If ~ Thenで書きます。Else IfではなくElseだけの時は、これまでの条件に合致しない場合に処理を行うということになります。
このようにIf文のみで多くの条件を設定することができます。では、この条件を複数設定する方法について説明したところで実践に入りたいと思います。1~40までの数値を順番に表示させて、3で割り切れる場合には数値に!!!を加えて表示させるプログラムを書いてみましょう。
ここで、補足ですがmodは計算の余りを求める演算子になります。また、文字列と文字列をくっつける場合には値と値の間に「&」を入れます。では、実行してみてください。
実行してみてどうでしたか?3の倍数の時に「!!!」が追加されて表示できましたか?
このように条件分岐では設定した条件に合致した場合に、処理の方法を変えることができるようになります。他にもいろんな条件でやってみてください。
終わりに
VBAを使った業務改善で3つ目に覚えてほしい「条件分岐」について説明いたしましたが、いかがだったでしょうか。これで、条件に合わせて処理を分けることができるようになりましたね。ここまでに覚えた、「変数宣言」「ループ処理」「条件分岐」を使うと簡単な業務改善をすることができると思います。
次回の記事では、業務改善で使える小技やプログラムを紹介していきたいと思います。少しずつ業務改善できる幅を広げていきたいと思いますので、次回も読んでいただければと思います。
ここまで読んでいただきありがとうございます。ではまた次回まで!
コメント