質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

35573閲覧

VBA「元に戻す」機能を作るには?

webillion

総合スコア33

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/05/14 09:44

前提・実現したいこと

勤務時間を管理するアプリケーションを作っています。
VBAで書いた内容をシートには反映させたところ、意図しない入力がなされてしまうケースがあります。

そこでUndo処理を行いたいのですが、VBAのコードにそもそも「一つ前に戻す」コードがあるのかどうか
知りたいです。

調べてもイマイチ、ヒットしなかったので、どのようにすればVBAのコードで「一つ前に戻す」ができるのか
ご教示願いたく。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Office365 Excel
ここにより詳細な情報を記載してください。
windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/14 10:09

「意図しない入力がなされてしまうケース」とは何でしょうか? VBAにバグがある以外の理由でしょうか?
webillion

2020/05/14 10:33

はい。VBAのバグではなく例えば、A1セルにVBAから入力しようとしたところ、B1セルに入力されてしまうケースです。コードの書き間違いで起る類のものです。
meg_

2020/05/14 10:57

それはバグですよね。私が「VBAのバグ」と書いたのは言語仕様にバグがあるという意味ではなく、コードのバグのことです。
guest

回答3

0

VBAで行った処理を元に戻すという機能はありません。
但し、「元に戻す」操作(Ctrl+Z等)に自前の処理を結びつける事はできます。

以下参考
ユーザーフォームで Undo機能を使うには?

投稿2020/05/14 10:15

sazi

総合スコア25197

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/14 10:20

その手がありましたか。思いつかなかった
guest

0

ベストアンサー

期待した処理ができるか微妙ですが参考情報として。

onundo メソッド (Excel) | Microsoft Docs

Excel.Application には OnUndo メソッドがあり、VBAの処理の最後に呼び出すことで
「元に戻す」の履歴の作成および、「元に戻す」実行時に行われる処理を指定できます。

しかし、ExcelのVBA特有の「VBAでセルなどを操作すると「元に戻す」の履歴がすべて消える」は健在のため、VBAで行った操作しか戻せません。

vba

1Sub OnUndoSample() 2 ActiveCell.Value = "VBAからの書き込み" 3 4 Application.OnUndo "VBAの処理を戻す(ここは任意)", "OnUndoCallback" 5End Sub 6 7Sub OnUndoCallback() 8 ActiveCell.Value = "もどる" 9 '実際には直前の状態や処理範囲を記録しておいて、適切に処理する必要がある。 10End Sub

投稿2020/05/14 10:44

編集2020/05/14 10:45
imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

毎回の操作履歴を保持、記録しておいて、その記録を呼び出すしかないと思います。

投稿2020/05/14 09:54

m.ts10806

総合スコア80852

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問