教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】コンボボックスに値を直接入力できない様に設定する方法を教えて!

構文

構文は以下の通りです。

コンボボックス名.Style = 定数

解説

コンボボックスは、「ドロップダウンリストから値を選択する設定」と「コンボボックスに値を直接入力できる設定」が可能です。いずれのスタイルにするかは、Styleプロパティに定数を指定します。定数には、以下いずれかを設定する事ができます。

定数 内容
fmStyleDropDown 0 ドロップダウンリストから値を選択する方法と直接入力する方法の両方を可能にします。(既定値)
fmStyleDropDownList 2 ドロップダウンリストから値を選択する方法のみを可能にします。

使い方

具体的な使い方を紹介します。

1.通常のドロップダウンスタイル

このスタイルを使うと、ユーザーはコンボボックスをクリックすると、選択可能なアイテムのリストが表示されます。ユーザーは自由にテキストを入力することもできます。

Private Sub UserForm_Initialize()
    ' フォームが初期化されたときに実行されるコード
    ' 通常のドロップダウンスタイルに設定
    ComboBox1.Style = fmStyleDropDown
    ComboBox1.AddItem "りんご"
    ComboBox1.AddItem "ばなな"
    ComboBox1.AddItem "いちご"
End Sub

上記の例では、フォームが初期化される際にコンボボックスに3つのアイテムを追加しています。

2.ドロップダウンリストスタイル

このスタイルでは、ユーザーはテキストボックスに手動で入力することはできません。代わりに、リストからの選択のみが可能です。

Private Sub UserForm_Initialize()
    ' フォームが初期化されたときに実行されるコード
    ' ドロップダウンリストスタイルに設定
    ComboBox1.Style = fmStyleDropDownList
    ComboBox1.AddItem "りんご"
    ComboBox1.AddItem "ばなな"
    ComboBox1.AddItem "いちご"
End Sub

上記の例では、同じく3つのアイテムを追加していますが、こちらではユーザーが手動でテキストを入力することはできません。

プログラミング例

以下に、プログラミング例を紹介します。

Private Sub UserForm_Initialize()
    ' フォームが初期化されたときに実行されるコード
    ' 通常のドロップダウンスタイルに設定
    ComboBox1.Style = fmStyleDropDown
    ComboBox1.AddItem "りんご"
    ComboBox1.AddItem "ばなな"
    ComboBox1.AddItem "いちご"
End Sub

Private Sub ComboBox1_Change()
    ' コンボボックスの選択が変更されたときに実行されるコード
    Select Case ComboBox1.Value
        Case "りんご"
            MsgBox "りんごが選択されました。"
        Case "ばなな"
            MsgBox "ばななが選択されました。"
        Case "いちご"
            MsgBox "いちごが選択されました。"
        Case Else
            MsgBox "未知のアイテムが選択されました。"
    End Select
End Sub

この例では、コンボボックスにアイテムを追加し、選択されたアイテムに基づいて処理を行うプログラム内容です。コンボボックスには果物のアイテムを追加し、ユーザーが選択したアイテムに基づいてメッセージボックスを表示する処理が行われています。

まとめ

コンボボックスのStyleを使うことで、ユーザビリティを向上させることができます。通常のドロップダウンスタイルとドロップダウンリストスタイルの使い分けや、イベントハンドラの活用など、様々な要素が組み合わさることで、より使いやすく洗練されたフォームを作成できます。是非活用してください。