• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ実行後に操作を元に戻したい)

Excelマクロの実行後に操作を元に戻したい方法は?

このQ&Aのポイント
  • 自作の時間割変更プログラムを使っている際、マクロ実行後に一つずつ操作を元に戻したい場合、Worksheet_SelectionChange関数を使用します。
  • 実行後の操作の元に戻すためには、セルの値と色情報を一時変数に保存し、操作を変更後の値に変更し、一時変数の値を元に戻すことで実現します。
  • Excel 365とWindows 10を使用している場合、Ctrl+zが効かない場合があります。代わりにWorksheet_SelectionChange関数を使用して操作を元に戻すことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

無理です。マクロ実行前の状態は記憶していません。 マクロはユーザー設定の処理なので、前の状態を記憶しようとすると、膨大な記憶容量が必要になるので、そのような設計になっています。 マクロ実行時に名前を付けて保存する設計にしない限り、不可能です。 マクロ実行前に必ず保存する癖を付けましょう。 後、このプログラムの組み方は非常に危険です。 エラーがあってもそのまま動きます。   On Error Resume Next は、必要最低限だけにして、すぐに   On Error Goto 0 で戻すべきです。 見ている限り、   On Error Resume Next は必要ないと思うのですが。

moodesu
質問者

お礼

なるほど、やはり無理ですか。 エラー処理については気が付きませんでした。 ご教示ありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

20年ぐらい質問を見てますが、こういう質問はめずらしい。普通の人は鼻からあきらめているのだろう。 そういう状況になったことが、VBAで捉えられるのか? 単純なイベント化(或るセルの値のChangeなど)では、難しそうなので、諸条件が整ったかどうかどう判断すべきか? もしそれが、できるなら、その状態・時点で、そのブックを保存して、そちらから再出発は人間が判断する。リスタートするためのボタンでも作っておくとか。 ーー 大筋はそれまでの処理を、是認して、人間の判断で、不都合なz関係個所を修正するなんてできないのだろうか? 普通、シートにインプットし、インプットチェックして、そのセルを 修正するで直るケースが尾井と思うが、そうではないのか? ーー これでは不都合がありそうな点があるかは、質問者が考えること。 回答者に考えさせる点ではない。

moodesu
質問者

お礼

ご教示ありがとうございます。 仰る意味が不明なのでどうすればよいのかがわかりません。 このような質問をした私が馬鹿でした。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

コード実行時に別シートに RngとActiveCellの .Address .Value .Interior.ColorIndex をスタックするようにしておくとCtrl+zで元に戻すは無理ですけど何かしらのショートカットキーもしくはボタンで元に戻すというのも考えられるような気がします。

moodesu
質問者

お礼

ご教示ありがとうございます。これでは1回のみになるのではないかと思いますが、複数回した後に戻る必要があるのです。どうすればよいのかがわかりません。

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.2

>>何度か実行した後に一つずつ元に戻したいのですが。  Excelに容易された『戻る』の機能では、何かしらのマクロを実行した時点で履歴が消えます。この点についてはソフト側の仕様ですのでどうしようもありません。  実務上では結構不便な部分です。  疑似的にでも実装したいなら、マクロを実行する度にSaveCopyAsでブックのコピーを残す、というのはどうでしょうか。 https://excelwork.info/excel/booksavecopyas/  ファイル名の末尾をNow関数の時刻表示にしておけば、ファイル名が被る心配はありません。  当然膨大なファイルが作成されていくので、専用フォルダの設定や、一定数以上ファイルが溜まっていれば削除する、など色々と工夫は必要になりますが、誤操作時のバックアップを残す事は可能です。

moodesu
質問者

お礼

早速のご教示ありがとうございます。