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

2018年12月03日 仕事のこだわり

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

前回に続き、条件分岐の2回目です。

 

【条件分岐 第2回目】

Select Case~ステートメント

前回の条件分岐の「If 条件式 Then」の場合は、1つの条件に合致する場合と合致しない場合の2つの分岐が基本でしたが、今回の「Select Case」は複数の条件で処理を分岐させたいときに便利なステートメントです。

ステートメントの書式

———————————-

〔書式1〕

Select Case 変数
Case 値1
変数=値1の場合の処理    【処理1】
Case 値2
変数=値2の場合の処理    【処理2】

Case 値n
変数=値nの場合の処理    【処理n】
Case Else
変数=値1~変数=値nのどれにも当てはまらなかった場合の処理  【処理X】
End Select

※書式1の説明

変数の値がそれぞれ、
[値1]の場合は【処理1】、
[値2]の場合は【処理2】、
[値n]の場合は【処理n】、
[値1]~[値n]に当てはまらなかった場合は【処理X】
が実行されます。
また、Caseの後の値は 値1,値2 のように[,]で区切って複数指定できます。

※書式1の例

Sub test()

Dim intNo As Integer

intNo = Cells(1,1).Value

Select Case intNo
Case 1
MsgBox “一”
Case 2
MsgBox “二”
Case 3
MsgBox “三”
Case 4
MsgBox “四”
Case 5
MsgBox “五”
Case Else
MsgBox “???”
End Select

End Sub

セル(1行,1列目)の値を変数に代入し、1~5の場合はそれぞれの漢数字をメッセージボックスで表示します。(※6以上はまだ教わっていないようです)

———————————-

〔書式2〕

Select Case 変数
Case Is 比較条件1
変数が比較条件1を満たした場合の処理
Case Is 比較条件2
変数が比較条件2を満たした場合の処理

Case Is 比較条件n
変数が比較条件nを満たした場合の処理
Case Else
変数が比較条件1~比較条件nを満たさなかった場合の処理
End Select

※書式2の説明

前回出てきた比較演算子を使って、それぞれの条件を指定します。
Case Is >= 90 と記述した場合は、「変数の値が90以上」の場合は次の行の処理が実行されます。

※書式2の例

Sub test()

Dim intTensu As Integer

intTensu = Cells(1,1).value

Select Case intTensu
Case Is >= 80
MsgBox “ランクAです。”
Case Is >= 60
MsgBox “ランクBです。”
Case Is >= 40
MsgBox “ランクCです。”
Case Else
MsgBox “ランクDです。”
End Select

End Sub

前回のIfステートメントの例題をSelect Caseにしてみました。

———————————-

〔書式3〕

Select Case 変数
Case 値1 To 値2        (範囲1)
変数が範囲1の場合の処理
Case 値3 To 値4        (範囲2)
変数が範囲2の場合の処理
Case Else
変数が範囲1と範囲2に当てはまらなかった場合の処理
End Select

※書式3の説明

変数の値が[値1]から[値2]の範囲の場合と、[値3]から[値4]の範囲の場合、それ以外の場合の3つに処理が分岐されます。

※書式3の例

Sub test()

Dim intTensu As Integer

intTensu = Cells(1,1).value

Select Case intTensu
Case 80 To 100
MsgBox “ランクAです。”
Case 60 To 79
MsgBox “ランクBです。”
Case 40 To 59
MsgBox “ランクCです。”
Case  0 To 39
MsgBox “ランクDです。”
Case Else
MsgBox “点数は0~100の範囲で入力してください”
End Select

End Sub

書式2の条件を範囲で表しています。

今回は「Select Case~」による条件分岐でした。

次回は2つの条件分岐「If Then」と「Select Case」の使い分けについてお話します。

Copyright c syshan.jp all rights reserved.