Lesson3 条件分岐 その2 【Select Case文を使う】

スポンサーリンク

前回は、If文を使って、条件分岐に触れました。

If文は、選択肢が「はい」、「いいえ」の二択のときしか使えません。

今回は、もっと選択肢が多いときに使用する Select Case文を使用します。

またまたメッセージボックスに登場願いましょう。

MsgBox “Select Case のテストです。”, vbYesNoCancel

これを実行すると、

「はい」、「いいえ」、「キャンセル」の3つのボタンが出現しました。


話が前後しますが、VBAには「定数」という考え方があります。

Msgbox関数の場合、「はい」を選ぶと6、「いいえ」を選ぶと7、「キャンセル」を選ぶと2が返ってきます。

「返ってくる」という表現ですが、パソコンを操作している人が選んだボタンを、VBAは数字で捉えていると考えてください。「戻り値」、「返り値」と呼ぶこともあります。

でも、数多ある関数から返ってくる値を覚えておくのは困難です。そこで、VBAでは返ってくる値に、人間が理解しやすい名前をつけています。これを「定数」といいます。

先の例で言うと、「はい」を選ぶと6→ VbYes、「いいえ」を選ぶと7→VbNo、「キャンセル」を選ぶと2→VbCancel が返ってきます。


では、Select Case文と組み合わせてみましょう。

「はい」を選んだときは、「「はい」を選びました。」、

「いいえ」を選んだときは「「いいえ」を選びました。」、

「キャンセル」をえらんだときは「「キャンセル」を選びました。」というメッセージボックスを表示させます。

使用される際は、そちらの環境で十分テストのうえ使用してください。

Sub selecttest()

Select Case MsgBox("Select Case のテストです。", vbYesNoCancel)
'「はい」「いいえ」「キャンセル」の分岐を表示します。

'「はい」が選択されたら vbYes
'「いいえ」が選択されたら vbNo
'「キャンセル」が選択されたら vbCancel の処理を実行します。

Case vbYes
    ↑
ここに「はい」を選択したときの処理を書きます。
    ↓
Case vbNo
    ↑
ここに「いいえ」を選択したときの処理を書きます。
    ↓
Case vbCancel
    ↑
ここに「キャンセル」を選択したときの処理を書きます。
    ↓
End Select
End Sub

実際にコードを書いてみましょう。以下は、Select Case の分岐部分であることが分かるように、字下げしています。

Sub selecttest()

    Select Case MsgBox("Select Case のテストです。", vbYesNoCancel)
    '「はい」「いいえ」「キャンセル」の分岐を表示します。
    
    '「はい」が選択されたら vbYes
    '「いいえ」が選択されたら vbNo
    '「キャンセル」が選択されたら vbCancel の処理を実行します。
    
    Case vbYes
    
        MsgBox "「はい」が選択されました。"
    
    Case vbNo
    
        MsgBox "「いいえ」が選択されました。"
    
    Case vbCancel
    
        MsgBox "「キャンセル」が選択されました。"
    
    End Select
End Sub

入力ができたら、再生ボタンを押して実行してください。思ったとおりの動きになったでしょうか?

もちろん返ってくる値を定数でなく、数値で分岐させることもできます。

ただ、あとあと読みにくくなるのでおすすめはしません。

Sub selecttest()

    Select Case MsgBox("Select Case のテストです。", vbYesNoCancel)
    '「はい」「いいえ」「キャンセル」の分岐を表示します。
    
    
    '「はい」が選択されたら 6
    '「いいえ」が選択されたら 7
    '「キャンセル」が選択されたら 2 の処理を実行します。
    
    Case 6
    
        MsgBox "「はい」が選択されました。"
    
    Case 7
    
        MsgBox "「いいえ」が選択されました。"
    
    Case 2
    
        MsgBox "「キャンセル」が選択されました。"
    
    End Select
End Sub

コメントをどうぞ!

タイトルとURLをコピーしました