[ VBA ] Select Case True/False を使って条件分岐する(早合点の親父)

Pocket

人様のコードを読むのは良いことと思いますが、あくまでもキレイに記述してあるソースコード出ないと意味がありません。また、読む人の習熟度に応じても参考になるコード、ならないコードもあるとは思いますので難しい話です。

この度、人様のソースコードを読んで、私が早合点して失敗した事例を自身の備忘録として、ここに残しておきます。

スポンサーリンク

Select Case True って何だ?きっとこういうことだろう

今となってはなぜそのように考えたのかは自分でもわかりません。冷静に考えればそのような判断はしないと思います。しかし、その時は確信がありました。「こう動くに違いない」と。

では、問題です。エクセルシートが次の状態でボタンをクリックすると、以下のコードはどのように動くでしょうか?

Private Sub CommandButton1_Click()
    Select Case True
        Case Range("A1").Text = "A1"
            Debug.Print "A1"
        
        Case Range("A2").Text = "A2"
            Debug.Print "A2"
    
        Case Range("A3").Text = "A3"
            Debug.Print "A3"
    End Select
End Sub

正解は、イミディエイトウィンドウに、”A1″とだけ出力されます。しかし、私は、”A1″と”A2″が出力されて、A3だけが出力されないと考えていました。マルチケース(このような機能はない)みたいな動作となるとの思い込みです。

確認もせずに決めつけて、後に多くの修正が必要となりました。早合点はいけません。確認は大切です。反省しています。

しかも、軽くバカにされた気配も感じました。

Select Case False

この部分はおまけです。Select Case True で動作するなら、Select Case False も大丈夫なはずです。上記のサンプルコードを Select Case False に書き換えて実行すると、”A3″とだけ、出力されます。これは確認しました (-_-;) 。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *