本ページには広告が含まれています。

VBA Choose 関数 引数のリストから選択した値を返す

VBA Choose 関数 引数のリストから選択した値を返す

Excel VBAの「Choose 関数」について解説します。

スポンサーリンク

Choose 関数とは

Excel VBA の Choose 関数は、インデックスの値に基づいて選択肢のリストから対応する値を返します。

条件分岐や配列の代替として使える場面も多く、知っておくとコードの可読性と効率が向上します。

Choose 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

Choose 関数(Visual Basic for Applications リファレンス)

スポンサーリンク

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

Choose(index, choice-1[, choice-2, …[, choice-n]])

引数

指定項目説明
index【必須】1から選択肢(choice)数までの範囲で数値を指定します
choice【必須】選択肢となる値のリストをカンマ区切りで設定します

index が 0 以下または選択肢の数を超える場合は Null が返されます。
index が整数ではない場合、最も近い整数に丸めてから評価されます。
choice に設定したリスト内にエラーがあった場合、処理が中断します。
  (choice に設定したリストは全てが評価されるためです。)

戻り値

index に指定した数値(インデックス番号)に対応する choice-数値 に設定した値が返ります。

index が「1」なら choice-1、「2」なら choice-2 の値が返されます。

解説(使用例)

Choose 関数の使い方について、サンプルコードを使って解説します。

Choose 関数使用サンプル

Choose 関数の簡単な使用例を紹介します。

基本的な使用例

次の例は、変数Subjectの値に対応するリスト項目の値を返します。

'■Choose関数サンプル1(基本的な使用例)
Sub Choose_Sample01()
  Dim Subject As Integer
  Subject = 2
  MsgBox Choose(Subject, "国語", "算数", "理科", "社会")
End Sub

Subject に 2 を指定した場合、Choiceリストのすべてを評価したうえで 2 番目の値「算数」を返しました。

Choose関数サンプル1を実行して表示されたMsgBox画像

注意する点としては「Choiceリストはすべてが評価される」ということです。Choiceリストには、文字列や数値以外にも関数や式など、なんでも設定できます。リストの一部にエラーがあるとそこで中断されます。

日付から曜日名を取得する例

WeekDay関数を利用して、その戻り値(1~6)に対応する曜日文字を表示させる例です。

'■Choose関数サンプル2(曜日名を取得する例)
Sub Choose_Sample02()
  Dim inputDate As Variant
  Dim dayIndex As Integer
  Dim strWeekd As String
  ' InputBoxで日付を入力
  inputDate = InputBox("曜日を調べたい日付を入力して!", "日付入力")
  ' WeekDay関数で曜日の整数値を取得
  dayIndex = Weekday(inputDate)
  ' Choose関数で曜日文字を返す
  strWeekd = Choose(dayIndex, "日", "月", "火", "水", "木", "金", "土")
  ' MsgBoxを表示する
  MsgBox inputDate & "は" & strWeekd & "曜日です!"
End Sub

はじめに InputBox で曜日を調べたい日付を入力します。

Choose関数サンプル2実行時に表示される日付入力用InputBox画像

入力された日付を WeekDay 関数で曜日の整数値を変数 dayIndex に返します。

Choose 関数で DayIndex の値に対応する曜日文字をリストの中から返し、変数 strDeekd に代入します。

MsgBox に表示する文字列を整形して次のように表示します。

Choose関数サンプル1指定日付の曜日が表示されたMsgBox画像

おわりに

VBA の Choose 関数は、選択肢となる値のリストからインデックス(1から始まる整数)に応じた値を選択して返す便利な関数です。条件分岐や配列の代替として使うことができます。
以下、特徴や注意点などを列記しておきます。

  • Choose関数はインデックスに応じた値の選択に最適です
  • 配列の代替として使うことができます。
    • 例2のように簡易的なマッピング(対応する別の値を紐づける)に最適です
  • 選択リストが10個前後なら視認性も良好です
  • indexの範囲外や選択リスト内のエラーなどには注意が必要です
  • 他の条件分岐関数(Switch, IIf)と使い分けるとより強力
    • 複数条件に応じて違う処理や値を返したいならSwitch関数と使い分けるなど

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!