C# Excel自定义项打开后是否会进行计算?
My Excel 2007设置为自动计算模式。 我有两个Excel文件。两个文件中都使用MyUDF多个单元格。 当我在Excel中打开一个文件时,我注意到没有计算MyUDF。 但是当我打开另一个文件时,所有myudf都会被计算出来。 所以我有点困惑,什么时候可以计算开放式UDF,什么时候不可以? MyUDF是用C编写的MyAddIn中的UDF 编辑 这两个文件在同一个Excel实例中打开。MyUDF不易挥发 谢谢 编辑 我发现 它说XLA意志,XLL,VBA将不会。C# Excel自定义项打开后是否会进行计算?,c#,excel,user-defined-functions,C#,Excel,User Defined Functions,My Excel 2007设置为自动计算模式。 我有两个Excel文件。两个文件中都使用MyUDF多个单元格。 当我在Excel中打开一个文件时,我注意到没有计算MyUDF。 但是当我打开另一个文件时,所有myudf都会被计算出来。 所以我有点困惑,什么时候可以计算开放式UDF,什么时候不可以? MyUDF是用C编写的MyAddIn中的UDF 编辑 这两个文件在同一个Excel实例中打开。MyUDF不易挥发 谢谢 编辑 我发现 它说XLA意志,XLL,VBA将不会。 嗯,这和我看到的不符。不一定
嗯,这和我看到的不符。不一定。比如:
Public Function MYUDF() As Date
Application.Volatile
MYUDF = Now
End Function
Public Function MYUDF() As Date
MYUDF = Now
End Function
将重新计算,但类似于:
Public Function MYUDF() As Date
Application.Volatile
MYUDF = Now
End Function
Public Function MYUDF() As Date
MYUDF = Now
End Function
可能无法重新计算。最好在工作簿的打开事件中设置自动计算。在ThisWorkbook对象中有类似的内容这很重要!:
这只是为了确保在工作簿中按预期设置该设置,以避免依赖Excel应用程序在其选项/设置中的计算模式。如果没有其他原因,至少它排除了一种可能,说明您为什么会出现这种行为。Excel可以帮助您记住调用函数的位置 由于两个电子表格中的功能相同,Excel可能只是等待另一个打开,以便进行计算。检查电子表格中不重新计算的公式,并查看是否将其更改为类似“C:\MyDocs\MyOtherSpreadsheet.xlsb”的格式!MyUDFA1 如果有,搜索完整的电子表格名称,包括它用作分隔符的额外字符,并替换为空
如果没有,请将计算设置为自动。要强制重新计算,请从功能区中选择“立即重新计算”,按F9键,或执行搜索并替换,然后将所有=替换为完全相同的值。谢谢。MyUDF不易挥发。我只是不知道为什么同一个函数在打开时在一个工作簿中计算,而在另一个工作簿中不计算。它们是同一个工作簿,只是两个实例,还是同一个函数在两个不同的工作簿中使用?或者换一种说法,两本工作簿的内容相同吗?两本工作簿的内容不同。但它们使用相同的UDF,即MyUDF