• ベストアンサー

エクセル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

  • VBAエクセル2003でのマクロの実行について

    VBAで2003を使っています。 マクロの実行をショートカットキーで操作したいのですが ツール→マクロ→オプションでショートカットキーの作成が可能ですが 会社(エクセル2003)のでやろうとすると オプションの表示がありません。 (もしかしたら2003ではないのかもしれませんが、確認した範囲では 2003かと思われます。2010とかいいのではないのは確かです。) ショートカットキーを作る方法でどのような方法が 他にありますか?教えてください。 お願いいたします。

  • PHOTOSHOP CS3の UNDOについて 

    PHOTO-SHOPについて教えてください。 ** UNDOはCTRL-Zのショートカットキーで動作するんですが、historyは最大の1000にセットしています。 しかしながら、crtl-Zすると、操作がどんどんとは戻らないで、1つ前に戻る動作と採集の操作後を行ったり来たりで、希望の位置まで戻ることができません。これは、どういうことでしょうか? 例えば、20回の操作を逆に再現したりはできないのでしょうか? ctrl-z   shift-strl-z で 逆戻しとその逆を再現したいのですが。。 よろしくおねがいいたします。

  • (vba)他のアプリケーションの右ctrlキーを押すには?

    excelのvbaを使って、他のアプリケーション(3270エミュレータ)上で、実行キーに割り当てられている「右ctrlキー」または「テンキーのenterキー」を押すようにしたくて、sendkeys "^"やsendkeys "{enter}"を使ってみましたが、うまくいきません。どうしたら良いでしょうか?

  • エクセルVBAでセルの書式設定を出すには

    「セルの書式設定」のダイアログを出すには メニューの「書式」-「セル」-「セルの書式設定」-「罫線」を順番に選らばなければなりません。 これをショートカットキーなどで一発で出す方法はないでしょうか。 恐らくVBAでSendkeysを使って行うことになると思うのですが、 最初のAlt-o、Alt-eは分かるのですが、最後に複数タブからどうやって「罫線」をだしたらよいのでしょうか。 また、Sendkeysを使わないやりかたがあったら教えていただけないでしょうか。 よろしくお願い申し上げます。

  • 【VBA】 VBAを使ってExcelにSendMessageしてメニューを実行したい

    エクセルにおいて、VBAを使ってExcelに対してSendMessageをおこないメニューを実行したいのですが、メニューのSendMessageの引数WPARAMとLPARAMに 何を渡せば良いのでしょうか?SPY++を使ってメニューを実行したときにExcelに送られるWM_COMMANDを監視していましたがWM_COMMANDが見つかりませんでした。 ご存知の方、ご教授お願いします。 ちなみに、オートシェイプ選択時に「書式」-「オートシェイプ」メニューを実行し、書式設定ダイアログが表示され、オートシェイプの書式設定を変更するのが目的です。(VBAを使って書式設定のダイアログを表示する必要あり) SendKeysステートメントを使ってやってみましたがダメでした。この場合、モードレスダイアログに書式設定するコマンドボタンを配置し、そのボタンをクリックしたときにSendKeysを実行するもので、モードレスダイアログを表示している間はキーがモードレスダイアログに送られると判断してSendKeysの使用はやめました。

  • VBAでやり直しのショートカットキー

    Excelやwordでは Ctrl+yキーに、Ctrl+zキーのやり直しが割り当てられていますが、 Excel VBAでは http://span.jp/office2010_manual/excel_vba/reference/excel-vba-shortcut.html 行の削除が割り当てられています。 これをExcelやwordと同様に「やり直し」操作を割り当てたいのですが どのようにすれば良いですか? あるいは、他のショートカットキーに「やり直し」操作はありますでしょうか?

  • エクセルでユーザーフォームをvbaで作る

    アクセスでフォームをvbaで作る時はCreateFormメソッドで出来ましたが エクセルでユーザーフォームを作る場合はどうすればいいですか? エクセルのオブジェクトブラウザでMSFormsライブラリでCreateで検索しても何もヒットしないことから Createじゃないメソッドで行うと思うのですがどのメソッドでしょうか?

  • EXCEL VBA 他のアプリケーションからの自動貼り付け

    OSはWIN XP HOME, EXCELは2002を使用しています。 よろしくお願いします。 ●現在の運用 1.全く別のアプリケーションの情報をコピー(ユーザー操作) 2.sheet1のセル"a10"を一度左クリック後、右クリックして貼り付け(ユーザー操作) 3.マクロ実行(ユーザー操作) ●上記の運用を以下のようにしたいと思っています。 1.全く別のアプリケーションの情報をコピー(ユーザー操作) 2.マクロ実行(ユーザー操作) つまりマクロのはじめの部分に Range("a10").Select ActiveSheet.Paste というような内容を挿入した後に本来のマクロを実行したいのですが、ActiveSheet.Paste のところで「Worksheetクラスの Paste メソッドが失敗しました。」と表示されてしまい、うまく行きません。 ユーザーがクリックする場所をA9や B10などを選択してしまうと期待する結果が出ないため、是非とも対応したいと思っています。よい方法はないでしょうか?

  • エクセルVBAの実行時エラー1004の解決方法

    Private tm As Double Sub Auto_Open() Call 更新 End Sub Sub 更新() Application.Calculate tm = [now()+timevalue("00:00:10")] Application.OnTime tm, "更新" End Sub '===================================================== Sub 更新やめ() Application.OnTime tm, "更新", , False End Sub この様なVBAがあります。 ここで「Sub 更新やめ()」のVBAを何度も実行すると「実行時エラー’1004’:’OnTimeメソッドは失敗しました;’_Application’オブジェクト」と表記されます。 何度も実行しても上記の表示が出ない様にする為のVBAはどの様に改造すれば良いでしょうか?

  • 【VBAからExcelを終了させる時の質問】

    VBAからExcelを終了させるロジックを実行すると、Excelで編集されている場合は、「保存しますか?」メッセージを聞いてきますが、そこで「いいえ」を自動的に選択した状態で、ユーザの操作は無しにしたいのですが、可能でしょうか? 宜しくお願いいたします。

専門家に質問してみよう