- ベストアンサー
エクセルVBAでUndoをやり直して元に戻したい。
エクセル2000または2003に関する質問です。 VBAでApplication.Undoを使用してユーザーが最後に実行した操作を取り消すことが可能ですが、逆にUndoメソッドで取り消した操作を元に戻すにはどうしたらよいのでしょうか? Application.SendKeys ("^y") のようにUndoをやり直すショートカットを動かせば可能のようですが、ショートカットキーにたよらない方法はないのでしょうか。 ( ̄∇ ̄; ?
- みんなの回答 (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
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
Application.Repeat
お礼
ありがとうございます。 ワークシートに手入力した後、 Sub TRST01() Application.Undo End Sub を走らせれば入力値は消えます。 その後、 Sub test1_SK() Application.SendKeys ("^y") End Sub で再度入力値にもどりますが、これをかわりに Application.Repeat にしても無反応でした。 やりかたがまずいのでしょうか?
お礼
何とUndoを2回やればいいとは! おどろいちゃいましたよ。 Sub TEST01() a = Range("A1") Application.Undo b = Range("A1") Application.Undo MsgBox "新旧差額は" & a - b End Sub ありがとうございます。