#633 | テキストボックスの指定キー入力でアクションを起こすには? | フォーム、VBA | |
テキストボックスの「KeyDown/キークリック時」や「KeyPress/キー入力時」イベントは、キーボードのキーが何か1つ押されるたびに発生するイベントです。これを利用すると、連続して任意の文字を入力していく過程で、ある特定のキーが押されたときに何らかのアクションを起こすことができます。 たとえば、次のようなデザインのフォームがあったとします。 ここにある「販売単価」のテキストボックスで、「Home」キーもしくは「C(c)」キーが押されたとき、別途用意されたオリジナルの電卓のダイアログを表示させるようなインタフェースを設けたいとします。 そのようなとき、次のようなイベントプロシージャを書きます。 Private Sub 販売単価_KeyDown(KeyCode As Integer, Shift As Integer) '販売単価テキストボックスのキークリック時(特殊なキーの場合) If KeyCode = vbKeyHome Then '入力されたキーの本来の機能を無効にする KeyCode = 0 'Homeキーでダイアログを表示 DoCmd.OpenForm "fdlgCalculator", , , , , acDialog End If End Sub Private Sub 販売単価_KeyPress(KeyAscii As Integer) '販売単価テキストボックスのキー入力時(一般的な文字の場合) If KeyAscii = Asc("c") Or KeyAscii = Asc("C") Then '入力されたキーの本来の機能を無効にする KeyAscii = 0 'Homeキーでダイアログを表示 DoCmd.OpenForm "fdlgCalculator", , , , , acDialog End If End Sub ここで、「KeyDown」と「KeyPress」の2つのイベントは似ていますが、引数が異なります。
なお、今回の「Home」キーもしくは「C(c)」キーというケースでは、下記のようにすべてを「KeyDown」イベントプロシージャで処理することができます。今回は用例として2つに分けましたが、通常はこのようにまとめた方がよいかもしれません。 Private Sub 販売単価_KeyDown(KeyCode As Integer, Shift As Integer) '販売単価テキストボックスのキークリック時 If KeyCode = vbKeyHome Or KeyCode = Asc("c") Or KeyCode = Asc("C") Then '入力されたキーの本来の機能を無効にする KeyCode = 0 'Homeキーでダイアログを表示 DoCmd.OpenForm "fdlgCalculator", , , , , acDialog End If End Sub 実行例: 販売単価のテキストボックスの入力中に「C」キーを押す ※「KeyAscii = 0」というコードによって、入力されたキーの本来の機能を無効にしていますので、「C」という文字自体はテキストボックスには入力されません。 |
|||
|
Copyright © T'sWare All rights reserved |