0

ドキュメント レベルの Excel プロジェクトに取り組んでいます。これは 3 番目のバージョンです。

ワークシートの 1 つにリスト オブジェクト (データベースから供給されたデータ) が含まれています。次に、次のような数式を含むセルがあります

this.Range["F15"].Formula = "=COUNTIFS(HotList_ListObject[Product],E15,HotList_ListObject[Got_Interest],\"<>\")"

以前は、ドラッグ アンド ドロップだけでテーブルを作成していました。次に、ワークシートに数式を作成するだけです。数式はリストオブジェクト (上記の HotList_ListObject) のデータとして再計算されました。

今回はコードでテーブルを作成しました。Hotlist_ListObject はアプリケーションが実行されるまでワークシートにないため、リスト オブジェクトをコードで作成した後で数式を指定します。

私はインターネットを調べて、いくつかのテストを行いました。

F9、SHIFT+F9、CTRL+ALT+F9 を押しても再計算されません。

CTRL + SHIFT + ALT + F9を押したときだけ、再計算します

CTRL + SHIFT + ALT + F9で見つけた説明は

依存する数式を再チェックし、最後に変更されたかどうかに関係なく、開いているすべてのブックのすべての数式を計算します。

数式はコードによってワークシートに提供されているため、依存する数式などへのリンクを作成しないため、再計算されないようです。(たぶん、こんな感じ)

私のユーザーは、リスト内のレコードを変更/追加/削除するたびにボタンを押すつもりはありません。

これを解決するにはどうすればよいですか? リスト オブジェクト内の何かが変更されるたびに数式を再計算する必要があることを Excel に伝える方法。

事前にアドバイスをありがとう!

敬具 マーク

4

2 に答える 2

1

計算を手動に設定しますか:

xlApp.Calculation = XlCalculation.xlCalculationManual;
xlApp.ScreenUpdating = false;
xlApp.DisplayAlerts = false;
xlApp.UserControl = false;
xlApp.EnableEvents = false;

次に、Hotlist_ListObjectにデータを入力し(アプリケーションが実行されるまでワークシートにはありません)、計算を自動に設定します。

xlApp.Calculation = XlCalculation.xlCalculationAutomatic;
xlApp.ScreenUpdating = true;
xlApp.DisplayAlerts = true;
xlApp.UserControl = true;
xlApp.EnableEvents = true;

問題を解決しますか?できない場合は、問題を説明するために必要最低限​​のコードを投稿してください。

于 2013-02-18T05:55:14.253 に答える
0

オプション設定は確認しましたか?Altこれは、マクロによって手動にリセットされる可能性があります ( + F11forを使用してマクロ エディターでxlCalculateManual確認し、計算を自動に戻す前にマクロが停止されていないことを確認してApplication.Calculation = xlCalculationAutomaticください。計算をオフにすることは、マクロを高速化するためによく使用される方法ですが、マクロが途中で終了しても、この手動計算設定は維持されます。

マニュアル設定はこちら。

ここに画像の説明を入力

于 2013-02-18T11:57:22.800 に答える