2016-08-18 8 views
0

現在、何百もの行の更新、作成、削除などのさまざまな機能を実行するマクロ対応のスプレッドシートがあります。何らかの理由で、これらの関数のうちの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の内容を現在のワークシートにコピーするにはどのような方法が最も簡単でしょうか?

ありがとうございます! :)

+0

に役立ちます。これは、変更が値に関係するだけであることを前提としています。数式、書式なども変更されると、はるかに複雑になります。 – Miqi180

+1

第2の考えでは、変更が行われている間にエラーが発生しなければ削除されるワークシートの一時的なコピーを作成する方が、より簡単で安全な方法が考えられます。終了時に 'Err.Number = 0'があれば' On error resume next'を使い、一時コピーを削除してください。 – Miqi180

+0

新しいワークシートを作成して、 '.UsedRange.Formula'を保存するほうが良いかもしれません。すべての変更が記録されない限り、VBAは元に戻すことは難しいです。または、ワークブックのコピーをTempフォルダに保存するだけですか? – PatricK

答えて

0

私は、コード内でこのような何かをするだろう

Sub Button_Click() 
    Dim TemporaryFileName as String 
    TemporaryFileName = "FileName" 'You can include a path here too like "C:\Wherever\FileName" 
    ThisWorkbook.SaveAs(TemporaryFileName) 
    ... (code to be run 
End Sub 

Sub Restore_Button_Click() 
    Workbooks.Open(TemporaryFileName) 
    ThisWorkbook.Close False ' Won't save. Maybe set to true if you don't want to lose it just yet 

End Sub 

また、おそらく「新しい」バックアップワークブックに代わるように、ファイルが最初に呼ばれていたものは何でもとして保存するボタンを追加する必要があります。あなたのマクロによって壊れていたもの。

・ホープこれはあなたが目標範囲の値を保持するために、データ型 `Variant`で、このために複数の変数、範囲変数と配列変数を必要とする

+2

名前を変更すると、ブックが新しい名前に変更されます。 SaveCopyAsは、ワークブック名​​を変更せずにコピーを保存するので、より優れています。 –

関連する問題