コンボボックスでリスト内の値のみ選択可能にする(Styleプロパティ)|Excel VBA |
ComboBoxのStyleプロパティを使用して、コンボボックスの値の選択方法を指定します。
Styleプロパティに指定できる値は次のとおりです。
定数 | 値 | 説明 |
---|---|---|
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プロパティは設計時にプロパティウィンドウで設定しておくことも可能です。