No.2ベストアンサー
- 回答日時:
こんにちは。
maruru01です。フォームのKeyPreviewプロパティに「True」を設定すると、フォーム上の各コントロールより先にフォームのキーボードイベント(KeyPress、KeyDown、KeyUp)が発生します。
(例外はあります。)
ヘルプにもありますが、フォーム上で何かキーを押した場合にフォーカスがどこにあるかに関わらず、ある処理をさせる場合に使用します。
例えば、フォーム上に、テキストボックスが10個、コマンドボタンが1個あるとします。
もし、[F1]キーが押されたら、すぐにコマンドボタンをクリックするという処理を付加する場合、テキストボックス1個1個のKeyDownイベントに記述するのは面倒ですし、メンテナンス性もよくありません。
そこで、フォームのKeyPreviewプロパティを「True」にして、フォームのKeyDownイベントに、
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF1 Then
KeyCode = 0
コマンドボタン1_Click
End If
End Sub
と書くだけで、フォーム上のどこにフォーカスがある状態で[F1]キーを押しても、上記処理(コマンドボタン1のクリックイベント発生)を行います。
また、
KeyCode = 0
とすることで、キー入力をリセット出来るので、この後に各コントロール(フォーカスがあるコントロール)のキーボードイベントを発生させなく出来ます。
これなら、今後フォーム上に別のコントロールを作成しても、特に新しくコードを記述する必要がありません。
また、1箇所に書かれているので、メンテナンスも楽です。
No.3
- 回答日時:
既に、参考付きで回答されていますが少しばかり。
簡単に言うと、
どのコントロールにフォーカスがあっても、フォームのKeyイベントを優先的にする。
と言うことになると思います。
Form.KeyPreview = True
Form(フォーム)のKey(キー入力)をPreview(見る)
No.1
- 回答日時:
Windowsの標準ではコントロール間の移動はTabキーで行いますが、テキストボックスに入力した時に次の項目への移動をEnterキー行いたい時は、フォームのKeyPressイベントにおいてSendKeysステートメントでTabキーをアクティブウィンドウに送ります。
この時フォームのキーイベントをテキストボックスのキーイベントより優先的に発生させるために、フォームのKeyPreviewプロパティをTrueにしておく必要があります。
(例
Private Sub Form_Load()
'フォームのキーイベントが優先されるようにする
Me.KeyPreview = True
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
'Enterキー押下時
If KeyAscii = vbKeyReturn Then
'TABキーを送信する
SendKeys "{TAB}"
'Beepが鳴らないようにここでキー入力を無効にする
KeyAscii = 0
End If
End Sub
とこんな感じです。ようはフォームがすべてのキー イベントを受け取る場合は true 。フォーム上で現在選択されているコントロールがキー イベントを受け取る場合は false となります。KeyPreviewをtrue にしてある場合keyイベントはフォームのkeyイベント→コントロールのkeyイベントとこのような順番で処理されます。
分かりやすい説明ありがとうございます。
えっと、フォームにテキストボックスが
1つ置いてあってそのテキストボックスの
KEYPRESSに何か処理が書いてあっても
フォームのKEYPRESSの方が優先されて
実行されるということなんですね。
ふむふむ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 黄色マーカVbと書いてあるのですがVaの間違いですかね? また左の項ですと、積分範囲∫(r1→a)で 1 2023/06/21 15:29
- 工学 電気回路について質問があります。 テブナン関連の問題なのですが、青線ないの意味がよくわかりません。な 4 2023/01/17 16:51
- 英語 自動詞のhopeについて 5 2023/03/12 02:34
- 英語 "a report into..."の"into"の意味について 9 2023/05/12 18:18
- 工学 非対称三相交流について 2 2022/07/06 00:36
- 日本語 意味とは何か、どこにあるのか? 16 2022/04/09 11:44
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- 相続・贈与 おじの山林権利を父に移したい 4 2022/07/17 11:11
- その他(ブラウザ) Goog検索で自分の情報を出さないようにするには? 1 2022/06/10 08:02
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
VBA ユーザーフォームの Keypreview について
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
矢印(左右)キーでイベントを発生させたい。
Visual Basic(VBA)
-
-
4
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
5
DoEventsがやはり分からない
Visual Basic(VBA)
-
6
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
7
keydown イベントについて
Visual Basic(VBA)
-
8
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
9
Ctrlキーが押されたことの検出
Excel(エクセル)
-
10
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
11
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
12
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
13
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
14
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
15
CloseとDisposeの違い
Visual Basic(VBA)
-
16
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
17
SQLで列名を変数にできないでしょうか
SQL Server
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
Visual Basic 6.0 コンボボック...
-
WPFでの時刻入力コントロールに...
-
IEで、BackSpaceで「戻る」機能...
-
(VBA)チェックボックスのclick...
-
VB6で電卓を作っているのですが...
-
特定のキーを押すまでループさ...
-
キーイベントを擬似的に発生さ...
-
フォーカスについてお教えください
-
DELPHIでIME動作中のキーコード...
-
KEYPREVIEW=TRUEについて。意味...
-
エクセルVBAのテキストボック、...
-
VBでイベント処理を追加する...
-
Excel VBA マクロ実行中のみテンキ...
-
C# WMPメディアの終了検知 その2
-
NULLで検索を行ったときは全件...
-
コントロールキーが押されたキ...
-
コマンドボタン(入力)をクリッ...
-
VB.NETのDropDownListをReadOnl...
-
複数のテキストボックスのカン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
特定のキーを押すまでループさ...
-
一定時間操作されないと自動で...
-
Visual Basic 6.0 コンボボック...
-
タブキー押下時のイベントをひ...
-
WPFでの時刻入力コントロールに...
-
コンボボックスにキー入力をさ...
-
(VBA)チェックボックスのclick...
-
VB.NETのDropDownListをReadOnl...
-
Excel VBA マクロ実行中のみテンキ...
-
EXCEL VBA でIEを制御して、INP...
-
キーイベントを擬似的に発生さ...
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
-
VB.NETでフォームがない...
-
エクセルVBAのテキストボック、...
-
IEで、BackSpaceで「戻る」機能...
-
C# WMPメディアの終了検知 その2
-
複数のテキストボックスのカン...
-
コマンドボタン(入力)をクリッ...
おすすめ情報