VBA関数
Switch関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
公開日:2013年5月以前 最終更新日:2021-08-22

Switch関数


式の一覧を評価し、その一覧で、Trueが指定されている最初の式に関連付けられている値または式を返します。


Switch関数

Switch(expr-1, value-1, [ expr-2, value-2…, [ expr-n, value-n ]])

expr-n
評価するバリアント型(Variant)の式を指定します。
value-n
評価するバリアント型(Variant)の式を指定します。


Trueとなる式が存在しない場合は、Switch関数はNullを返します。

expr-nとvalue-nは必ずペアで指定します。
expr-nとvalue-nが正しくペアリングされていない場合は、実行時エラーが発生します。
式が値として評価できない(配列やオブジェクト等)場合は、実行時エラーが発生します。

Switch関数の注意点

Switchは、1つの式しか返しませんが、すべての式を評価します。
式は左から右に評価され、Trueに評価される最初の式に関連付けられた値が返されます。

Switch(i = 1, "a", i = 2, "b", i = 3, 1 / 0)

これは、常に1 / 0の値評価が行われるため、必ず0除算エラーが発生します。

Switchの使用例

rtn = Switch(i = 1 And j = 1, "a", i = 1, "b", j = 1, "c")

iの値 jの値 結果 
1 1 "a"
1 "b"
1 "c"
以外 Null

Switch関数はSelect Caseステートメントで書き換えが可能です。
前回のElseIf以外に、多肢条件分岐の別の書き方があります。それがSelectCaseになります。むしろElseIfより、このSelectCaseの方が、より多肢条件分岐に適していると言えます。SelectCaseは、多肢条件分岐に特化したステートメントになります。
上記VBAは、以下で書き直すことができます。

Select Case True
  Case i = 1 And j = 1
    rtn = "a"
  Case i = 1
    rtn = "b"
  Case j = 1
    rtn = "c"
  Case Else
    rtn = Null
End Select

どちらが良いかは、時々の判断によりますが、
Switch関数は全ての式を評価してしまう為、一般的には使いづらい関数となります。

他の関数等の引数にネストして直接記述する場合では、
ステートメントを記述できない為に、Switch関数を使うと便利な場合も出てくるかもしれません。

しかし、VBAの読みやすさを考慮し、事前にSelect Case等で変数に入れてから処理することを先に検討したほうが良いでしょう。


Office VBA リファレンス Switch関数


※VBA関数一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……



同じテーマ「VBA関数」の記事

Val関数
IIf関数
Choose関数
Switch関数
CBool関数
CByte関数
CCur関数
CDate関数
CDbl関数
CDec関数
CInt関数


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ