アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://oshiete.goo.ne.jp/qa/8918189.html
https://oshiete.goo.ne.jp/qa/8918393.html

このページで
マクロを使ったEscキーを無効にする方法を教えていただきました。

この方法でいけるかと思ったのですが、
このマクロの入ったExcelファイルを開いている間
Excel以外のプログラムでもEscキーが無効になっていることに気がつきました。

Excel内だけEscキーを無効にしたいのですが
このようなことはできないでしょうか?

よろしくお願いいたします。

A 回答 (1件)

64bit版のExcelじゃ多分動きません。

おうちのExcelが64bitなので確認できてません、あしからず

ApplicationオブジェクトのWindowActivate、WindowDeactivateそれぞれのイベントプロシージャにぶちこみ、AddInとして登録してしまえば楽じゃないですかね。

Applicationイベントハンドラについては
http://support.microsoft.com/kb/213566/ja
を参照

Escキーということで、
Alt(ATOKならではの誤爆防止)
Ctrl(スタートメニューが開く誤爆防止)
ついでにShiftも
Alt+Escなんかは比較的便利なショートカットなので、使いたい場合はコメントアウトしたら良いです。

まぁもっとも簡単な解決策は、キーボード変えるという方法なんですが。
ノートなら外付けキーボードに、デスクトップならそんな変態染みたキーボードは捨ててしまえば・・

Private Declare Function RegisterHotKey Lib "user32" _
(ByVal hWnd As Long, _
ByVal id As Long, _
ByVal fsModifiers As Long, _
ByVal vk As Long) As Long

Private Declare Function UnregisterHotKey Lib "user32" _
(ByVal hWnd As Long, _
ByVal id As Long) As Long

Private Const VK_ESCAPE = &H1B
Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2

Private lEsc As Long
Private lAltEsc As Long
Private lCtrlEsc As Long

Sub HookEscKey()
lEsc = 1
lAltEsc = 2
lCtrlEsc = 3

Call RegisterHotKey(0, lEsc, 0&, VK_ESCAPE )
Call RegisterHotKey(0, lAltEsc, MOD_ALT, VK_ESCAPE )
Call RegisterHotKey(0, lCtrlEsc, MOD_CONTROL, VK_ESCAPE )
End Sub

Sub UnhookEscKey()
Call UnregisterHotKey(0, lEsc)
Call UnregisterHotKey(0, lAltEsc)
Call UnregisterHotKey(0, lCtrlEsc)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。

この方法でもEscキーを無効にすることができました。

ただ、私が最初に示した方法と同じく
Excel内だけでなく
同時に起動している他のプログラムでもEscキーが無効になってしまっています。

どうすればExcel内だけで無効にすることができますか?

お礼日時:2015/02/13 13:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!