マクロ処理を1回のUndoで戻せるようにする

マクロの処理はUndo(元に戻す)できますが、一つのマクロでいくつものポイントが記録されるため、Undoを何度も行ったり、中途半端に戻すと問題が生じる場合もあります。

UndoRecordオブジェクトを使うと、マクロ内のコマンドを1回のUndoでまとめて元に戻すことができます。

UndoRecord

一つのマクロで複数のポイントが記録される

UndoRecord

1回のマクロを1つのポイントでまとめられる

UndoRecordオブジェクトでマクロのUndoをまとめる

Dim oUndo As UndoRecord    
Set oUndo = Application.UndoRecord
    
oUndo.StartCustomRecord "マクロ:タイトル追加"
    
'処理内容 ----------------------------
 
oUndo.EndCustomRecord
EndCustomRecordメソッド

Undoに名前を付け、記録を開始するメソッドです。

EndCustomRecordメソッド

Undoの記録を終了します。

文字の入力と書式設定のような、一連の作業を行う小規模なマクロでの利用がお勧めです。
UndoRecordではすべてのコマンドを記録できるわけではありません。
複数のファイルをまたいだりUndoできないコマンドなど、記録できないコマンドが含まれると  EndCustomRecordメソッドがなくても記録が終了されます。

 

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