我正在开发一个文档级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中每次更改任何内容时重新计算。
提前感谢您的任何建议!
亲切的问候 标记
答案 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设置为自动。关闭计算是一种常用的加速宏的方法,但是当宏退出中途时,此手动计算设置将保持不变。
这是手动设置。