『Excel』 VBAでちょっと便利!?(その7)

2018年11月16日 仕事のこだわり

Excelでのプログラミング7回目です。

今回から3回にわたり条件分岐について書きます。
条件分岐とは、条件式によって次に行う処理を振り分ける(別の処理を行わせる)ことです。

【条件分岐 第1回目】

IfElseIfステートメント

Ifは、”If 条件式 Then”の形式で条件を調べて、 条件式に合致したときだけその次の処理を実行します。 条件が合致しなかったときは、Else以降の処理を実行します。
※条件に合致した時、条件式の値は「True」、合致しなかった時条件式の値は「False」になります。

-------------
 ステートメントの書式
-------------

〔書式1〕

 If 条件式1 Then
  条件式1を満たした場合の処理 (処理1-①)
 End If

〔書式2〕

 If 条件式1 Then
  条件式1を満たした場合の処理 (処理2-①)
 Else
  条件式1を満たさなかった場合の処理 (処理2-②)
 End If

〔書式3〕

 If 条件式1 Then
  条件式1を満たした場合の処理 (処理3-①)
 ElseIf 条件式2 Then
  条件式2を満たした場合の処理 (処理3-②)
 Else
  条件式1,条件式2を満たさなかった場合の処理 (処理3-③)
 End If

・書式1は、条件1に合致した場合だけ(処理1-①)が実行されます。

・書式2は、条件1に合致した場合は(処理2-①)が実行され、
  条件1に合致しない場合は(処理2-②)が実行されます。

 ・書式3は、条件1に合致した場合は(処理3-①)が実行され、
  条件2に合致した場合は(処理3-②)が実行され、
  条件1、条件2に合致しなかった場合は(処理3-③)が実行されます。

-----
条件式
-----

◇条件式には「比較演算子」といわれる大小を比べる式が使われます。

演算子 意味
= 等しい a=5 ⇒ aの値が5なら合致
< より小さい a<5 ⇒ aの値が5より小さいなら合致
<= 以下 a<=5 ⇒ aの値が5以下なら合致
> より大きい a>5  ⇒ aの値が5より大きいなら合致
>= 以上 a>=5 ⇒ aの値が5以上なら合致
<> 等しくない a<>5 ⇒ aの値が5と等しくないなら合致

次の例ではインプットボックスを使って入力された文字により処理を分岐させた例です。
※インプットボックスとは、メッセージを表示してキーボードからの入力を待つダイアログを表示するものです。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub test1()

Dim intNenrei As Integer

 intNenrei = InputBox(“あなたは何歳ですか?数字で入力してください。”)

 If intNenrei > 12 Then
  MsgBox “大人料金です。”
 Else
  MsgBox “子供料金です。”
 End If

End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

※入力された数字が「12より大きい時」と「それ以外(12以下)」で分岐しています。

 

◇条件式では「論理演算子」を使用することができます。

演算子 意味
条件式1 And 条件式2 条件式1と条件式2の両方を満たした場合合致
条件式1 Or 条件式2 条件式1か条件式2のいずれか1つを満たした場合合致
Not 条件式 条件式を満たさない場合合致

次の例では論理演算子を使用して処理を分岐させています。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub test2()

Dim intTokuten As Integer

 intTokuten = InputBox(“得点を入力してください”)

 If 80 =< intTokuten And intTokuten <= 100 Then
  MsgBox “ランクAです”
 ElseIf 60 =< intTokuten And intTokuten < 80 Then
  MsgBox “ランクBです”
 ElseIf 40 =< intTokuten And intTokuten < 60 Then
  MsgBox “ランクCです”
 ElseIf 0 < intTokuten And intTokuten < 40 Then
  MsgBox “ランクDです”
 Else
  MsgBox “得点は 0~100の数字で入力してください”
 End If

End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

※入力された得点によりランクを表示し、どの条件にも合致しなかった時(得点範囲以外)は最後のメッセージを表示します。

今回は「If 条件式 Then」による条件分岐でした。

次回は別な条件分岐についてのお話です。

Copyright © syshan.jp all rights reserved.