[[20250714061207]] 『コピペで書式を壊さないようにするVBA』(Shirosuke) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『コピペで書式を壊さないようにするVBA』(Shirosuke)

エクセル初心者がエクセル書式情報を壊して、表示がおかしくならないようコピペされても値で貼り付け処理できるようにしたいです。
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error Resume Next

    '■更新されたセル数が1なら抜ける
    If Target.Count = 1 Then Exit Sub

    Application.EnableEvents = False

    '■処理内容(ペースト処理)を戻し、値で貼付する
    Application.Undo
    Selection.PasteSpecial xlPasteValues

    Application.EnableEvents = True
End Sub

上記のコードでやりたいことは出来ていますが問題があり困っています。
値のみでペーストはされますがペーストされた文字をDeleteキーで消せなくBacsspaceのみでしか削除できません。また間違ったセルに貼付けたため戻る操作ができず困っています。大変申し訳ありませんがお力を頂きたくよろしくお願いします。

< 使用 Excel:Excel2021、使用 OS:Windows10 >


どちらも、Changeイベントで処理しているからじゃないですか?
いまのアプローチを変えて、右クリックメニューにでも値貼り付けマクロを追加してみてはどうでしょうか?

(もこな2 ) 2025/07/14(月) 07:53:41


 前者の話(deleteできない)は、
 Application.CutCopyMode で判定して処理を限定することで回避できそうですね。
 後者の話はマクロ処理全般に言えることではないかと思います。
(xyz) 2025/07/14(月) 09:03:52

皆様ありがとうございます。
(xyz)さんApplication.CutCopyModeにしたら自分のやりたいことが出来き、全て解決しました。
素早い教え大変有難うございました。
(Shirosuke) 2025/07/14(月) 09:22:42

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.