Q&A

回答の並べ替え:
投稿新規に質問を投稿する

セル更新の判定方法について

sotsuka sotsuka

2020-01-14 09:32

入力画面で項目が変更されたら、画面終了ボタンを押下時に「内容が更新されています。終了しますか。」などのメッセージを表示させたいです。

実現方法として、下記2パターンを考えています。
①更新前の値を非表示のセルに設定しておき、更新前の値と更新後の値を比較する。
 ⇒項目数が多い画面があるため、手間がかかる。(数百項目ある画面があります)
②画面全体にセル更新時のアクションを設定し、当アクション内で、更新フラグを設定する。画面終了時には更新フラグを判定する。
 ⇒シート表示時のアクションでセルを編集させると、その時点で更新されたと判定され更新フラグが設定されてしまう。そのため、セル更新の判定ができない。


できれば、②の方法で行きたいと思いますが、シート表示時のアクションが邪魔して、シート表示後に手でセルを更新したの判定ができません。

なにか良い方法はあるでしょうか。(やはり①の方法しかないのでしょうか)

Yexiongmao Yexiongmao
シート表示時のアクションが、シート表示の前に実行され、シート表示後にセル更新のアクションが実行されるということですね。
であれば、シート表示時のアクションで変更されるセルに、入力時のみフラグを立てるよう条件設定をする必要があると思います。
3件まえのG.B.さんの質問の回答が参考になると思います。
sotsuka sotsuka
Yexiongmaoさん、回答ありがとうございます。

動作を見ますと、どうも、シート表示時のアクションを終了後に、セル更新のアクションが自動実行されるようです。
そのため、②でシート表示アクションの最後に、フラグを初期化しておいても、期待する動作にはならないようです。

簡単にテストを実施したところ、下記ロジックを実行時は、画面に入力可能な状態になった時に、フラグはTRUEとなっています。
・シート表示時のアクションの最後にフラグにFALSEを編集
・セル更新時のアクションに、フラグにTRUEを編集

つまり、画面の初期表示時は、「シート表示時のアクションの実行」⇒「シート表示時で更新されたセルについて、セル更新のアクションを実行」の順序で処理を実施しているようです。
Yexiongmao Yexiongmao
こんにちは。

②でシート表示アクションの最後に、フラグを初期化しておけばよいのでは無いでしょうか?