[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの値を(空から空へ)変更した際のエラー回避策について』(D.S.)
Worksheet_Changeイベントにて、
セルの値を変更した際、変更前の値beforeと変更後の値afterに
値を格納し、成功したらメッセージボックスで"変更前後のセルの値を取得しました"と
出力するプログラムを書いています。
空のセルに適当な値を入力してEnterで決定したり
適当な値が入ったセルを選択後、この値を変更しないままEnterを押下したりした場合、
この処理は成功するのですが、
空のセルを選択(ダブルクリック)後、空欄のままEnterを押したり、
空のセル上でDeleteを押したりすると
実行時エラー'1004';
'Undo'メソッドは失敗しました:'_Application'オブジェクト
といったエラーメッセージが出て、処理に失敗してしまいます。
空のセルを選択(ダブルクリック)後、空欄のままEnterを押したり、
空のセル上でDeleteを押したりした場合の回避策がわからないので、
教えて頂きたいです。
よろしくお願い致します。
Private Sub Worksheet_Change(ByVal Target As Range)
' セルの変更前と変更後の値を取得 Dim before As Variant Dim after As Variant
after = Target.Value Application.EnableEvents = False Application.Undo before = Target.Value Application.EnableEvents = True
MsgBox "変更前後のセルの値を取得しました" End Sub
< 使用 Excel:Excel2007、使用 OS:Windows10 >
試してみたのですが、エラーにならないのですが?
(マナ) 2018/01/21(日) 13:07
ご回答ありがとうございます。
私の方で、再度
新規ファイル(.xlsm)を作り、
VBEのSheet1にソースコードをコピペして
Sheet1の任意のセル上で再試行してみましたが、
やはり同様のエラーが発生します。
Windows7とエクセル2013の組み合わせでも同様のエラーが発生します。
マナ様の開発手順、あるいは開発環境と何か異なる点はありますか?
(D.S.) 2018/01/21(日) 14:12
私も試してみましたがエラーは出ませんでした。 ちなみに環境はWindows8.1、Excel2016です。 (bi) 2018/01/21(日) 14:23
undoできないときはredoが実行される
redoもできないときは、エラーということでしょうか?
(マナ) 2018/01/21(日) 14:36
(マナ) 2018/01/21(日) 14:39
ああ、最初にその操作をするとエラーが出るということでしたか。 あまりいい方法ではないかもしれませんが
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
' セルの変更前と変更後の値を取得 Dim before As Variant Dim after As Variant
after = Target.Value Application.EnableEvents = False On Error GoTo myError Application.Undo before = Target.Value Application.EnableEvents = True
MsgBox "変更前後のセルの値を取得しました" myError: MsgBox "エラー回避"
End Sub (bi) 2018/01/21(日) 14:48
(bi)さん、それだとApplication.EnableEvents = Falseのままですよ。
それと途中にExit Subが必要です。
(γ) 2018/01/21(日) 14:57
γさん、指摘ありがとうございます。失礼しました。 (bi) 2018/01/21(日) 15:14
至らない所ばかりで申し訳ありません。
さて、コードの意図ですが、
現在、あるソフトを作成しています。
入力が必須のセルと入力されたくないセルがあり、
入力が必須のセルについては、afterの値を設定します。
入力されたくないセルについて、
何か入力があった時(つまり、Targetが変更され、beforeが空のとき)、
"このセルへの入力はできません"と出力し、
Targetの値をbeforeに設定し直したいと考えていました。
その動作の一部を提示していたわけです。
また、掲示板にて質問するのが初めてであったこともあり、
マルチポストに関する礼儀等わからなかったもので、
無礼をお許しください。
もう一つの質問は削除致します。
Undoすべきアクションがないことが原因なのですね。
解決策がわからないのですが、教えて頂けますか。
(D.S.) 2018/01/21(日) 16:01
(γ) 2018/01/21(日) 16:32
ご回答ありがとうございました。
また、不明点などあれば質問します。
(D.S.) 2018/01/21(日) 16:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.