[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.