Excel VBAで複数セルへの貼り付けを禁止する方法

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。
SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。
お気軽にお問い合わせください。
業務効率化を目指す皆さん、Excelを使っているときに、間違って複数のセルに貼り付けてしまった経験はありませんか?
VBAを使って複数のセルにコピー&ペーストを禁止する方法

Excelのシートでセルに変更があった時に動くプログラムを作ったけど、複数のセルに値を一度に貼り付けられて、プログラムが正常に動作しなかった💦



VBAでは、複数のセルにペーストしたときに、エラーにする方法があるよ!
本記事の内容を使って、VBAで業務効率化をぜひ実践してくださいね!
複数のセルにペーストを禁止する方法
はい、それでは、早速やっていきましょう!
コード



まずは、コードを紹介するね!
シートに以下のコードを貼り付けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 禁止範囲 As Range
Set 禁止範囲 = Me.Range("A1:A10") ' 貼り付けを許可する範囲を指定
' 複数セルが変更された場合
If Target.Count > 1 Then
If Not Intersect(Target, 禁止範囲) Is Nothing Then
Application.EnableEvents = False ' イベントを無効にする
Application.Undo ' 元の値を戻す
MsgBox "複数セルへの貼り付けはできません。", vbExclamation
Application.EnableEvents = True ' イベントを再度有効にする
End If
End If
End Sub



Target.Count > 1 は、複数のセルってことね!
複数のセルにペーストしてみる





複数のセルにペーストしようとうすると、エラーメッセージが表示されて、値が貼り付けられません。



一瞬、値がペーストされたように見えたけど、すぐにクリアされたわ!
セルが、もともと空だから問題なかったね!
すでに値のあるセルに貼り付けた場合



一瞬、値がペーストされたように見えたけど、元の値にちゃんと戻るの?



試しにやってみよう!





A1の値をA8、A9、A10に貼り付けみるね!





一瞬、値がペーストされたように見えたけど、すぐに元の値に戻ったわ!
Application.Undo ‘ 元の値を戻す



このコードが元の値に戻す役割をしているよ!
まとめ
ExcelのVBAでシートを使って入力画面を作成するときには、よく使うテクニックです。ぜひ活用してくださいね!開発や、VBAのサポートなどがあれば、ぜひお問い合わせください。
コメント