Q&A

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

「セル変更時にアクションセットを実行する」の実行順について

nocs nocs

2023-04-19 14:26

4セルの値を変更するアクションと値変更時にメッセージ表示するアクションを用意
最初に値変更した1だけアクションが実行されず、2 ~ 4のアクションが同時に走っています。(2 ~ 4のアクション終了後に1が実行)

お世話になります。
「セル変更時にアクションセットを実行する」の実行順についてご教示いただけないでしょうか。

「セル変更時にアクションセットを実行する」を複数のセルで行っている場合に、1つのアクションで複数のセルの値を変更した際に何か決まった順番でアクションが実行されるのでしょうか。
検証用に4アクション用意したところ、最初に値を変更したセルのアクションだけが最後に実行され、他の3アクションが同時に実行されているようでしたが、何かのルールまたは設定で決まっていてこのような動きとなっているのでしょうか。

Yexiongmao Yexiongmao
税込入力 → フラグを1に → 税抜金額を設定 → フラグを0 → 税抜金額変更アクションの順に動作されているような結果となっておりました。

デバッグモードで実行してみたら正に上記のような動作でした。
たまたま消費税でやってみたため、同値になって、アクションが起きなかったようです。
セル値の変更アクションはフラグでは制御できないようです。
なにか方法が無いか探って見たいと思います。
nocs nocs
Yexiongmao 様

検証いただきありがとうございます。
同様の処理を作成して実行してみたのですが、フラグでの実行止めがされずに複数回アクションが発生しているようでした。

作成いただいたアクションですと、
税込入力 → フラグを1に → 税抜金額を設定 → フラグを0 → 税抜金額変更アクションの順に動作されているような結果となっておりました。
CELFでは現在のアクションが終了してから値変更のアクションが実行されるようになっているのでしょうか?
Yexiongmao Yexiongmao
こんにちは。

アクションセットの設定セルが、お互いを参照しているような場合を考えてみました。
税抜金額を入力すると、税込金額を表示し、税込金額を入力すると税抜金額を表示するというものです。
循環参照を起こさないように終了条件をフラグ用のセルに設定します。
Flagが「0」の場合はFlagに「1」をセットし、計算を実行して相手セルに書き込みます。
書き込まれたセルはFlagが「1」なので相手セルへの書き込みをスキップして、Flagを「0」に戻して終了します。
Fragを「0」に戻すアクションは、「もし~ならば」の「そうでなければ」の位置に入れたくなるのですが、相手セルへの書き込みがアクションを起こさない場合Flagが「1」のまま残ってしまいます。
相手セルがアクションを起こさない場合とは、現在の値と同じ値が書き込まれた時です。
アクションが終了したら、必ずFlagが「0」になっていなければなりません。
アクションの終了位置で「0」をセットするようにするのが大切です。

アクションでセルに書き込みをして、そのセルが変更時のアクションを持っていて複雑に絡み合っているような状態は実行の順番がどのようなものであっても同じ結果になるようにしなければならないので、非常に難しいです。

nocs nocs
日本コンピュータシステムご担当者様

ご確認いただきありがとうございます。

実行順について担保されていないとのこと承知いたしました。

今回行いたい動作として、直接セルを入力した場合[変更時のアクション]を実行させ、
[別アクション]でセルの値変更時は[変更時のアクション]を実行させないようにしたく、
その場合に[別アクション]実行時に別セルに1を設定し、1が設定されている場合は処理させないよう[変更時のアクション]に記述するよう考えていたのですが、別セルに設定した1を処理終了後にクリアするすべがないため、セル変更時のアクション順が決まっているなら最後に処理されるアクションでクリアさせようかと考えておりました。
上記の動作を実現させる場合「セル変更時にアクションセットを実行する」をどのように制御させるのが良いでしょうか。
日本コンピュータシステム(CELFチーム) 日本コンピュータシステム(CELFチーム) パートナー
こんにちは。

動作確認を行いましたが同様の事象となりました。
そのため、CELFのHelpを確認しましたところ、「セルの値の更新時にアクションセットを実行する(基本編)」の「注意」に
「アクションで値を変更した場合も実行されます。この場合も、実行されるタイミングは保証されておらず、意図したタイミングでアクションセットが実行されない場合があります。」との記載がございましたので順番での実行は担保できないと想定されます。
詳細は下記URLをご参照ください。


■セルの値の更新時にアクションセットを実行する(基本編)
https://cloud.celf.jp/celf-help/ja/texts/action_make/specify_action_when_cell_value_changed_1/specify_action_when_cell_value_changed_1.html


以上。
メールコンタクトをとる