• ベストアンサー
  • 暇なときにでも

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

  • 質問No.5621772
  • 閲覧数19963
  • ありがとう数6
  • 回答数2

お礼率 93% (1499/1605)

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

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 50% (379/747)

すいません試してませんでした
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

お礼率 93% (1499/1605)

何とUndoを2回やればいいとは!
おどろいちゃいましたよ。

Sub TEST01()
 a = Range("A1")
 Application.Undo
 b = Range("A1")
 Application.Undo
 MsgBox "新旧差額は" & a - b
End Sub

ありがとうございます。
投稿日時:2010/01/25 22:13

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 50% (379/747)

Application.Repeat
お礼コメント
merlionXX

お礼率 93% (1499/1605)

ありがとうございます。
ワークシートに手入力した後、
Sub TRST01()
Application.Undo
End Sub
を走らせれば入力値は消えます。
その後、
Sub test1_SK()
Application.SendKeys ("^y")
End Sub
で再度入力値にもどりますが、これをかわりに
Application.Repeat にしても無反応でした。
やりかたがまずいのでしょうか?
投稿日時:2010/01/25 18:31
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ