お世話になっております。
質問タイトルの通り、VBAをWorksheetに登録しdeleteキーを押した際に背景を塗りつぶしなしにしたい質問になります。

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

A 回答 (2件)

>VBAをWorksheetに登録しdeleteキーを押した際に背景を塗りつぶしなし


Delete でも可能ですが、Delete は、基本的なキーのひとつですから、それを潰すのはあまり賛成できません。確か、キーボードマクロで、そのようなツールもあった覚えがありますが、あくまでもExcel-Sheet内に限りますので、[コントロールキー + Del ] ではいかがでしょうか。
そういう発想からすれば、当然、Application.OnKey "{RIGHT}", "^{+}{PGUP}" で、右移動も可能です。

私の記憶では、これらの組み合わせの中で、Windows OS由来のものは、設定はしてはいけなったと思います。例えば、Alt + F4 などが入ります。

私の設定は、MZツールというアドインプログラムで、ほとんどのショートカットキーで、VBA Editorに対してテンプレートが起動するように設定されていますので、もう取る場所がないぐらいです。

'//標準モジュール
Sub Auto_Open()
 Application.OnKey "^{DEL}", "NoFillMacro"
End Sub
Private Sub NoFillMacro()
Dim Rng As Range
 If TypeName(Selection) = "Range" Then 'セルの上にないと起動しません
  Set Rng = Selection
 Else
  Exit Sub
 End If
 If Rng.Interior.Color <> xlColorIndexNone Then
   Rng.Interior.Color = xlColorIndexNone
 End If
End Sub

なお、これは、そのブックで、Auto_Openで起動されたら全ブックに及びます。
また、万が一にも外したい時には、
Application.OnKey "^{DEL}"
とマクロ名をなしにして実行すれば、設定は消えます。
    • good
    • 0
この回答へのお礼

WindFaller様回答ありがとうございます。
コントロールキー + Delのプログラムありがとうございます。
早使わせていただいております。
この様に割り当てる事も出来るのですね。
勉強させていただきます。
またお世話になる機会があるかと思いますが、何とぞよろしくお願い致します。

お礼日時:2017/06/20 02:59

こんにちは



>deleteキーを押した際に背景を塗りつぶしなしにしたい~~
エクセルのマクロにはKeyPressのようなイベントは設定されていないいので、「イベントが発生したら~」のような記述方法はできないようです。
(フォーム内では、同様のイベントが利用できますが・・・)

ただし、API関数のGetAsyncKeyStateを利用することで、押し下げキーを取得することは可能です。
https://msdn.microsoft.com/ja-jp/library/cc36458 …

上記のようにイベント処理としては記述できませんので、キー操作を監視するような処理にしておいて、「対象のキーが押されたら予定の処理を行う」ようにする必要があります。
タイミングを外さないために、ある程度短い時間毎に監視する必要がありますが、短くしすぎると相当の負荷となりかねませんので、適当なところを見極める必要がありそうです。
    • good
    • 0
この回答へのお礼

fujillin様回答ありがとうございます。
勉強させていただきます。

お礼日時:2017/06/20 02:35

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報