過去ログ

                                Page     800
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼TextBoxのKeyPressイベントが掴めません。  なじぇ? 03/2/26(水) 0:05
   ┗Re:TextBoxのKeyPressイベントが掴めませ...  つん 03/2/26(水) 14:12

 ───────────────────────────────────────
 ■題名 : TextBoxのKeyPressイベントが掴めません。
 ■名前 : なじぇ?
 ■日付 : 03/2/26(水) 0:05
 -------------------------------------------------------------------------
   はじめまして。いつも参考にさせてもらってます。
ユーザーフォーム中の TextBox の KeyPress イベント なんですが。

Private Sub TxtName_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 If KeyAscii <> 13 Then Exit Sub

 ・・・<処理の内容>・・・

End Sub

押下されたKeyが Enter-Key である場合のみ、ある何らかの処理を
行うようにしています。
が。
あるフォームBでは(2番目に表示されるフォーム)この記述でうまくいくのですが
別のフォームA(Bookを開いた時、Workbook_Openイベントで Showされる)だと、
Enter-Keyの押下時にこのイベントが発生してくれません。その他のKeyの押下なら
このイベントを通るのですが。
初め、フレームの中にTextBoxを配置していたので、そのせいかと思ってフレームから
出してみたのですが、結果は変わりませんでした。
フォームによってコントロールへのイベントの渡り方が違うのでしょうか?
自分ではフォームAをBとで特別に違う作り方をしたつもりはないのですが。
原因をご存知の方、いらっしゃいましたらどうか宜しくご教示をお願いします。
 ───────────────────────────────────────  ■題名 : Re:TextBoxのKeyPressイベントが掴めませ...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/2/26(水) 14:12  -------------------------------------------------------------------------
   なじぇ? さん、こんにちは

回答じゃないので、申し訳ないですが・・・
ちょっち試してみましたが、
こちらでは、ファイルオープン時にロードされたフォームでも、
それ以外のフォームでも、エンターキーでイベントは発生しませんでした。
何でやろ・・・?こっちがおかしいのかな?
なじぇ?さんとこでは、少なくともファイルオープン時のフォーム以外はOKなんですよね・・・

それで、ヘルプを見てみたのですが、

'==============================================
KeyPress イベントは、次のいずれかのキーを押すと発生します。
 ・印刷可能キーボード文字
 ・標準のアルファベット キーと Ctrl キーの組み合わせ
 ・特殊文字キーと Ctrl キーの組み合わせ
 ・Enter キー
 ・BackSpace キー

KeyPress イベントは、次のいずれかの条件では発生しません。
 ・Tab キーを押したとき
 ・Enter キーを押したとき
 ・方向キーを押したとき
 ・コントロール間でフォーカスの移動を引き起こすキーを押したとき
'==============================================

これって結局、「Enter キーを押したとき」は、OKなのでしょうか?
NGなのでしょうか・・・前後の文章を読んでもいまいちわからなかったんやけど・・・

ところで、代替案ですけど、KeyDownイベント使わはったらいかがでしょう?

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

  If KeyCode = vbKeyReturn Then
    MsgBox "エンターキー"
  Else
    MsgBox "エンターキー以外"
  End If

End Sub

私は、こっちをよく使いますが・・・
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 800