[[20210119112635]] 『Application.OnUndoについて』(しのみや) ページの最後に飛ぶ

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

 

『Application.OnUndoについて』(しのみや)

 VBA実行後に元に戻す機能を有効にする方法として、
 Application.OnUndoを知りました。

 【ThisWorkbookに記述】
 Sub TEST()
     ActiveCell.Value = "vbaからの書き込み"
     Application.OnUndo "書き込みを戻す", "戻す"
 End Sub

 Sub 戻す()
     ActiveCell.Value = "戻"
 End Sub

 【状況】
 VBEの画面でSubTESTをF5で実行します。
 青い矢印の元に戻るボタンにマウスを合わせると、「書き込みを戻す」となっています。

 元に戻るボタンをクリックすると、
 「マクロ"\\○○○\Desktop\TEST.xlsm'!戻す'を実行できません。
  このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」と
 なります。

 マクロのセキュリティは、すべてのマクロを有効にするとなっています。

 【試してみたこと】
 VBEの画面でSubTESTをF5で実行します。
 ツール-マクロ-マクロの表示で、「ThisWorkbook.戻す」を実行すると、
 必要な結果が得られました。

 【問題点】
 青い矢印の元に戻るボタンで戻すを実行したいのですが、
 どこを直せばよいのでしょうか

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


 Sub TEST()
     ActiveCell.Value = "vbaからの書き込み"
     Application.OnUndo "書き込みを戻す", "ThisWorkbook.戻す" ' ← ThisWorkbookで修飾する
 End Sub

 ThisWorkbookに書いてますからね。
 標準モジュールならそのままいけます
(´・ω・`) 2021/01/19(火) 11:51

  (´・ω・`)さん ありがとうございます。
  解決できました。助かります。
(しのみや) 2021/01/19(火) 12:05

 もう一つわからないことが出てきましたので、教えて下さい。

 「元に戻す」と「やり直し」の操作ができるようにしていまして、
 以下のようにしました。

 【Module1の記述】
 Sub 書き込み()
  Range("A1").Value = "vbaからの書き込み"
  Application.OnUndo "書き込みを戻す", "戻す"
 End Sub

 Sub 戻す()
  Range("A1").Value = ""
  Application.OnRepeat "書き込みをやり直し", "書き込み"
 End Sub

 【動作】
 Sub書き込みを実行する
 ↓
 A1に"vbaからの書き込み"が書き込まれる
 元に戻すの青矢印が押せるようになる
 ↓
 元に戻すを押す
 ↓
 A1の文字がクリアされる
 やり直しの青矢印が押せるようになる ←ここが、押せるようにならないのです…

 Ctrl+Yを押すと、
 A1に"vbaからの書き込み"が書き込まれる
 元に戻すの青矢印が押せるようになる ので、キーボード操作はできている様子です。

 何かやり方がおかしいのでしょうか。
(しのみや) 2021/01/19(火) 16:58

 Undo は、【元に戻す】です。 アイコンは、反時計回りの半円形の矢印
 Repeat は、【繰り返し】です。 アイコンは、反時計回りの円形の矢印
 時計回りの半円形の矢印は、【やり直し】です。 英語にするなら ReDo

 Applicaiton.OnRedo というプロパティは無いようなので、無理なのでは。

 ちなみに、操作では、Repeat も ReDo も Ctrl-Y です
(´・ω・`) 2021/01/19(火) 17:30

 >VBA実行後に元に戻す機能を有効にする方法として、
 >Application.OnUndoを知りました。

 誤解されているような気がしまっす。

 以下は2010のヘルプですが
 >メニューの [元に戻す] に表示するメニュー項目名や、クリックしたときに実行されるプロシージャ名を設定します。
 と書かれています。
 これは、VBA実行後に元に戻す(実行前の状態に戻す)という意味ではないです。
(チオチモリン) 2021/01/19(火) 18:48

 ありがとうございます。
 多少理解があやしかったのですが、
 おかげさまできちんと理解できました。

 Ctrl-Yで、動作はしてくれているようですので(確認中)
 あとはやり直しのアイコンが押せる状態になれば、よいのですが…
 たしかにReDoの状態は見当たりませんね。

 うーん
(しのみや) 2021/01/19(火) 23:10


コメント返信:

[ 一覧(最新更新順) ]


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