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のサポートなどがあれば、ぜひお問い合わせください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次