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

Excel2010を使っています。


半角/全角ボタンのすぐ横にEscキーがあり、
セル内に文字を入力中によく誤ってEscキーに指が辺り
それまで入力していた文字をリセットしてしまいます。

Excel内でのEscキーを無効にするか別の機能を割り当てたいのですが
どのようにすれば良いでしょうか?

A 回答 (2件)

こんにちは。


#1の回答者です。

>IMEではなくATOKを使っています。
>Excle内だけでこの設定を有効にしたいのですがマクロを使った方法を使いたいと考えています。

念の為に、このようなキーボードスワップを見つけました。
KeySwap for XP
http://www.vector.co.jp/soft/winnt/util/se228667 …

私が、XPで使っていたものは、ソフトウェアごとに設定できましたが、上記のものはつかったことがありません。

以下は、単に、ESCだけを使えなくするプログラムです。
かなり昔に、話の行きがかりで作ったお蔵入りのコードで、いままで公開したことはありません。

その時は、それだけの勢いがありましたが、もう、私は、おなじようなものを作るだけの力は持っていません。設定は、特定のブックに対してでも、個人用マクロブックでも構いませんが、後者につけると、Excelを使う時には必ずESCが利かない状態になります。

本来は、解除用のプログラムもあるのですが、うまく働いていませんので、割愛しました。もちろん、ブックに取り付けたものですから、Excelを終了すれば解除されます。

'標準モジュールを新しく一つ設けてください。
'Auto_Openなど前のがあったら、削除してください。ただし、ThisWorkbook_Open()は構いません。
'実際に使う時は、失敗のErr の時のメッセージだけ残せばよいです。

'//新規の標準モジュール
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function RegisterHotKey Lib "user32.dll" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
'Private Declare Function UnregisterHotKey Lib "user32.dll" (ByVal hWnd As Long, ByVal id As Long) As Long 'これは使っていません。
Private Const VK_ESCAPE As Long = &H1B
Private HookFlg As Boolean
Sub Auto_Open()
 Call Disabled_ESCAPEKey '起動時に設定
End Sub

Sub Disabled_ESCAPEKey() '設定
 Dim rtn As Variant
 Dim hWnd As Long
 hWnd = FindWindow("XLMAIN", Application.Caption)
 rtn = RegisterHotKey(hWnd, 1&, 0&, VK_ESCAPE)
 
 If rtn = 0 Then
  MsgBox "Not Success", vbCritical, "Err"
 Else
  HookFlg = True
  MsgBox "Success Hotkey Hooked" 'うるさいかもしれません。
 End If
End Sub
'//
    • good
    • 0
この回答へのお礼

うまくいきました。

ありがとうございます。

お礼日時:2015/02/10 16:59

こんにちは。



本来、IME側のプロパティのEscの設定が、文字を消去するように設定されているからです。
だから、IME側のキー設定を直せばよいです。
MS IMEなら、ツール-プロパティ-全般=編集操作=キー設定で変更をします。

しかし、Excel内で何かに割り当てというのでしたら、
個人用マクロブックの標準モジュールにこのようなコードはいかがですか?

'//個人用マクロブックの標準モジュール
Sub Auto_Open()
 Application.OnKey "{ESC}", "SHOW_TIME" '何も反応させない時は、"{ESC}", "" でリセットになります。
End Sub

'//以下は、動いているかどうかを試すためのものです。
'//ステータスバー(下部左側)に日付と時間が出ます。
Sub SHOW_TIME()
 Dim myTime As String
 Dim STBtext As String
 STBtext = Application.StatusBar
 myTime = Format$(Date, "yy/mm/dd") & " " & Format$(Time(), "hh:mm")
 If STBtext Like "##/##/##*" Then
  Application.StatusBar = ""
 Else
  Application.StatusBar = myTime
 End If
End Sub
'//

再起動するか、Auto_Openを実行すれば、設定が完了します。
    • good
    • 0
この回答へのお礼

IMEではなくATOKを使っています。
Excle内だけでこの設定を有効にしたいのですがマクロを使った方法を使いたいと考えています。

Sub Auto_Open()
 Application.OnKey "{ESC}", "" 
end sub

というのを試してみましたが、セル内にキーを入力中でない場合には
この機能は有効になるのですが
キーを入力中には無効となっており、
普通にキー入力が強制終了されてしまい使うことができません

どうすれば良いでしょうか?

お礼日時:2015/02/10 13:24

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