#655 コンボボックスをリストからの選択専用にするには? フォーム、VBA

『コンボボックス』コントロールの特徴のひとつが、ドロップダウンリストから任意の項目をマウス操作だけで選択できる、かつその項目を直接キーボードから入力することもできるという点です。

■ドロップダウンリストからの選択
      ■キー入力

ここでは敢えて、よくWebフォームにある「ドロップダウンメニュー」のように、『選択はできるが直接入力はできない』インタフェースに改造する方法を説明します。

それには、コンボボックス(ここでは名前を”cboデータ”とします)の「KeyPress/キー入力時」イベントプロシージャに次のようなコードを記述するだけです。

Private Sub cboデータ_KeyPress(KeyAscii As Integer)
'コンボボックスのキー入力時

  'キー入力を無効にする
  KeyAscii = 0

End Sub


ただし上記の方法は、コンボボックスの「IME 入力モード」プロパティが「使用不可」に設定されているなど、全角入力ができないようになっている場合はよいのですが、そうでない場合は全角での文字入力ができてしまいます。それを回避したい場合には、「KeyDown/キークリック時」イベントプロシージャを利用します。
その場合、一般的なデータ入力用の文字、たとえば数字・アルファベット・記号などだけでなく、Enterキーなどのキーも無視されてしまいます。If文で有効にするキーを指定することで、それ以外のキー入力のみを無効にするといった分岐処理が必要となります。

Private Sub cboデータ_KeyDown(KeyCode As Integer, Shift As Integer)
'コンボボックスのキークリック時

  If KeyCode <> vbKeyReturn And KeyCode <> vbKeyTab And KeyCode <> vbKeyEscape Then
    'キー入力を無効にする(Enter/Tab/Esc以外)
    KeyCode = 0
  End If

End Sub


実行例:
■無効化していない場合


■無効化した場合
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved