HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > コンボボックスでリスト内の値のみ選択可能にする(Styleプロパティ)

コンボボックスでリスト内の値のみ選択可能にする(Styleプロパティ)|Excel VBA

ユーザーフォーム関連のテクニック

コンボボックスでリスト内の値のみ選択可能にする(Styleプロパティ)

(Excel 2000/2002/2003/2007/2010/2013/2016)

ComboBoxのStyleプロパティを使用して、コンボボックスの値の選択方法を指定します。
Styleプロパティに指定できる値は次のとおりです。

値の選択方法を表す定数一覧(fmStyle列挙体のメンバー)
定数 説明
fmStyleDropDownCombo 0 コンボボックスの編集領域への入力、
リストからの選択ともに可能
fmStyleDropDownList 2 コンボボックスの編集領域への入力は不可。
リストの中からの選択のみ可能

コンボボックスの編集領域への入力を許可し、リスト以外の値も入力可能にするには、ComboBox1のように設定します。
また、リストからのみ選択可能にするには、ComboBox2のように設定します。
ユーザーフォームに2つのコンボボックスとコマンドボタンを用意して、その動きを確認してください。

Private Sub UserForm_Initialize()
    Dim cmbData As Variant
    cmbData = Array("Excel", "Access", "Word", "PowerPoint")

    '編集領域への入力可
    With ComboBox1
        .List() = cmbData
        .MatchRequired = False
        .Style = fmStyleDropDownCombo
    End With
    
    'リストからのみ選択可
    With ComboBox2
        .List() = cmbData
        .Style = fmStyleDropDownList
    End With
End Sub

Private Sub CommandButton1_Click()
    MsgBox "ComboBox1 : " & ComboBox1.Value & vbCrLf & _
           "ComboBox2 : " & ComboBox2.Value
End Sub

●補足●

ComboBoxのMatchRequired プロパティは、リストにある値と同じ値のみ許可するかどうかを設定するプロパティです。
Falseを設定すると、リストにない値も入力できます。
Trueを設定すると、リストにない値も入力はできますが、リスト内の値と一致する値が入力されるまで、「プロパティの値が無効です。」というエラーメッセージが表示され、フォーカスを移動できなくなります。
リストにある値のみを取得したい場合は、ComboBox2のようにStyleプロパティにfmStyleDropDownListを指定する方法が良いでしょう。

なお、Styleプロパティは設計時にプロパティウィンドウで設定しておくことも可能です。