Access 2010で作成され、VBAコードを使用してデータベースへのログインフォームがあります。押せるようになりたい EntertxtboxPassword
で、btnLogin_Click
イベントを自動的に実行します。私はこれを試しました:
Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnLogin_Click
End If
End Sub
パスワードが正しくないという自作のエラーが表示されます。デバッグすると、実際にはtxtPassword
はnull
であることがわかりますが、テキストを入力しただけです。
ただし、マウスでログインボタンをクリックすると、完全に機能します。なぜvbaはそのように動作するのですか?どうすればそれを機能させることができますか?
[〜#〜] note [〜#〜]私も試しました:
btnLogin
に移動しますが(タブの順序がそのようなためかもしれません)、btnLogin_Click
イベントは実行されません。Accessのボタンには、Default
というプロパティがあります(その他プロパティページ)。 Yes
に設定すると、を押すと、フォームはボタンクリックイベントハンドラーを自動的に呼び出します。 Enter。追加のキーイベント処理は必要ありません。
Cancel
プロパティもあります。ボタンのボタンをYes
に設定すると、ユーザーが入力したときにフォームが自動的にアクティブにします。 Esc-キー。 キャンセルボタンには非常に実用的です。
keyCodeをアクティブにするには、Key Previewフォームのプロパティを[〜#〜] yes [〜#〜](下部にあります)に設定する必要があります。
If KeyCode = vbKeyReturn Then
Your_fuction_here
End If
カントはあなたの問題を正確に再現しますが、しばらく前に私は幾分似たような問題を抱えていて、以下を追加することでそれを解決しました:
Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnLogin_Click
KeyCode.Value = 0
End If
End Sub
アクションを実行するボタンで、プロパティ「その他」に移動し、「デフォルト」を「はい」に設定します。次に、テキストボックスでEnterをクリックすると、ボタンが機能します。
KeyPress KeyDownではなく機能し、_Click subを呼び出すと、他のイベントを発生させる可能性のあるトリガーの送信を回避できます。
Private Sub txtboxPassword_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Call btnLogin_Click
End If
End Sub