教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA プログラミング】(条件判断8)入力データを条件判断し結果を表示する方法(Select文による複数判断)

       f:id:m_kbou:20200120134600p:plain

入力したデータを条件判断し結果を表示する方法について説明します。今回はSelect文を使用した複数判断について説明します。

 

【目次】

 

例題

例題は、<実行>ボタンにVBAマクロが登録されており、ボタンをクリックする事で入力したデータを条件判断して結果を表示します。内容は以下の通りとなります。

[実行前]:

f:id:m_kbou:20200313130757p:plain

<判断条件>

都道府県(A3セル)に”東京都”が入力されている場合

 ∟点数(B3セル)が100未満の場合、結果(C3セル)に”×”をセットする。

 ∟点数(B3セル)が100以上200未満の場合、結果(C3セル)に”▲”をセットする。

 ∟点数(B3セル)が上記以外の場合、結果(C3セル)に”●”をセットする。

都道府県(A3セル)に”茨城県”が入力されている場合

 ∟点数(B3セル)が50未満の場合、結果(C3セル)に”×”をセットする。

 ∟点数(B3セル)が50以上100未満の場合、結果(C3セル)に”▲”をセットする。

 ∟点数(B3セル)が上記以外の場合、結果(C3セル)に”●”をセットする。

都道府県(A3セル)が上記以外の場合

 ∟点数(B3セル)が30未満の場合、結果(C3セル)に”×”をセットする。

 ∟点数(B3セル)が30以上50未満の場合、結果(C3セル)に”▲”をセットする。

 ∟点数(B3セル)が上記以外の場合、結果(C3セル)に”●”をセットする。

[実行後]:

都道府県が”東京都”・点数が70のデータが入力されている場合

f:id:m_kbou:20200313130812p:plain

都道府県が”東京都”・点数が150のデータが入力されている場合

f:id:m_kbou:20200313130826p:plain

都道府県が”茨城県”・点数が70のデータが入力されている場合

f:id:m_kbou:20200313130840p:plain

都道府県が”茨城県”・点数が150のデータが入力されている場合

f:id:m_kbou:20200313130853p:plain

都道府県が”沖縄県”・点数が30のデータが入力されている場合

f:id:m_kbou:20200313130905p:plain

都道府県が”沖縄県”・点数が70のデータが入力されている場合

f:id:m_kbou:20200313130918p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。また、ボタンにプログラム内容を割り当てには、VBAをボタンに割り当てるを参考にして下さい。

-------------------------------------------------

Sub サンプル()
    Select Case Trim(Range("A3"))
        Case "東京都"
            Select Case Trim(Range("B3"))
                Case Is < 100
                    Range("C3") = "×"
                Case Is < 200
                    Range("C3") = "▲"
                Case Else
                    Range("C3") = "●"
            End Select
        Case "茨城県"
            Select Case Trim(Range("B3"))
                Case Is < 50
                    Range("C3") = "×"
                Case Is < 100
                    Range("C3") = "▲"
                Case Else
                    Range("C3") = "●"
            End Select
        Case Else
            Select Case Trim(Range("B3"))
                Case Is < 30
                    Range("C3") = "×"
                Case Is < 50
                    Range("C3") = "▲"
                Case Else
                    Range("C3") = "●"
            End Select
    End Select
End Sub

-------------------------------------------------

今回の例題では、条件判断にSelect文を使用します。

条件判断セルはA3となるため、Trim(Range("A3"))と記述します。Trim関数は文字列前後にスペース文字が入っていた場合に取り除くための指定となります。

最初に都道府県が”東京都”・”茨城県”・それ以外で判断するため、Case "東京都"・Case "茨城県"・Case Elseで各々記述します。

次に都道府県により点数の判定条件が異なるため、各都道府県別に点数判定条件を記述します。

都道府県が”東京都”の場合、点数(B3セル)が”100未満の場合”・”100以上200未満の場合”・それ以外の場合に分ける必要があるため、ここでもSelect文を使用した条件分岐を行います。”100未満の場合”はCase Is < 100、100以上200未満の場合はCase Is < 200、それ以外の場合はCase Elseを記述し、それぞれの結果(C3セル)を表示させる記述をRange("C3") = "×"・Range("C3") = "▲"・Range("C3") = "●"とします。

都道府県が”茨城県”の場合、点数(B3セル)が”50未満の場合”・”50以上100未満の場合”・それ以外の場合に分ける必要があるため、ここでもSelect文を使用した条件分岐を行います。”50未満の場合”はCase Is < 50、50以上100未満の場合はCase Is < 100、それ以外の場合はCase Elseを記述し、それぞれの結果(C3セル)を表示させる記述をRange("C3") = "×"・Range("C3") = "▲"・Range("C3") = "●"とします。

都道府県がそれ以外の場合、点数(B3セル)が”30未満の場合”・”30以上50未満の場合”・それ以外の場合に分ける必要があるため、ここでもSelect文を使用した条件分岐を行います。”30未満の場合”はCase Is < 30、30以上50未満の場合はCase Is < 50、それ以外の場合はCase Elseを記述し、それぞれの結果(C3セル)を表示させる記述をRange("C3") = "×"・Range("C3") = "▲"・Range("C3") = "●"とします。

上記の記述内容からも既にお気づきだとは思いますが、Select文は上から順番に条件判定を行い、指定した条件に合った場合は記述した処理が実行された後にSelect文を抜ける事になります。

 

ダウンロード

上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。

1drv.ms

 

関連プログラム

www.osiete-excelvba.work