Excel无法愉快地显示较大的2D Range FormulaArray

时间:2018-08-13 20:12:05

标签: c# c++ excel excel-vba

我有一个XLL,它返回带有FormulaArray的Range的2D数组类型的LPXLOPER结果。

事情进展顺利,<1s更新,直到我达到大约50x200的大小为止。那时,Excel在1%内核的100%使用率下一直闪烁“ Ready(漂亮的Excel图形)”和“填充单元格(空白进度栏)”,并在返回值之前持续不到半分钟。

在100x100分辨率下,需要8-10分钟。

在200x100分辨率下,我仍在等待它返回。

在所有情况下,代码都是相同的。我浏览了VB,它挂在调用RUN(...)以填充数据数组上。不再执行任何代码。我在我的XLL中放置了断点,但没有碰到任何断点。我闯入了Excel,它正在EXCEL.EXE或我什至不知道存在的库中执行Excel的工作。

任何人都知道(a)尽管Excel显然还没有准备好,但当它说“就绪/填充单元格”时Excel正在做什么,以及(b)为什么数据量会非线性增长?

1 个答案:

答案 0 :(得分:0)

我测试了一个返回200x100数组的XLL,它实际上是瞬时的。因此,问题必须是依赖关系建立或计算或擦除/建立单元格表。

尝试
-将计算切换为手动以关闭计算
-将forcefullcalculation设置为true以关闭依赖关系构建
-使用空的工作簿进行测试,看是否是由工作簿内容引起的