Excel UDF会在打开时进行计算吗?

时间:2014-07-16 16:45:52

标签: c# excel user-defined-functions

我的Excel 2007设置为自动计算模式。 我有两个Excel文件。两个文件中都使用了MyUDF(多个单元格)。 当我在Excel中打开一个文件时,我注意到没有计算MyUDF。 但是当我打开另一个文件时,会计算所有MyUDF。 所以我有点困惑,因为UDF何时会在打开时计算,何时不计算? MyUDF是用C#编写的MyAddIn中的UDF

编辑 这两个文件在Excel的同一个实例中打开。 MyUDF不易变质。

谢谢

编辑 我找到了http://social.msdn.microsoft.com/Forums/en-US/b477c05a-ae0a-470c-8ad5-482ecd05944b/xll-addin-does-not-calculate-udf-when-opening-a-workbook?forum=exceldev 它说xla会,xll,vba不会。 嗯,这与我看到的不符。

3 个答案:

答案 0 :(得分:0)

不一定。类似的东西:

Public Function MYUDF() As Date
    Application.Volatile
    MYUDF = Now
End Function

将被重新计算,但是类似于:

Public Function MYUDF() As Date
    MYUDF = Now
End Function

可能无法重新计算。

答案 1 :(得分:0)

在工作簿的Open事件中设置“自动计算”可能是个好主意。您ThisWorkbook对象中的就是这样的 重要!):

Private Sub Workbook_Open()
    Application.Calculation = xlCalculationAutomatic
End Sub

这只是为了确保在工作簿中按预期设置该设置,以避免依赖于Excel应用程序在其选项/设置中具有的计算模式。如果不出意外,至少它消除了为什么会出现这种行为的可能性。

答案 2 :(得分:0)

Excel"帮助"记住调用函数的位置。

由于两个电子表格中的功能相同,Excel可能只是等待另一个打开,因此可以进行计算。检查电子表格中未重新计算的公式,看看它是否已更改为'C:\MyDocs\MyOtherSpreadsheet.xlsb'!MyUDF(A1)

如果有,请搜索完整的电子表格名称(包括用于分隔符的额外字符),并替换为空。

如果还没有,请将计算设置为“自动”。要强制重新计算,请从功能区中选择立即重新计算,按 F9 ,或者执行搜索和替换,并将所有=替换为完全相同