特定のワークシートでペーストを禁止したい。
計算式がある特定のワークシートでペーストを禁止させたい場合があります。
ペースト自体は禁止せず、値貼付に変更する場合はこちらの記事を参考にしてください。
特定のワークシートでペーストを禁止するサンプルコード
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がおすすめ
コメント