• ベストアンサー

エクセルVBAでUndoをやり直して元に戻したい。

エクセル2000または2003に関する質問です。 VBAでApplication.Undoを使用してユーザーが最後に実行した操作を取り消すことが可能ですが、逆にUndoメソッドで取り消した操作を元に戻すにはどうしたらよいのでしょうか? Application.SendKeys ("^y")  のようにUndoをやり直すショートカットを動かせば可能のようですが、ショートカットキーにたよらない方法はないのでしょうか。 ( ̄∇ ̄; ?

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

すいません試してませんでした HELPに下記のような記述があったので Application.Undo ユーザーが最後に実行した操作を取り消します。 Application.Repeat ユーザーが最後に行った操作を繰り返します。 安易に回答してしまいました、すみません チョット試してて気づいたのですが Sub TRST01() Application.Undo End Sub で操作を取り消しますよね さらに Sub TRST01() Application.Undo End Sub とすれば元に戻りますけど これとは違うのでしょうか? 一応、参考にしたページのリンク貼っておきます ユーザーフォームで Undo機能を使うには? http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9d6.html

merlionXX
質問者

お礼

何とUndoを2回やればいいとは! おどろいちゃいましたよ。 Sub TEST01()  a = Range("A1")  Application.Undo  b = Range("A1")  Application.Undo  MsgBox "新旧差額は" & a - b End Sub ありがとうございます。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

Application.Repeat

merlionXX
質問者

お礼

ありがとうございます。 ワークシートに手入力した後、 Sub TRST01() Application.Undo End Sub を走らせれば入力値は消えます。 その後、 Sub test1_SK() Application.SendKeys ("^y") End Sub で再度入力値にもどりますが、これをかわりに Application.Repeat にしても無反応でした。 やりかたがまずいのでしょうか?

関連するQ&A