Excelでマクロで実行した操作に関しては基本的に元に戻すという操作はできません。
先日「Application.OnUndo」というメッソドの存在を知り、マクロで実行した操作を元に戻せそうだ、とワクワクしながら調べ上げてみました。結果、アプリケーションの元に戻す操作と同じことはできないということが判明。
それでは、OnUndoメソッドって、どういうことかというと、クイックアクセスツールバーの「元に戻す」をクリック、あるいは「Ctrl + Z」を打ったとき、実行するプロシージャを指定する、ってことでした。
構文:OnUndo(Text,Procedure)
引数 Text→[元に戻す] コマンドに表示するテキストを指定
Procedure→[元に戻す] コマンドを選択すると実行されるプロシージャ名
ということで、簡単なプロシージャを作ってみる。
①「test」プロシージャでインプットボックスに入力したセルをアクティブセルに表示させる。
②その直後に「元に戻す」をクリックあるいは「Ctrl + Z」を押すと、OnUndoメソッドで「myOnUndo」プロシージャを呼び出す。
「myOnUndo」プロシージャには、アクティブセルを「“”」にするというステートメントを記述。
③結果として、アクティブセルに入力された値が、「“”」になり、数字が表示される前の状態に戻ったように見せかけるというもの。
――――――――――――――――――――――――
Sub test()
Dim myNum As Integer
myNum = InputBox(“数字入力”)
ActiveCell = myNum ‘・・・①アクティブセルにInputボックスから取得した数字を表示する。
Application.OnUndo “VBAの処理を1つ前に戻す”, “myOnUndo” ‘・・・②
End Sub
――――――――――――――――――――――――
Sub myOnUndo()
ActiveCell.Value = “”
End Sub
――――――――――――――――――――――――