
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)
-
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
-
4
keydown イベントについて
Visual Basic(VBA)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
CloseとDisposeの違い
Visual Basic(VBA)
-
8
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
9
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
10
エクセルVBA フォーム上でOnkeyがうまく出来ない
Excel(エクセル)
-
11
デフォルトでチェックボックスをオンにしたい。
その他(Microsoft Office)
-
12
ExcelVBAのユーザーフォームでescキーを使う方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6で電卓を作っているのですが...
-
イベントハンドラが取得できな...
-
【VB】or【C#】テキストボック...
-
ComboBoxについておしえてください
-
GetKeyStateについて
-
タブキー押下時のイベントをひ...
-
VBでイベント処理を追加する...
-
IEで、BackSpaceで「戻る」機能...
-
コンボボックスにキー入力をさ...
-
DELPHIでIME動作中のキーコード...
-
VB.NETでフォームがない...
-
Visual Basic 6.0 コンボボック...
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
-
コントロールキーが押されたキ...
-
エクセルVBAのテキストボック、...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
CloseとDisposeの違い
-
エクセルVBAで、MsgBox やInput...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
(VBA)チェックボックスのclick...
-
特定のキーを押すまでループさ...
-
タブキー押下時のイベントをひ...
-
KEYPREVIEW=TRUEについて。意味...
-
WPFでの時刻入力コントロールに...
-
一定時間操作されないと自動で...
-
テキストボックスの入力文字を1...
-
Visual Basic 6.0 コンボボック...
-
VB.NETでフォームがない...
-
コンボボックスにキー入力をさ...
-
自作ダイアログボックス中のエ...
-
エクセルVBAのテキストボック、...
-
Excel VBA マクロ実行中のみテンキ...
-
コントロールキーが押されたキ...
-
フォーカスについてお教えください
-
イベントハンドラが取得できな...
-
VB.NETのDropDownListをReadOnl...
-
C# WMPメディアの終了検知 その2
-
EXCEL VBA----ユーザーフォーム...
おすすめ情報