プロが教えるわが家の防犯対策術!

マクロにまったく疎いのですが、毎月同じベースのシートを使うのである範囲・位置のセルを一気に削除できるよう設定し、なんとか(Ctrl+d)でショートカットキー登録して使っています。
先日その仕様のブックAを開いたまま、別のブックBを作業中にうっかりCtrl+dを押してしまったらしく、密に入力してあったセルがおかしな形でバッサリ空白に!
”元に戻す”も機能しませんし、当初はマクロと思いつきもせず何が起こったのやら、パニックに陥りました。
こんなうっかりを避ける方法ありませんか?
登録したブック限定で働く機能だと思っていましたが、うっかり押さない位置のキーに変更して気を付けるしかないでしょうか?
どうしてもAと他のブックを同時に開いて作業しなければならないので、いつまた同じことをやらかすかとヒヤヒヤしています。

質問者からの補足コメント

  • 基本、ボタンからの実行が確実ですね!
    とはいえ、勉強になりました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/07/26 09:44

A 回答 (2件)

ショートカットはつくらないこと。


複数のシートを開く作業が多いならマルチディスプレイを導入する。
こまめに保存する癖をつける。
    • good
    • 0
この回答へのお礼

そっか…実行するなら手動ですね?ショートカットに囚われてました!
ありがとうございます。

お礼日時:2021/07/25 15:24

こんにちは


既に回答が出ておりますが、
ショートカットを作らずボタンなどからの実行が良いと思います。

ショットカットの修正方法は、Altキー+F8キーでマクロダイアログを表示してオプションより変更、(空白で)トリガ削除できると思います。

もし、ショートカットキーからの実行をそのまま維持して
他のブックの場合、処理しないようにするには、
マクロダイアログの編集をクリックしてコードを書き足す必要があります

ブックの不特定のシートで実行させる場合、
' Keyboard Shortcut: Ctrl+d と書いてある
下の行に
If ThisWorkbook.Name <> ActiveWorkbook.Name Then Exit Sub
の一行を足します。
これで他のブックに対しては実行されません。

更に特定のシートのみに制限したい場合は、その下の行に
If ActiveSheet.Name <> "Sheet1" Then Exit Sub

"Sheet1"のSheet1は、実行しても良いシート名です
Sheet1を対象のシート名に書き替えてください。
(シートタグをダブルクリックし文字列を選択してCtrl+cでコピーするのが間違えないかと)

複数のシートで機能させたい場合は
If ActiveSheet.Name <> "Sheet1" And ActiveSheet.Name <> "Sheet2" Then Exit Sub

Sheet1とSheet2の場合に実行されます。

纏めると
' Keyboard Shortcut: Ctrl+d  ’多分ある?
'
If ThisWorkbook.Name <> ActiveWorkbook.Name Then Exit Sub
If ActiveSheet.Name <> "Sheet1" And ActiveSheet.Name <> "Sheet2" Then Exit Sub

既存コード
この回答への補足あり
    • good
    • 0
この回答へのお礼

すごいです!
解りやすく記載していただき、ありがとうございました。

お礼日時:2021/07/26 09:38

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