更新日:、 作成日:
VBA Choose 関数:リストから選択した値を取得する
はじめに
Excel VBA マクロの Choose 関数からリストから選択した値を取得する方法を紹介します。
Choose 関数は、リストの中から選択した値を返します。
Choose(1, "A", "B", "C") なら "A" を返します。
インデックスに対応した値を取得したいときに使用します。
選択肢で条件分岐するには「Select 文」をご覧ください。
Choose 関数の引数と戻り値
Choose(インデックス, 値1)
Choose(インデックス, 値1, 値2…)
インデックスに対応する値を取得します。
引数「インデックス」 | 取得する引数「値」の番号を指定します。 最初の値は 1 です。 |
引数「値」 | 文字列、数値、日付など何でも指定できます。 |
戻り値の型 | 引数「値」の型 |
解説
引数「インデックス」が 1 なら 1 つ目の引数「値」を、2 なら 2 つ目の引数「値」を返します。
引数「インデックス」が引数「値」の数を超えるときや 1 未満のときは Null を返します。
引数「値」に関数を入力すると、取得しないときでも必ずその関数が実行されます。
配列を作成したり If 文や Select 文で条件分岐する必要がなくなります。
曜日名を取得
「Weekday 関数」に対応する曜日名を引数「値」から取得して、「WeekdayName 関数」では対応していない好きな形式で取得できます。
スポンサーリンク
使用例
Choose 関数の使用例を紹介します。
リストから選択した値を取得する
リストから選択した値を取得します。
Dim v As Variant
v = Choose(1, 1, "Tips", False)
Debug.Print(v) ' 1
v = Choose(2, 1, "Tips", False)
Debug.Print(v) ' Tips
v = Choose(3, 1, "Tips", False)
Debug.Print(v) ' False
v = Choose(4, 1, "Tips", False)
Debug.Print(v) ' Null
If 文や Select 文などで条件分岐しなくてよくなります。
Sub 実行()
Dim s As String
s = GetWeek(1)
Debug.Print(s) ' 日曜日
s = GetWeek(2)
Debug.Print(s) ' 月曜日
s = GetWeek(Weekday(Date))
Debug.Print(s) ' 日曜日、本日の曜日
End Sub
' index に対応した曜日を取得する
Function GetWeek(ByVal index As Integer) As String
GetWeek = Choose(index, "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日")
End Function
リストの中の関数はすべて実行されます。
Sub 実行()
Dim v As Variant
v = Choose(1, "Tips", 関数(2), 関数(3))
Debug.Print(v) ' 2 3 Tips
End Sub
Function 関数(ByVal i As Integer) As Integer
Debug.Print(i) ' Choose を呼び出すと必ずこの関数が実行される
End Function