Googleデスクトップ検索で使われていた下記ショートカットキーでフォームを表示する設定を行いたいと考えています。
{Ctrlキーを1秒以内に2度連続で押す}
###現状 ショートカットキー{F1}の場合
F1キーを押す度にフォームを表示・非表示する
VBA
1Private Sub Workbook_Open() 2 Application.OnKey "{F1}", "toggleForm" 3End Sub 4 5Public Sub toggleForm() 6 If UserForm1.Visible Then 7 Unload UserForm1 8 Else 9 UserForm1.Show 10 End If 11End Sub
###実現したいこと ショートカットキー{Ctrlキーを1秒以内に2度連続で押す}
Ctrlキーを1秒以内に2度連続で押す度にフォームを表示・非表示する
###試したこと
とりあえずイメージが伝わるようにと、フォームコントロール上で実装してみました。
VBA
1Dim doublePressingFlag As Integer 2Dim previousKey As Integer 3Dim t As Single 4Private Sub CheckBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 5 If KeyCode = previousKey Then '前回と同じキーが押された場合 6 If Timer() - t <= 1 Then '1回目と2回目の押下時刻の差が1秒以内 7 doublePressingFlag = True '2度押しフラグを立てる 8 Else 9 previousKey = 0 '時間制限を超過したので、前回押下キーを初期化 10 End If 11 Else '前回と違うキーが押された場合 12 previousKey = KeyCode '前回押下キーを初期化 13 End If 14 t = Timer() 'キーが押された時刻を記録 15 16 If doublePressingFlag Then 17 Call toggleForm '制限時間内にキーが2度押しされた場合はフォームを表示・非表示 18 End If 19End Sub
###発生している問題・エラーメッセージ
フォームコントロールのkeyDownイベントでは問題なく実現できたのですが、
これと同じ機能をワークシート上で行う方法が分かりません。
キーの2度押しを拾うとなるとAPIを使う事になるのでしょうか。
###補足情報(言語/FW/ツール等のバージョンなど)
Excel 2010
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/24 14:52
2017/09/27 03:12