コンボボックスの「入力チェック」プロパティを「はい」にすることにより、既定のリストに含まれる値以外は受け入れないことができます。
しかしキーボードによる入力自体はできますので、うっかり入力してしまうとエラーになり、特に操作に慣れていない初心者はハマってしまうこともあります。
そこで、コンボボックスにキーボードからの入力をさせない方法についてです。
これはプロパティの設定だけではうまくいきません。
コンボボックスの「名前」プロパティを「住所都道府県」としたうえで、フォームモジュールに次のように入力します。
Option Compare Database Private Sub 住所都道府県_KeyDown(KeyCode As Integer, Shift As Integer) 'Tab,Enter,Esc以外を無効にする If KeyCode <> vbKeyTab And KeyCode <> vbKeyReturn And KeyCode <> vbKeyEscape Then KeyCode = 0 End If End Sub
つまり、キーボードの入力があったときにその内容を無にする(「KeyCode」の値を0にする)ことで逐一無効にする、というわけです。
なお、実用性を考慮しTabキーとEnterキー(次のコントロールに進む)、Escキー(一度選択した内容をキャンセルする)については有効とするようにしています。一切無効にする場合はIf~の行ととEnd Ifの行は不要です。
これでキーボードによる文字入力を阻止できますので、リストに含まれない値が入力されることを防げます。
ただし、このようにカーソルが入ってしまうことは防げません。そこまで阻止したい場合はさらなる工夫が必要になりますが、もはや実用性には影響しないレベルですので詳しくは改めて;-o-)