次回より『ヒデログ』とご検索ください

【VBA初心者】3分で分かるSwitch文の使い方

VBA switch

ひでひろ
ども、ひでひろ(@hidehirotw)です。今回は、VBAのSwtich文の使い方を紹介します。

Switchの使い方

Switchは1つの引数に対して1つの評価対象を持ちます。

Switch文

  • Switch(expr_1, tar_1[, expr_2, tar_2… [, expr_n, tar_n]])
  • expr_i:評価式(iは任意の数字)
  • tar_i:戻り値(評価対象がないときはNullを返す)

評価式「expr_i」は複数設定できます(iは任意の数値です)。

評価式は左から順番(ここでは最初は「expr_1」)に評価され、Trueになったときに戻り値の「tar_i」を返します。

すべての評価式がFalseの時はNullを戻り値とします。すべての式が評価され、複数Trueになる場合は、最初にTrueになった評価式の戻り値を返す。

また、エラーになる評価式が1つでもあるとエラーになります。

ひでひろ
評価式「expr_i」 が真(True)の時に、「tar_i」を戻り値として返します

【実例】Switch文の使い方、サンプルコード

説明が難しすぎて分からないよ~。実際にどうやって使うの?
ひでひろ
じゃあ、サンプルコードを見て行こう
Sub marco1()

  'Varinat型にしてないと戻り値がNullの時エラーになる
    Dim val as Variant
    Dim name as String

    name = "佐藤"
  'val:埼玉
    val = Switch(name = "田中", "東京",name = "佐藤", "埼玉",name = "鈴木", "神奈川")

    name = "高橋"
  'val:Null
    val = Switch(name = "田中", "東京",name = "佐藤", "埼玉",name = "鈴木", "神奈川")

  Dim x as Integer,y as Integer
    x = 1: y = 1

  'andやorの付いた評価式にも対応
 'val:正解
    val = Switch(x=2, "不正解", x = 1 and y = 1, "正解")

 'val:正解
    val = Switch(x=2, "不正解", x = 1 or y = 2, "正解")

End Sub

複数Trueがあるサンプルコード

Sub marco2()

    Dim val as Variant 
    Dim name as String
    name = "田中"

  'val:東京
  val = Switch(name = "田中", "東京", name = "田中", "埼玉", name = "鈴木", "神奈川")

End Sub

エラーになるサンプルコード

Sub marco3()

    Dim val as Variant
    Dim name as String

    name = "田中"

  'エラーになる(name = 1 の評価式がString型とinteger(long)型との評価式になっているので)
    val = Switch(name = "田中","東京",name = 1 ,"埼玉",name = "鈴木","神奈川")

End Sub

まとめ

Switch文は評価式に基づき、真ならばそれに対応する値を戻り値としました。

ひでひろ
今回は、VBAのSwitch文の使い方を紹介しました。もし、分からないことがあったらコメントしてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です