Onkeyメソッドで、Enterキーが効かない(反応がない)
Onkeyメソッドでは、自作のショートカットキー作成や、 F1 のヘルプキーを無反応にすることが可能です。
■参考記事
「Ctrl+Shift+Q」で「セル結合・セル結合解除」をパーツ化する。【エクセルマクロ】
「Ctrl+Shift+V」で「値で貼付する」をパーツ化する。【エクセルマクロ】
「F1」キーを無効設定し、ヘルプを起動させない【エクセルマクロ】
きちんと設定したにもかかわらず、Onkeyが動作しないケースが存在します。
その場合、下記の内容で解決すると考えます。
ENTERキーが効かない
{ENTER} で処理してませんか? {ENTER} はテンキー側のENTERです。
テンキー側のENTERはNumLock キーのON / OFFに影響されます。
結果、反応がないした現象が発生し、OnKeyメソッドは失敗します。
ENTERは、~ (チルダ) です。
’■Enterで TestModule を起動する Application.OnKey "~", "TestModule"
元々のショートカットの内容が失われた
Ctrl + C (コピー)や Ctrl + V(貼り付け)のような既にショートカットキーにOnkeyメソッドを組み合わせると、
元々設定されているショートカットの内容が上書きされ、デフォルトのショートカットは無効になります。
'■ Ctrl + V で testModule を起動 Application.OnKey "^V", "testModule"
UserFormではOnkeyメソッドは使用できない?
ユーザーフォームではOnkeyメソッドは使用できません。
KeyPressイベント もしくは KeyDownイベント で同様の実装が可能ですので、そちらを使用しましょう。
関連記事
■OnKeyの基本と有効活用
任意のキー押下でマクロを起動する【OnKey メソッド 】VBA
「ActiveSheetをCSV出力して保存する」をパーツ化する。【ショートカットキー】【VBAマクロ】
「ActiveSheetをタブ区切りのテキストで出力保存する」をパーツ化する。【VBAマクロ】
「ActiveSheetをPDF保存する」をパーツ化する【ショートカットキー】【VBAマクロ】
■SendKey関連
物理キーを反映させる【SendKeysメソッド】
SendKeysでキーが効かない場合の対処法【ExcelVBA】
※SendKeyメソッドでも {ENTER} と ~(チルダ)を間違えるケースは多いです!
コメント