

こんにちは。GetKeyStateについて質問させていただきます。
VB6にて、APIの「GetKeyState」を使用し、Tabキーのキー入力判断を行っているのですが、その他の操作(GetKeyStateを判断しているフィールドより
マウス左ボタンにて他のコントロールに移動した時等)に、Tabキーを押して
いないのに、プログラムはTabキーを押した状態のロジックが動作していま
す。下記にそのコードを記述しますので、原因・対処方法がありましたら、
教えてください。
****コード
Private Sub TXT_ATAI_LostFocus()
Dim SUBM0030 As SUBM0030_AREA
Dim X As Variant
If (GetKeyState(vbKeyTab) <> 0) Then
If FRM70.TXT_ATAI.Text <> "" Then
Call MEDIA_DECODE3_SEC(SUBM0030, "1")
If SUBM0030.RETURN_CD <> "0" Then
FRM70.GRD1.Col = 7
FRM70.TXT_ATAI.SetFocus
FRM70.MousePointer = vbDefault
Exit Sub
End If
End If
End If
End Sub
**** 開発環境
・OS:Windows98 4.10.1998
・メモリ:64MB
・CPU:P2-233
・PC:FMV6233-D9
No.2ベストアンサー
- 回答日時:
>If (GetKeyState(vbKeyTab) <> 0) Then
If (GetKeyState(vbKeyTab) < 0) Then
では?
参考URL:http://support.microsoft.com/default.aspx?scid=k …
No.4
- 回答日時:
プロパティのMultiLineをTrueにしていませんか?
その場合、そういうことがあるようです。
対応としましては、
MultiLineをFalseにするか、
下記のようにコードを固定すればいいと思います
intSts = GetKeyState(vbKeyTab) And &HFE
If intSts = 128 Then
MsgBox "Tab"
End If
参考になれば。。
No.3
- 回答日時:
すいませんTodo36さん、その通りです。
リンク先より:If the return value is negative, the key has been pressed.
たしかに・・・m(_ _)m
さらに、GetAsyncKeyState(vbKeyTab) <> "0" ←なぜか文字列で比較している
akfkさんご迷惑かけました、todo36さん、ありがとうございます。
No.1
- 回答日時:
NT40(SP6)+VB5(SP3)環境での回答とさせていただきます。
確かにGetKeyState(vbKeyTab) <> 0の記述ではその現象が発生します、理由は調べていません(--;)
目的がTABキーの状態の取得でしたら、次のコードでも実現可能です。
----------------- 標準モジュール
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
----------------- FRM70
Private Sub TXT_ATAI_LostFocus()
If GetAsyncKeyState(vbKeyTab) <> "0" Then
MsgBox "TAB"
End If
End Sub
------------------
参考になれば幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Basic 6.0 コンボボック...
-
タブキー押下時のイベントをひ...
-
Objective-Cでキーボードイベン...
-
【VB】タブ切り替え時のイベント
-
C# WMPメディアの終了検知 その2
-
(VBA)チェックボックスのclick...
-
フォーカスについてお教えください
-
キーイベントを擬似的に発生さ...
-
Access データ表示 完了時のイ...
-
コンボボックス選択後に非アク...
-
VBでEnterを押すとTabで飛...
-
NULLで検索を行ったときは全件...
-
コントロールキーが押されたキ...
-
EXCEL VBA でIEを制御して、INP...
-
EXCEL VBA----ユーザーフォーム...
-
自作ダイアログボックス中のエ...
-
テキストボックスの入力文字を1...
-
Excel VBA マクロ実行中のみテンキ...
-
VB.NETでフォームがない...
-
SelectionChangeCommitted
マンスリーランキングこのカテゴリの人気マンスリー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----ユーザーフォーム...
おすすめ情報