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
No.1
- 回答日時:
フォームに
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_DOWN = &H28 '↓です
Private Sub Command10_GotFocus()
If GetAsyncKeyState(VK_DOWN) Then
MsgBox "確認"
End If
End Sub
この回答への補足
早速のご回答ありがとうございました。
ご指摘の文を Form の標準モジュールに追加して試してみましたが、上手く動作できませんでした。
Form の何処に挿入すればいいのでしょうか?
No.2
- 回答日時:
Form1のGeneral部分、つまり
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_DOWN = &H28
のようにします。標準モジュールに設定するときは、
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_DOWN = &H28
のようにPrivate をPublicにします。
あえてForm1だけの機能としてForm1のGeneralに宣言しています。
なお、 GetAsyncKeyState関数はWindowsのAPIです。
No.3
- 回答日時:
No2の
Form1のGeneral部分、つまり
とは、Form1のコード表のことです。
プロジェクトで設定する標準モジュールでは
ありません。プロジェクトで設定する
標準モジュールに設定する場合は、
Publicにします。
この回答への補足
当方の補足質問にご丁寧な解答を2回も頂き、誠にありがたく深く感謝申し上げます。
前回の補足質問は、実はそうではないかと推測して、ご指摘のように Private を Public に変更して、標準モジュールに追加挿入した上で、テストした結果の報告でした。
私の報告が言葉たらずで、ご迷惑をお掛けしてしまう結果になってしまい、申し訳ありません。お詫び申し上げます。
今更で申し訳ありませんが、「上手く動作しない」と報告いたしました点の詳細を報告いたします。
不具合点1)プログラム起動直後では Commnd10(TabIndex=1) にフォーカスがあるので、そのまま下↓キーを押すと、Command10(TabIndex=1) の 下↓キー対応処理が起動 が起動しないで、フォーカスが次のコマンドボタンCommand20(TabIndex=2)に移った上で Command20 の 下↓キー対応処理が起動してしまう。
不具合点2)Command10 にフォーカスを移して下↓キーを押すと、Command10 の の下↓キー対応処理が上手くできましたが、残念ながらその処理後、内部からCommand10 にフォーカスをもどしますと、下↓キーを押してもいないのに、再び下↓対応処理が始まってしまいます。
尚、ご提案の方法しかなそそうですので今回で終わりにしたいと思っております。これまでのご協力に感謝申し上げます。本当にありがとうございました。
No.4ベストアンサー
- 回答日時:
(1)
>不具合点1)プログラム起動直後では Commnd10(TabIndex=1)
>にフォーカスがあるので、そのまま下↓キーを押すと、
>Command10(TabIndex=1) の 下↓キー対応処理が起動 が起動
>しないで、フォーカスが次のコマンドボタンCommand20(TabIndex=2)
>に移った上で Command20 の 下↓キー対応処理が起動してしまう。
Timerイベントまたは、
Private Sub Form_Activate()
Text1.SetFocus
End Sub
で起動時のフォーカスを特定のコントロールに設定する。
(2)
>不具合点2)Command10 にフォーカスを移して下↓キーを押すと、
>Command10 の の下↓キー対応処理が上手くできましたが、
>残念ながらその処理後、内部からCommand10 にフォーカスを
>もどしますと、下↓キーを押してもいないのに、再び下↓対応
>処理が始まってしまいます。
この部分の設定はよくわかりませんが、
以下のような設定では、
>もどしますと、下↓キーを押してもいないのに、再び下↓対応
>処理が始まってしまいます。
はおこりませんが。
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_DOWN = &H28
Private Sub execsub001()
MsgBox "やあ"
Me.Command1.SetFocus
End Sub
Private Sub Command1_GotFocus()
'If GetKeyState(VK_DOWN) Then
If GetAsyncKeyState(VK_DOWN) Then
MsgBox "確認"
execsub001
End If
End Sub
Private Sub Form_Activate()
Text1.SetFocus
End Sub
以上です。
ご丁寧な回答をありがとうございました。 突然の不幸で時間がとれず、テストとお礼が遅れてしまいました。 お詫びもうしあげます。
早速テストしまして、希望通りに動作することを確認いたしましたので、採用させていただきます。 本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- その他(Microsoft Office) エクセルVBA イベントの切り替え 2 2022/05/01 03:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TDSマジックランプシアター 箱...
-
レーザのスポット径の計算式
-
メッセージボックスを前面に表...
-
Chrome フォーカス時に枠が表示...
-
SPREAD(GrapeCity)のセルにフォ...
-
C#でButtonのフォーカス枠を消...
-
Excelのマクロで実行時エラー”1...
-
DataGridViewで入力チェック後...
-
池袋の美容師らしきキャッチ
-
Flash CS5 タイムラインエフェ...
-
初期フォーカスについて
-
擬似会議室サイトを構築したい...
-
コンボボックスの開いたリスト...
-
再生中「巻き戻し」「早送り」...
-
FLASHの表現方法(Actionscript)...
-
iPhoneとタッチペン
-
ブラウン管の仕組み
-
アクセス2007のエクスポートに...
-
ローカルでWebページが見れない
-
ゲーム会社のイメージ (ゲー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを前面に表...
-
SPREAD(GrapeCity)のセルにフォ...
-
Excelのマクロで実行時エラー”1...
-
C#でButtonのフォーカス枠を消...
-
iPhoneのクイックアクションを...
-
TDSマジックランプシアター 箱...
-
コンボボックスの開いたリスト...
-
Chrome フォーカス時に枠が表示...
-
レーザのスポット径の計算式
-
コンボボックスの三角を一時的...
-
DAMのデンモクの使い方
-
雷のようなアニメーションをウ...
-
DataGridViewで入力チェック後...
-
フォトショのアクションを別のM...
-
tabキーによるフォーカスをさせ...
-
iPhoneのロック画面に出てくる...
-
Macのウィンドウが透ける
-
[化学基礎] μmのμはどうして...
-
初期状態でのフォーカスの解除
-
ローディングアニメーションの...
おすすめ情報