Excel にテーブルがあり、ユーザーがセルの値を変更したときに変更を検出したいと考えています。これらの特定の変更を反映するには、セルの位置と古いセルの値を知る必要があります。Excel VBA/COM アドインではこれを実現できましたが、JavaScript では実現できませんでした。
1 に答える
この時点で、場所と古いセルの値を取得する簡単な方法はありません。ただし、より良い方法が見つかるまで使用できるいくつかの回避策を次に示します。
- ユーザーのテーブルの内容を追跡する: 最初にアドインにリンクされたときに、テーブル全体を取得できます。バインディングを追加し、BindingDataChangedイベントをリッスンして更新を検出します。更新があるたびに、自分のコピーと手動で比較できます。アドインを再起動すると、Settingsオブジェクトを使用してメモリ内コピーを再初期化できます。
-BindingSelectionChangedイベントとDocument.SelectionChangedイベントを使用して、テーブル内のユーザーの選択を追跡します。次に、テーブル内のデータが変更されるたびに、保存されたBindingSelectionChangedEventArgsを使用して、ユーザーが変更を加えたときにどのセルが選択されたかを判断します。ユーザーが何もしなくても、テーブルへの変更が発生する可能性があることに注意してください。たとえば、別のアドインがコンテンツを変更する可能性があります。また、BindingSelectionChangedEventArgs は、最初の位置ではなく、変更後のユーザーの選択の最終的な位置を報告することに注意してください。そのため、ユーザーがセルを変更しても、テーブル内で選択を保持する場合は常に、最後から 2 番目の位置を使用する必要があります。
また、アドインの動作によっては、上記の回避策を実際に使用する必要がない場合もあります。たとえば、テーブルが小さい場合、変更があるたびに必要な列を完全に上書きできます。
-Michael (アドイン チームのプログラム マネージャー)