教えて!ExcelVBA!

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

【ExcelVBA 構文】Select Case文(条件分岐)の使い方を知りたいです。教えて!

       f:id:m_kbou:20200417210805p: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番を入力しました!」を
・上記以外の場合、「入力番号が間違っています!」を
MsgBoxで表示して下さいとなります。

[実行例]:

(サンプル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月の場合、「冬です。」を 
・上記以外の場合、「月を入力して下さい!」を
MsgBoxで表示して下さいとなります。
※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以外です。」を 
MsgBoxで表示して下さいとなります。

[実行例]:

(サンプル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

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

内容は、
・30未満の数字が入力された場合、「赤点です!」を
・30の数字が入力された場合、「赤点ギリギリです!」を
・31以上70未満の数字が入力された場合、「もう少し努力が必要です!」を
・上記以外の場合、「優秀です!」を
MsgBoxで表示して下さいとなります。

[実行例]:

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

f:id:m_kbou:20190514113950p:plain

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

f:id:m_kbou:20190514114006p:plain

 

おわりに

上記でも説明しましたが、Select文は分岐が多い場合に使用するとコーディングが簡潔でスッキリとします。分岐が少ない場合はIF文を使用し、分岐が多い場合にはSelect文を使用するようにして下さい。