特定のワークシートでペーストを禁止したい。
計算式がある特定のワークシートでペーストを禁止させたい場合があります。
ペースト自体は禁止せず、値貼付に変更する場合はこちらの記事を参考にしてください。
特定のワークシートでペーストを禁止するサンプルコード
SelectionChange(ワークシートのセルを選択したら)マクロを実行します。
'■セル選択時に強制的にクリップボードの中身を消去する
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub
注意点
- Worksheet_Changeイベントのため、標準モジュールでは感知できません。
- 本コードは対象としたいWorkSheet内のシートモジュールに記述をする必要があります。
- 上記はあくまでもペーストの禁止です。コピーの禁止ではないのでご注意ください。
- コピー自体を厳密に禁止する場合は、Onkeyで Ctrl + c や Ctrl + x の機能を無効化する必要があります。
- コピー自体をOffice内だけでよければ下記で可能です。(Chromeやメモ帳にはそのまま使えてしまいます)
'特定シート(Sheet1)等のシートモジュールに記載
'■ワークシートが非表示になった場合
Private Sub Worksheet_Deactivate()
Application.CutCopyMode = False
End Sub
'ThisWorkbookに記載
'■ワークブックが非表示になった場合
Private Sub Workbook_Deactivate()
Application.CutCopyMode = False
End Sub
'■エクセルウィンドウが非表示になった場合(Office内のみで動作)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
MsgBox ""
Application.CutCopyMode = False
End Sub
関連記事
特定のセル範囲で値が変更された時に処理を実行【ExcelVBA】
特定のシートのみで、OnKeyイベントを取得したい
形式を選択して貼り付ける【PasteSpecialメソッド】
クリップボードの中身を貼り付ける【Pasteメソッド】※PasteSpecialがおすすめ



コメント