現在、何百もの行の更新、作成、削除などのさまざまな機能を実行するマクロ対応のスプレッドシートがあります。何らかの理由で、これらの関数のうちの1つが残っていて、保持することを意図した情報を削除した場合 - マクロによって変更されたスプレッドシートのバージョンを復元する「元に戻す」ボタンを実装したいと思います。ワークシートの全バージョンを復元するVBAの[元に戻す]ボタン
私はそれが次のようになりますと仮定します。
Public InstanceOfWorksheet As Range
Sub Button_Click()
InstanceOfWorksheet = CurrentWorksheet.UsedRange 'Or something like this
'Macro functionality here
CurrentWorksheet.Update() 'Worksheet has now been updated
End Sub
Sub Button2_Click()
InstanceOfWorksheet = CurrentWorksheet.UsedRange 'Or something like this
'Second Macro functionality here
CurrentWorksheet.Update() 'Worksheet has now been updated
End Sub
Sub UndoLastMacro_Click()
CurrentWorksheet = InstanceOfWorksheet
End Sub
あなたはUndoLastMacroコマンドを起動したときにそのため、この場合には、あなたが効果的に前の最後のマクロにあなたが持っていたワークシートのバージョンを「復元」でしょうと呼ばれる。
InstanceOfWorksheet
はどのような変数タイプにするべきですか。InstanceOfWorksheet
の内容を現在のワークシートにコピーするにはどのような方法が最も簡単でしょうか?
ありがとうございます! :)
に役立ちます。これは、変更が値に関係するだけであることを前提としています。数式、書式なども変更されると、はるかに複雑になります。 – Miqi180
第2の考えでは、変更が行われている間にエラーが発生しなければ削除されるワークシートの一時的なコピーを作成する方が、より簡単で安全な方法が考えられます。終了時に 'Err.Number = 0'があれば' On error resume next'を使い、一時コピーを削除してください。 – Miqi180
新しいワークシートを作成して、 '.UsedRange.Formula'を保存するほうが良いかもしれません。すべての変更が記録されない限り、VBAは元に戻すことは難しいです。または、ワークブックのコピーをTempフォルダに保存するだけですか? – PatricK