まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

【Excelマクロ・VBA】Select Case文(条件分岐)の使い方を知りたいです。教えて!

       f:id:m_kbou:20190515074108p:plain

Select Case文は、複数の条件により処理を分岐させたい場合に使用します。条件分岐にはIF文もありますが、Select Case文との違いは、IF文は分岐の数が少ない場合に使用し、Select Case文は分岐が多い場合に使います。IF文で記述すると読みずらい構文も、Select Case文にするとスッキリ読みやすくなります。

 

【目次】

 

構文

記述方法は以下の様になります。 

=======================================================================

Select Case [変数]
    Case [条件式①]
        [処理①]
    Case [条件式②]
        [処理②]
    Case Else
        [上記のどの条件にも一致しなかった場合の処理]
End Select

=======================================================================

[説明]:
[変数]には分岐させる条件を記述し、[条件式①][条件式②]には分岐させる条件を記述します。[処理①][処理②]には[条件式①][条件式②]の条件に合った場合に実行する処理内容を記述します。また、どの条件にも合わなかった場合は、Case Elseに[上記のどの条件にも一致しなかった場合の処理内容]記述します。内容を纏めると、「もし[変数]が[条件式①]の条件に合う場合には[処理①]を実施し、[条件式②]の条件に合う場合には[処理②]を実施します。いずれの条件にも合わない場合には[上記のどの条件にも一致しなかった場合の処理]を実施して下さい。」との意味になります。

 

使い方

使い方について、具体的に説明していきます。

基本的な使い方

基本的な使い方について、以下画面を元に説明していきます。

[画面]:

f:id:m_kbou:20190514113554p:plain

※<判定>ボタンには、以下の記述例サンプルプロシージャが登録されている事とします。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Select Case Range("A2")
        Case 1
            MsgBox "1番を入力しました!"
        Case 2
            MsgBox "2番を入力しました!"
        Case 3
            MsgBox "3番を入力しました!"
        Case Else
            MsgBox "入力番号が間違っています!"
    End Select
End Sub

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

内容は、
・A2セルに1が入力された場合、「1番を入力しました!」を表示して下さい。
・A2セルに2が入力された場合、「2番を入力しました!」を表示して下さい。
・A2セルに3が入力された場合、「3番を入力しました!」を表示して下さい。
・上記以外の場合、「入力番号が間違っています!」を表示して下さい。
となります。

[実行例]:

(サンプル1)A2セルに1を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113621p:plain 

(サンプル2)A2セルに4を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113639p:plain

 

Orで複数条件を指定する使い方

Orで複数条件を指定する方法について、以下画面を元に説明していきます。

[画面]:

f:id:m_kbou:20190514113701p:plain

※<判定>ボタンには、以下の記述例サンプルプロシージャが登録されている事とします。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Select Case Range("A2")
        Case 3, 4, 5
            MsgBox "春です。"
        Case 6, 7, 8
            MsgBox "夏です。"
        Case 9, 10, 11
            MsgBox "秋です。"
        Case 12, 1, 2
            MsgBox "冬です。"
        Case Else
            MsgBox "月を入力して下さい!"
    End Select
End Sub

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

内容は、
・3月、4月、5月の場合、「春です。」を表示して下さい。
・6月、7月、8月の場合、「夏です。」を表示して下さい。
・9月、10月、11月の場合、「秋です。」を表示して下さい。
・12月、1月、2月の場合、「冬です。」を表示して下さい。
・上記以外の場合、「月を入力して下さい!」を表示して下さい。
となります。
※Orでの複数条件を指定する場合は、「,」(カンマ)で区切ります。

[実行例]:

(サンプル1)A2セルに6を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113723p:plain

(サンプル2)A2セルに13入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113740p:plain

 

Toで範囲を指定する使い方

Toで範囲を指定する方法について、以下画面を元に説明していきます。

[画面]:

f:id:m_kbou:20190514113804p:plain

※<判定>ボタンには、以下の記述例サンプルプロシージャが登録されている事とします。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Select Case Range("A2")
        Case 1 To 3
            MsgBox "入力した数字は1~3の範囲内です。"
        Case 4 To 7
            MsgBox "入力した数字は4~7の範囲内です。"
        Case 8 To 10
            MsgBox "入力した数字は8~10の範囲内です。"
        Case Else
            MsgBox "入力した数字は1~10以外です。"
    End Select
End Sub

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

内容は、
・1~3の数字が入力された場合、「入力した数字は1~3の範囲内です。」を表示して下さい。
・4~7の数字が入力された場合、「入力した数字は4~7の範囲内です。」を表示して下さい。
・8~10の数字が入力された場合、「入力した数字は8~10の範囲内です。」を表示して下さい。
・上記以外の場合、「入力した数字は1~10以外です。」を表示して下さい。
となります。

[実行例]:

(サンプル1)A2セルに4を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113845p:plain

 (サンプル2)A2セルに13を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113911p:plain

 

Isで比較条件を指定する使い方

Isで比較条件を指定する方法について、以下画面を元に説明していきます。
また、比較条件には比較演算子を使用しますので、一覧を載せておきます。

f:id:m_kbou:20190514114028p:plain

[画面]:

f:id:m_kbou:20190514113931p:plain

※<判定>ボタンには、以下の記述例サンプルプロシージャが登録されている事とします。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Select Case Range("A2")
        Case Is < 30
            MsgBox "赤点です!"
        Case Is = 30
            MsgBox "赤点ギリギリです!"
        Case Is < 70
            MsgBox "もう少し努力が必要です!"
        Case Else
            MsgBox "優秀です!"
    End Select
End Sub

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

[実行例]:

(サンプル1)A2セルに30を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514113950p:plain

 (サンプル2)A2セルに60を入力し、<判定>ボタンをクリックします。

f:id:m_kbou:20190514114006p:plain

 

おわりに

上記でも説明しましたが、Select文は分岐が多い場合に使用するとプログラムがスッキリと見えるようになります。分岐が少ない場合はIF文を使用し、分岐が多い場合にはSelect文を使用するようにして下さい。