VBA開発

OnkeyメソッドでEnterキーが効かない場合の対処法【ExcelVBA】

Onkeyメソッドで、Enterキーが効かない(反応がない)

Onkeyメソッドでは、自作のショートカットキー作成や、 F1 のヘルプキーを無反応にすることが可能です。

■参考記事
「Ctrl+Shift+Q」で「セル結合・セル結合解除」をパーツ化する。【エクセルマクロ】
「Ctrl+Shift+V」で「値で貼付する」をパーツ化する。【エクセルマクロ】
「F1」キーを無効設定し、ヘルプを起動させない【エクセルマクロ】

きちんと設定したにもかかわらず、Onkeyが動作しないケースが存在します。
その場合、下記の内容で解決すると考えます。

ENTERキーが効かない

{ENTER} で処理してませんか? {ENTER} はテンキー側のENTERです。

テンキー側のENTERNumLock キーの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} と ~(チルダ)を間違えるケースは多いです!

 

コメント

タイトルとURLをコピーしました