我对在 Excel 2007 中运行具有一定并发级别的宏有疑问/问题。
这是我的情况。
(1)我使用的是Excel 2007
(2) 我的电脑是 Intel 双核电脑。
(3) 对于本次测试,宏非常简单,定义在模块中。
声明子 sleep 库“kernel32”(ByVal dwMilliseconds As Long)
函数 simple_macro() sleep 1000 simple_macro =“ Hello World ” 结束函数
(4) 我在工作表中的 100 x 100 个单元格中填充“=simple_macro()”。
(5) 无论我在选项中启用还是禁用多线程功能,完成处理宏所需的时间都是相同的。看起来 Excel 调度程序正在线性评估单元格...
如果我的宏正在执行一些 CPU 密集型处理,这是可以理解的,但正如您所看到的,它非常简单,并且每个单元都独立于其他单元,因此它应该在几秒钟内完成。
您对同时评估细胞有什么建议吗? Excel 2007 支持多线程吗? (例如评估时充分利用多个CPU核心)
请您参考如下方法:
尽管 Excel 2007 计算引擎支持多线程,但 Excel VBA 不支持。
因此,用 VBA 编写的用户定义函数被 Excel 视为非线程安全的。