シートに対して、数値貼り付けを強制させるために、undo を用いた以下のマクロを組み込んでいます。
VBA
1Private Sub Worksheet_Change(ByVal Target As Range) 2 3 Application.EnableEvents = False 4 5 '書式も含めたコピペを強制的に値のみの貼り付けにする。 6 Dim v As Variant 7 'コピペしたしたところを一旦target.valueで取得。 8 v = Target.Value 9 'マクロでのchangeイベント発火はundoできないから、無視。 10 On Error Resume Next 11 Application.Undo 12 On Error GoTo 0 13 '元に戻した上で、もう一回コピペしたところに値のみが入るようにする。 14 Target.Value = v 15 16Application.EnableEvents = True 17 18End Sub 19
上記のマクロは作業者がコピペ操作などをした際に、一旦元に戻し、マクロを通して入力することで事実上数値貼り付けを強制させている内容のものです。
しかしこのchangeオブジェクトが別のプロシージャからの操作に対しても、動作してしまい、意図せずundo が作動してしまいます。
例えば作業者自身が何かExcelを編集した上で、マクロを実行させ、上記のchangeオブジェクトが動作した場合、マクロを実行する直前に作業者自身が編集した内容がundo されてしまいます。
これを回避したいのですが、
何かundo を無効化するような方法はございますでしょうか。
私自身としてはExcelの変更履歴を削除できるような(元に戻すの内容が消えるような)マクロなどがあれば、とは思いましが、調べても見つけることができずこちらでお伺いいたしました。
教えていただけますと幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/12 08:38