内存泄漏工作表functionexcel 2016

我有一个子程序循环计算很多次。 最近在Excel 2016中,我已经开始耗尽内存。

下面的演示代码在2010年,2013年,甚至2016年Mac都可以使用,但是在2016年,对于Windows,它在内存中积累了大约500MB的内存,直到退出Excel才释放。 不知道2016年已经有多久了, 刚刚开始注意到昨天。

它似乎是导致泄漏的工作表函数。 我在我的真实循环中使用了许多工作表函数。 任何想法如何冲洗这个?

Sub MemTest() iend = 1000000 For i = 1 To iend deg2rad = Application.WorksheetFunction.Pi / 180 deg2rad = Empty Next i End Sub 

Application.WorksheetFunction.Pi是一个常量,所以在代码的开始定义为常量。然后deg2rad = Empty是没有意义的,因为重新生效。

 Sub MemTest() iend = 1000000 const cPI = application.WorksheetFunction.Pi 'don't call it iend time For i = 1 To iend deg2rad = cPI / 180 'or deg2rad = 3.14159265358979 /180 Next i End Sub 

有时候你应该用一个“睡眠”或“等待”事件来缓解处理器

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 

我正在写关于2016年的内存泄漏的更新。似乎这个问题不是我的代码。 感谢那些指出关注工作表function的人是反模式的。

我在12月底第一次注意到内存泄漏。 在Xmas上,其他人在这个论坛和其他论坛的其他主题上发布了类似的发现,微软已经回答说,这是Excel 2016中的一个错误,不能正确释放内存。 在下面的链接中有一个修复,希望有一个更新,以尽快妥善解决它。

http://answers.microsoft.com/en-us/office/forum/office_365hp-excel/excel-2016-macro-crashes-sometimes-gibes-an-out-of/37a7df04-9d1b-4b6b-b107-e8d0971e324e? AUTH = 1

修正了! 它的版本是16.0.6366.2062,于16年1月25日开始推出。 如果您还没有更新,请转至文件>帐户>更新选项>立即更新。

谢谢你的耐心。

Anneliese来自Office团队。