Excel

【Excel】VBAマクロでinputboxで選択式にする(セル読み込みや配列など)方法

当サイトでは記事内に広告を含みます。

この記事では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関数を実行します。

このコードでは、ユーザーが事前に定義たた配列を選択肢にしていますね。

選択された項目が配列内に存在する場合は、その選択を確認するメッセージを表示し、存在しない場合は無効な選択であると警告します。

 

まとめ