- ベストアンサー
VBコンボボックスのイベントについて
- VBコンボボックスで指定の値をマウス操作やキーボード操作で変更したときに特定の処理を実行する方法について教えてください。
- keystateを使って情報をクリアさせることができないため、他の方法で実現する方法があれば教えてください。
- コンボボックスの値の変更を検知するためにKeyUpイベントとClickイベントを組み合わせて使用し、特定の処理を実行することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
APIを使わなくても Private KeyFlag As Boolean Private Sub Combo1_Click() If KeyFlag = True Then Exit Sub ComboEXE End Sub Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer) KeyFlag = True End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 ComboEXE End If End Sub Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer) KeyFlag = False End Sub Private Sub ComboEXE() '************************* 'クリックまたはEnterの処理 '************************* End Sub
その他の回答 (1)
- uruz
- ベストアンサー率49% (417/840)
>KeyAscii = 0 KeyPressイベントのヘルプを参照してください。 コントロールでキーが押された時、KeyPressイベントが発生しますが、この時点ではまだ押されたキーはコントロールに反映されていません KeyPressイベント内でKeyAsciiの値を変更することで[A]が押されたら[B]が入力されるようにもできます また、KeyAscii = 0 にすることで押されたキーを無効(押されていない)にすることができます。 たとえば、[0]~[9]以外であればKeyAscii = 0とすれば数値しか入力できないコントロールにすることができます。 今回の例では[Enter]が押された場合コントロールに[Enter]を渡す必要がないのでゼロを代入しています。
お礼
理解できました。ありがとうございます。 助かりました!
お礼
回答少しおそくなってしまいました。すみません。 ありがとうございます! これで実現できました! ちなみに KeyAscii = 0 は、どのようなパターンで必要なものでしょうか? ここだけわかりませんでした。