プロが教えるわが家の防犯対策術!

テキストボックスにフォーカスがあり、TABキーが押された時のイベントをひろいたいのですが、KeyPressもKeyDownもイベントが発生しません。

(If KeyCode = vbKeyTab Then
 MsgBox "タブキー"
End If 

If KeyAscii = vbKeyTab Then ~
のようなコードを記述してもメッセージが表示されない)

ヘルプにはKeyDownでは発生しないという記述がありますが、KeyPressではイベントがひろえるようなことが書いてあるのにひろえないので困っています。

なにかよい方法はありませんでしょうか。
わかりにくい説明で申し訳ありませんが困ってます。
宜しくお願いします。

A 回答 (4件)

確かにKeyPressでTABキーを拾えませんね(VB4)


対処方法は参考URLにあります

参考URL:http://www.kit.co.jp/vbit/QAndA01.htm
    • good
    • 0
この回答へのお礼

為になる参考URL教えていただきありがとうございました。無事解決しました。

お礼日時:2001/09/10 02:23

テキストボックスのほかに、コントロールを貼り付けていませんか?


他のコントロールにタブ移動していてイベントがこなくなっているのでは?
フォーカスを当てられるほかのコントロールのTabStopをFalseにすればいいのでは?
違ってたらすんません。
じゃ、そゆことで。
    • good
    • 2
この回答へのお礼

貼り付けてました・・・。
見た目は全部ラベルだったのでおかしいなとよくよく見たらテキストボックスの不活性継承の為のピクチャボックスがTabstop=Trueになってました。
おかげさまで無事TAB拾えました。どうもありがとうございました。

お礼日時:2001/09/10 02:22

KeyPressイベントなら、次のどれでも出来るはずです。

(確認済)

例1)
Dim str As String

str = Chr(KeyAscii)
If str = vbTab Then
MsgBox "Tab key!"
End If

例2)
If KeyAscii = 9 Then
MsgBox "Tab key!"
End If

例3)
If KeyAscii = vbKeyTab Then
MsgBox "Tab key!"
End If
    • good
    • 0
この回答へのお礼

動作確認までして頂いて、丁寧なご回答どうもありがとうございました。
無事解決しました。ありがとうございます。

お礼日時:2001/09/10 02:27

こんにちは。

itohhといいます。

KeyPressとKeyDownイベントの引数ですが、意味合いが違います。

KeyPressイベントのKeyAsciiは、Asciiコードが設定されてきます。
KeyDownイベントのKeyCodeは、VBで決めているキーコード定数が設定されてきます。

KeyPressイベントでTabを拾いたい場合は、以下のように行います。
Private Sub Text1_KeyPress(KeyAscii As Integer)
  Dim Rtn As Integer

  If KeyAscii = Asc(vbTab) Then
    Rtn = MsgBox("Hit!!", vbOKOnly)
  End If

End Sub
    • good
    • 0
この回答へのお礼

質問時にコピーしてコードを書いてしまったのでKeyPressとKeyDownのコードを同じにしてしまいました・・・。間違いのご指摘ありがとうございます。
無事解決しました。どうもありがとうございました。

お礼日時:2001/09/10 02:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A