25

Excel マクロでは、実行後に「元に戻す」を使用できないようです。undoExcel で機能を VBA マクロに焼き付ける方法はありますか?

4

3 に答える 3

23

Excel VBA には、Application.OnUndoこれを処理する関数があります。

Public Sub DoSomething

    ... do stuff here

    Application.OnUndo "Undo something", "UnDoSomething"
End Sub

Public Sub UnDoSomething

    ... reverse the action here

End Sub
于 2008-12-04T00:39:28.130 に答える
7

マクロの最初の行がバックアップディレクトリにコピーを保存してから、そのブックを閉じて元のブックを再度開くので、私の考えは非常に単純です。マクロの実行結果が気に入らない場合は、保存したブックをプルアップしてください。シンプルにしてくださいね?

于 2008-12-23T18:01:08.920 に答える
4

私は常にマクロを実行する直前に (少なくともテスト中に) 保存し、すべてが洋ナシの形になった場合は、保存せずに終了して再度開くことができます。

それを実際のマクロに焼き付けるには、基本的に、変更されたすべてのもの (セルの内容、数式、書式設定など) の古い状態をリストに記録し、そのリストを逆の順序で再生する元に戻すマクロを用意する必要があります。

たとえば、マクロがセル C22 の内容を「3」から「7」に変更し、フォーマットを「一般」から「数字、小数点以下 2 桁」に変更した場合、リストは次のようになります。

C22 value  3
C22 format general

これを逆の順序で (別のマクロを使用して) 再生すると、変更が元に戻ります。

次のようなマクロの元に戻す情報を保持するために、余分なシート全体を用意できます。

Step   Cell   Type    Value
----   ----   -----   -------
   1   C22    value         3
       C22    format  general
   2...

残念ながら、「実際の」元に戻す機能とはうまく統合されませんが、それを回避する方法はないと思います。

于 2008-12-04T00:25:36.130 に答える