VBATips

特定のワークシートでペーストを禁止する【SelectionChange】【ExcelVBA】

特定のワークシートでペーストを禁止したい。

計算式がある特定のワークシートでペーストを禁止させたい場合があります。
ペースト自体は禁止せず、値貼付に変更する場合はこちらの記事を参考にしてください。

特定のワークシートでペーストを禁止するサンプルコード

SelectionChange(ワークシートのセルを選択したら)マクロを実行します。

'■セル選択時に強制的にクリップボードの中身を消去する
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = False
End Sub

注意点

  • Worksheet_Changeイベントのため、標準モジュールでは感知できません
  • 本コードは対象としたいWorkSheet内のシートモジュールに記述をする必要があります。
  • 上記はあくまでもペーストの禁止です。コピーの禁止ではないのでご注意ください。
  • コピー自体を厳密に禁止する場合は、OnkeyCtrl + 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がおすすめ

コメント

タイトルとURLをコピーしました