アプリ版:「スタンプのみでお礼する」機能のリリースについて

excel2003で以下の様に記述しました。

Sub clear()
Range("A1", "B3").Value = ""
End Sub

上記でフォームボタンをクリックして、指定したセルの内容を空白にすることはできたのですが、
ctrl+zで元の内容を戻そうとしたところ、できませんでした。

なにか方法があれば、ご教示お願いします。

A 回答 (3件)

Undo のヘルプには


------------------------------------------------------------
備考
Undo メソッドは、マクロを実行する前にユーザーが実行した最後の操作を元に戻す場合にだけ使用できます。
このメソッドは、マクロの先頭に記述する必要があります。
Visual Basic で実行したコマンドは元に戻すことができません。
------------------------------------------------------------

『Visual Basic で実行したコマンドは元に戻すことができません。』
ユーザーが手作業?で行ったものに関してはアプリケーションで順次履歴を記憶して行きますが
VBAで行ったものは範疇にありません。
なので、Ctrl+Zでも戻せません。

Copyメソッドか何かでどこかに退避させて、Ctrl+Z の代わりに Ctrl+V とか?
コピー先のセル範囲を指定します。この引数を省略すると、クリップボードにコピーします。
    • good
    • 0

残念ながら


http://nyama.jpn.org/otto/xlstip.shtml

マクロのやり直し(2001/11/24)
マクロを実行は基本的にやり直すことが出来ません。あとで、選んだセルが間違っていることに気づいてもどうにもならないのです。「基本的な命令ばっかり使っているのになぜ??」と思います。
とあります。参考にしてください。
    • good
    • 0

使ったことはありませんが


Application.OnUndo
で実現できそうです。

ヘルプなどを見てがんばってみてください。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!