[[20150701111824]] 『vba 実行前に戻す』(yukina) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vba 実行前に戻す』(yukina)

コマンドボタンなどでマクロを実行したあとに、その実行を取り消す?というかボタンを押す前の状態に戻すことってできますか??

実行のコマンドボタンを押すと指定のセルに色を付ける

一つ前にもどるコマンドボタンを押すと色を付ける前の状態に戻す

こんな感じです。こんなことって可能なんでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows7 >


実行前に別シートにコピーしておけば

どうでしょう
(Hara) 2015/07/01(水) 12:03


Haraさん

使うたびに毎回するのは少し手間な気がします。
(yukina) 2015/07/01(水) 13:08


 もちろんマクロで行うのですよ。

(cai) 2015/07/01(水) 13:24


 削除されていたので復活


 いわゆる、エクセル機能の「元に戻す」といった機能(Undo,ReDo)は、マクロ処理したものには適用されませんね。

 で、「こんな感じです。」なんですが、「一般的な、汎用的な処理」はやっかいですね。
 やるなら、caiさんが言っておられるように「復元ポイントごと」に、その処理前の状態を保存しておき、そこから戻す。
 保存の世代を複数にしておけば、元に戻し、さらに元に戻すということも、あるいはその逆もできそうですね。

 ただし、やはり『汎用的』なものではなく、個別のテーマに絞って、たとえば F10への色つけ といったものに絞り
 その状態を履歴で(世代で)保持しておいて、扱うほうが、シンプルでいいような気もします。

(β) 2015/07/01(水) 15:47


 マクロの処理は、Application.Undoでは適用されないは 既述されたとおりなのですが、
 簡単な仕組みのマクロなら という前提だと
 キーストロークで処理されたマクロ Sendkeysで処理されたコードは元に戻せます。

 例えば、

 Sub test()
    ActiveCell.Activate
    SendKeys "ichinose{ENTER}"
 End Sub

 このtestで実行された結果は、Application.Undo で元に戻ります。

 この性質を使い「セルに色を付ける」を元に戻せないか ということなのですが・・・。

 セル塗りつぶしのショートカットキーが見つけられません。

     SendKeys "^1"

 とすると セルの書式設定ダイアログは表示されますが、これは、大変なので止め。

 塗りつぶしを行う処理をクイックアクセスツールバーに登録してみてはどうか 検討しました。

 オプションのクイックアクセスツールバーを選択します。

 基本的なコマンド内に 塗りつぶしの色というのがありますから これを クイックアクセスツールバーに登録します。

 登録後、 Altキーを押してください。 クイックアクセスツールバーに登録した塗りつぶしアイコンに番号が表示されます。

 この番号が実行するショートカットキーです。5と表示されれば Altキーを押した後 5で塗りつぶし処理が開始します。

 適当なシートにフォームのボタンを貼り付けます。このボタンに以下のコードを登録します。

 Sub 色塗りつぶし()
    SendKeys "%", True
    DoEvents: DoEvents
    SendKeys "6", True   '私の環境では Altキーで6と表示されたので ここは6を送りました 表示のまま変更する

    SendKeys "{DOWN 6}"
    SendKeys "{RIGHT}"
    SendKeys "^+{ENTER}"
 End Sub

 これは、必ず ボタンに登録してください。

 私に環境では、これで赤に塗りつぶされました。

 この処理は  Application.undo で 元に戻りました。

 検討してみてください。

(ichinose) 2015/07/02(木) 06:56


 別案(未検証)

 条件付き書式を使えば 元にもどすのも意外と簡単に見えますが、これも検討して見てください

(ichinose) 2015/07/02(木) 07:22


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.