Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel自定义项打开后是否会进行计算?_C#_Excel_User Defined Functions - Fatal编程技术网

C# Excel自定义项打开后是否会进行计算?

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将不会。 嗯,这和我看到的不符。不一定

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