この記事ではExcelのVBAマクロを使用して、InputBoxで選択式の入力方法を設定する方法について解説していきます。
ポイントとしては`Select Case`文と`InputBox`関数、そして`Range`オブジェクトの使用です。
マクロ初心者でもわかりやすいように、変数名をaaaaa変数aaaaaという名称にしています。適切な英語表記に変更してご活用ください。
それでは、詳しく見ていきましょう!
VBAマクロでinputboxで選択式にする(sankousheetのok列2行目から最終行までのセルをインプットボックスの選択肢にする)方法
それではまず、sankousheetのok列2行目から最終行までのセルをインプットボックスの選択肢にする方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SelectFromRange()
Dim aaaaaRangeaaaaa As Range
Dim aaaaaInputaaaaa As String
Dim aaaaaCellaaaaa As Range
Set aaaaaRangeaaaaa = ThisWorkbook.Sheets("sankousheet").Range("ok2:ok" & ThisWorkbook.Sheets("sankousheet").Cells(Rows.Count, "ok").End(xlUp).Row)
aaaaaInputaaaaa = InputBox("選択してください", "選択", aaaaaRangeaaaaa.Cells(1).Value)
For Each aaaaaCellaaaaa In aaaaaRangeaaaaa
If aaaaaCellaaaaa.Value = aaaaaInputaaaaa Then
MsgBox "あなたが選んだのは: " & aaaaaInputaaaaa
Exit Sub
End If
Next aaaaaCellaaaaa
MsgBox "選択が無効です。"
End Sub
コードのAlt+F8を押し、マクロ選択画面でSelectFromRange関数を実行します。
このコードは、別シートの指定列のセル範囲をインプットボックスの選択肢にしているコードとなります。
なお、選択した値が範囲内に存在する場合はその値を、そうでなければ無効な選択としてエラー表示するようにしています。
VBAマクロでinputboxで選択式にする(予めある配列・リストに対して)方法
続いては、予めある配列・リストに対してinputboxで選択式にする方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SelectFromArray()
Dim aaaaaItemsaaaaa As Variant
Dim aaaaaInputaaaaa As String
aaaaaItemsaaaaa = Array("選択肢1", "選択肢2", "選択肢3")
aaaaaInputaaaaa = InputBox("以下の選択肢から選んでください: " & Join(aaaaaItemsaaaaa, ", "), "選択")
Select Case aaaaaInputaaaaa
Case "選択肢1", "選択肢2", "選択肢3"
MsgBox "あなたが選んだのは: " & aaaaaInputaaaaa
Case Else
MsgBox "選択が無効です。"
End Select
End Sub
コードのAlt+F8を押し、マクロ選択画面でSelectFromArray関数を実行します。
このコードでは、ユーザーが事前に定義たた配列を選択肢にしていますね。
選択された項目が配列内に存在する場合は、その選択を確認するメッセージを表示し、存在しない場合は無効な選択であると警告します。
まとめ