Excel c#Issue - 不重新计算公式

时间:2013-02-18 05:06:26

标签: c# excel

我正在开发一个文档级excel项目。这是第三个版本。

其中一个工作表包含一个列表对象(从数据库提供的数据)。然后有单元格包含如下的公式

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

之前,我只是通过拖放创建了表格。然后在工作表中简单地创建一个公式。并将公式重新计算为listobject中的数据(上面的HotList_ListObject)。

这一次,我通过代码创建了表。因为Hotlist_ListObject在应用程序运行之前不在工作表上,所以我在按代码创建listobject后提供公式。

我浏览了互联网并进行了几次测试。

当我按F9,SHIFT + F9和CTRL + ALT + F9时,它不会重新计算。

仅当我按CTRL + SHIFT + ALT + F9时,才会重新计算

我为CTRL + SHIFT + ALT + F9找到的解释是

重新检查相关公式,然后计算所有打开的工作簿中的所有公式,无论它们自上次以来是否已更改。

似乎因为公式是通过代码在工作表中提供的,所以它不会创建到依赖公式或其他东西的链接,因此不会重新计算。 (我想这样的事情)

我的用户每次修改/添加/删除列表中的记录时都不会按下按钮。

我该怎么做才能解决这个问题?如何告诉Excel公式需要在listobject中每次更改任何内容时重新计算。

提前感谢您的任何建议!

亲切的问候 标记

2 个答案:

答案 0 :(得分: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;

解决问题?如果没有,请你发一些简单的代码来说明这个问题。

答案 1 :(得分:0)

您是否检查了选项设置?这可能会被宏重置为手动(使用宏编辑器使用 Alt + F11 检查xlCalculateManual并确保宏未在{{1}之前停止执行将calaculations设置为自动。关闭计算​​是一种常用的加速宏的方法,但是当宏退出中途时,此手动计算设置将保持不变。

这是手动设置。

enter image description here