• ベストアンサー

タブキー押下時のイベントをひろいたい。

itohhの回答

  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。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

terako
質問者

お礼

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

関連するQ&A

  • エクセルBVAのフォーム式のKeyCode~の意味がわかりません

    エクセルBVAです Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyDown Then KeyCode = 0 End If End Sub ヘルプをみると キーを押したとき、およびキーを離したときに続いて発生します。KeyDown イベントはキーを押すと発生し、KeyUp イベントはキーを離すと発生します。 キーってenterのことですかね? なら、 If KeyCode = vbKeyDown Then KeyCode = 0 End If で、KeyCodeを0ににするってどういうことでしょうか?

  • F2+Ctrl押下時のイベント記述方法

    VB6を使用しています。 F2+Ctrlを同時に押下した場合の処理の記述がうまくいきません。 Form_KeyDownイベントで下記のように記述しようと考えたのですが、KeyCodeに17が入ってしまいうまくいきません。 アドバイスをお願いします。 ----------------------- select case KeyCode  case vbKeyF2   If Shift = 2 Then   'Ctrl+F2押下時   ***処理   End If ※他のファンクションボタンの処理もあるのでcase文にしています。

  • VB6.0 KeyDownイベントの対応

    VB6.0を使ってプログラム中ですが、下記の  Command10_KeyDown で、複合キー「 Ctrl + ↓」 だとイベント KeyDown を受信できるのですが、単純な キー「↓」だと、イベント KeyDown を受信でず、他のボタンにフォーカスが移ってしまいます。 Comman10_GotFocus に何か対応策を入れて、単純な キー「↓」のイベント KeyDown を受信する方法はないでしょうか? Private Sub Command10_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 40 Then execsub001() End If End Sub Private Sub Commnad10_Click() execsub001() End Sub Private Sub Comman10_GotFocus() 上記問題への対応策を此処に記述したい End If Private Sub execsub110() 内容は省略 End Sub

  • VBA エンターキーでイベントに入りたい。

    テキストボックスにデータ入力後エンターキーの押下でイベントに入りたいのですが、下記のコーディングで[通過]メッセージが表示されません。英数字は通過しますが、エンターキーは動作停止します。 これと全く同じコーディングでVB6は正しく動きます。(ただし、Pvate Sub text1_KeyPress(KeyAscii As Integer)に変更してます。) <コーディング> Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Msgbox "通過" If KeyAscii = vbKeyReturn Then KeyAscii = 0 End If End Sub これが出来ると、そのつどキーボードから手を離さずに済むので作業効率がグンとあがります。どうかよろしくご教示ください。Excel2003SP3

  • KeyDownイベントが機能しない

    エクセル2003を使用しています。 フォームを表示中に、エスケープキーを押したらフォームを閉じたいのですが KeyDownイベントが反応しません。 http://homepage1.nifty.com/tsware/tips/tips_251.htm を見てやってみたのですが 新ブックに新規フォームを挿入し、 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If MsgBox "" End Sub と記載し、フォームを実行しエスケープキーを押してみました。 しかし何も起こりません。 実験用のMsgBoxも表示されません。 「エスケープキーを押したらフォームを閉じる」以前に、 KeyDownイベントが反応しないのですが 何が原因なのでしょうか? 新ブックを作ってテストしているので 余計な動作に邪魔されていないと思います。 ご指摘よろしくお願いします。

  • TextとValueの違い?

    Access2010です。 フォームに有る数値入力のためのテキストボックスのKeyDownイベントに、入力後の値がゼロかNullか空白なら再入力させるようにコードを記述しましたがこれでは「型が一致しません」のエラーになります。 -----KeyDownイベントの内容 ここから----- Select Case Keycode Case 13 If IsNull(Me.数量.Text) Or Me.数量.Text = "" Or Me.数量.Text = 0 Then MsgBox ("数量が不正です"), vbCritical Keycode = 0 End If End Select -----KeyDownイベントの内容 ここまで----- でも、Exitイベントに同じような内容を記述した場合は希望通りの動きをします。 ※上記コードからSelectとKeycode=0を外し、TextをValueに変更。 私が何かを理解できていないのだと思いますが、何が違うのでしょう?

  • キー入力を制限しつつ、Ctrl+CやCtrl+Vを活かすには?

    数字とバックスペース以外入力できないテキストボックスTextBoxAを作りました。 Private Sub TextBoxA_KeyPress(KeyAscii As Integer) If KeyAscii <> vbKeyBack Then If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0 End If End If End Sub と記述しましたが、Ctrl+CやCtrl+Vが効きません。 右クリックでコピー、ペーストはできるのですが、コントロールキー によるコピペを可能にするにはどうしたらいいでしょうか? どなたかよろしくお願いします。

  • keypressイベントにて。

    keypressイベントで押されたキーがenterキーで あるかどうか判断するにはどうすればよいですか? if KeyAscii=vbenter ではだめでした。

  • Ctrl+vのイベントを解除

    VB2010で、データグリッドビューのグリッドにペーストさせたくありません。 Ctrl+vのイベントを解除させる方法はないでしょうか? ご存知の方おしえてください。よろしくお願いします。 Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown If e.Control And e.KeyCode = Keys.V Then      'ココにイベント解除を入れたいです End If End Sub

  • アクセスVBAについて教えてください。

    アクセスVBAで KeyDown イベントに下記のプロシージャを書きました。 If KeyCode = 49 And Shift = 2 Then 都道府県 = “東京都” End If KeyCode = 49はキーボードの 「1」ということがヘルプのkeycodeの定数表より、 Vbkey1をイミディエトウィンドで調べることによりわかりました。 ?vbkey1 49 Shift = 2 はキーボードのの 「ctrl」のことみたいですが、「ALT」「shift」を指定したい場合の引数は何を入れればよいでしょうか。また、ヘルプで参照になるページがあれば教えてください。 それと vbkey の意味を教えてください。