|
▼MONKEY さん:
おはようございます。
マクロ実行中は、Onkeyメソッドは、実行されませんよね!!
方法としては、
1 APIのGetAsyncKeyStateを使う
2 Ontimeでを使ってループさせる(この時は、Onkeyメソッドが使えました)
3 キーをトリガーにする仕様を変更する
(別の例えばボタンクリックで別マクロを実行させる仕様するとか
これならば、実現可能です)
私なら、3ですが・・・。
2も試しましたが、ちょっと処理が遅い
例は1の方法で
例えば、ループ中では セルA1(アクティブシート)に1を足す
という処理を行うとします。
LEFTキーで足されたセルA1の値をクリアする
RIGHTキーでループから抜ける
という仕様で考えると・・・、
新規ブックの標準モジュールに
'==================================================================
Option Explicit
Private Declare Function GetAsyncKeyState Lib _
"User32.dll" (ByVal vKey As Long) As Long
'==================================================================
Sub sample1()
Do Until GetAsyncKeyState(39) <> 0
If GetAsyncKeyState(37) <> 0 Then
left_proc
End If
[a1].Value = [a1].Value + 1
DoEvents
Loop
End Sub
'==================================================================
Sub left_proc()
[a1].Value = 0
End Sub
sammple1を実行し、実行中に LEFTキーを押してみてください
|
|