
初めて質問します。なので、情報が少なかったらすみません。
windows7 64bit Excel2010でVBAにトライしています。
その中で「GetAsynckeyState」関数を使用して、キーボードの入力を判定したく、
コードを書いたところ「GetAsynckeyStateはUser32.dll 内に見つかりません」という
エラーが発生しました。
下記がそのコードです。使用できるようにしたいのですがどうしたらいいでしょうか。ご教授お願いします
===================
Option Explicit
Private Declare Function GetAsynckeyState Lib "user32.dll" (ByVal vKey As Long) As Long
Sub test()
If GetAsynckeyState(38) <> 0 Then
Range("B1") = "●"
Else
Range("B1") = ""
End If
End Sub
====================
No.2ベストアンサー
- 回答日時:
GetAsyncKeyの「Key」の「K」が小文字になっています。
ビギナーが必ず一度は引っ掛かる問題ですが、GetAsyncKeyは大文字小文字を区別します。一文字でも違うと、「見つかりません」と言われてしまいます。
それから、ご提示のコードは、一瞬で処理が終了してしまうため、正しくプログラムを走らせても、キー入力を検知できません。
この問題を解決するには、処理をループさせて、ユーザーがいつキーを押しても判定できる状態にしておく必要があります。
※ループにはまって抜け出せなくなったときはESCを押します。
また、戻り値は、押されてない時が0以上、押されている時が0未満ですので、<0として判定します。
例:
Sub test()
main:
If GetAsyncKeyState(38) < 0 Then
Range("B1") = "●"
MsgBox ("処理終了")
Exit Sub
Else
GoTo main:
End If
End Sub
No.1
- 回答日時:
APIの関数名は大文字・小文字を区別しますので、正しく記載してください。
× Private Declare Function GetAsynckeyState Lib "user32.dll" (ByVal vKey As Long) As Long
○ Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Long
参考URL:http://msdn.microsoft.com/ja-jp/library/cc364583 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
-
vba GetAsyncKeyState関数について
Visual Basic(VBA)
-
VBA マウスクリックとキーボードの判定のGetAsyncKeyStateについて教えてください
Visual Basic(VBA)
-
(エクセルVBA)セルを左クリックしたら実行させるには?
Excel(エクセル)
-
-
4
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
5
GetAsyncKeyState() を利用するときの良い方法は
Visual Basic(VBA)
-
6
GetAsyncKeyState(32) の動作が分からない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
UMLでの例外処理
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
Loadイベント中にほかのイベン...
-
インタラクティブの反対語は?
-
VBAでCOPYを繰り返すと、処理が...
-
月度は何て読みますか?
-
findは動くがfindnextがマクロ...
-
セックスレスの既婚女性は自慰...
-
Do~Loopした回数をカウントしたい
-
エクセルVBA マクロ処理中のポ...
-
VB.NET Excelを読み込んでDataT...
-
RPGプログラムの*HIVALについて
-
Access チェックボックスでチェ...
-
お家デートをしててハグを長い...
-
iD
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
DoEventsがやはり分からない
-
月度は何て読みますか?
-
お家デートをしててハグを長い...
-
VB.NET Excelを読み込んでDataT...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
VBAでCOPYを繰り返すと、処理が...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
リョウ・・・量?料?
-
vba 空のデータをSplitする時の...
-
findは動くがfindnextがマクロ...
おすすめ情報