教えて!ExcelVBA!

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

【ExcelVBA フォーム&コントロール】ドロップダウンリストに存在する値だけを入力できる様にする方法を教えて!

構文

構文は以下の通りです。

コンボボックス名.MatchFound = True / False

解説

MatchFoundプロパティは、指定された文字列がコンボボックスのリスト内に存在するかどうかを判定します。これを利用して、ユーザーが入力した値がリスト内に存在するかどうかを確認し、処理を制御します。

使い方

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

Private Sub ComboBox1_Change()
    If ComboBox1.MatchFound = False Then
        MsgBox "入力された値はリストに存在しません。", vbExclamation
        ComboBox1.Value = "" ' コンボボックスを空にするか、前回の有効な値に戻す
    End If
End Sub

Changeイベント内で、ユーザーが入力した値がリスト内に存在しない場合にエラーメッセージを表示するようなコードを追加します。

プログラミング例

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

Private Sub ComboBox1_Change()
    If ComboBox1.MatchFound = False Then
        MsgBox "入力された値はリストに存在しません。", vbExclamation
        ComboBox1.Value = "" ' コンボボックスを空にするか、前回の有効な値に戻す
    Else
        ' 入力された果物に関する詳細な情報を表示する処理
        Select Case ComboBox1.Value
            Case "りんご"
                MsgBox "りんごは赤くておいしい果物です。"
            Case "ばなな"
                MsgBox "ばななは黄色くて栄養たっぷりです。"
            Case "ぶどう"
                MsgBox "ぶどうは小粒でジューシーな果物です。"
        End Select
    End If
End Sub

ユーザーが入力した値がリスト内に存在する場合に特定の処理を行いたい場合は、それに対応するコードを追加します。例えば、果物の場合には詳細な情報を表示するなどの処理が考えられます。このように、ユーザーが入力した値がリスト内に存在する場合としない場合で、異なる処理を行うことができます。

まとめ

MatchFoundプロパティを利用して、入力された値の存在判定を行い、適切な処理を行うことで、ユーザーが選択可能な値の範囲内で入力を制限できます。是非活用してください。