0

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

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

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

以前,我只是通过拖放来创建表格。然后只需在工作表中创建一个公式。并且公式被重新计算为 listobject 中的数据(上面的 HotList_ListObject)。

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

我浏览了互联网并进行了一些测试。

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

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

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

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

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

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

我能做些什么来解决这个问题?如何告诉 Excel 每次在 listobject 中发生任何变化时,公式都需要重新计算。

感谢您提前提供任何建议!

亲切的问候马克

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 回答