使用Range的excel性能

我是VBA的新手,现在我正在开发一个速度绝对一切的项目。 所以当我写代码的时候,我注意到工作表中的很多单元格都被命名为范围,并且在函数中被明确地引用,如下所示:

function a() if range("x") > range("y") then end if ... (just imagine a lot of named ranges) end function 

我的问题是,我应该修改这些函数,以便这些命名范围中的值作为parameter passing:

 'i can pass in the correct cells when i call the function function a(x as int, y as int) if x > y then end if ... end function 

这会加快一点吗? 这些function几乎不断地被调用(除了当进程被有意睡觉时)与RTD服务器通信。

VBA与工作表的“连接”要比处理自己的variables慢得多。 如果你的函数不止一次地引用同一个单元格(或范围),那么在VBA与它们交互之前将它们加载到内存中将是有利的。 例如,如果range("x")>range("y")是函数中唯一一个xy被引用的时间,那么它就不重要了。 如果你有if range("x")>range("a")if range("x")>range("b")等等,那么你会好得多开始你的function

 varX=range("x") varY=range("y") 

然后使用VBAvariables。

看起来,通过参数化函数,你的第二个例子显示完成了我的build议。 这可能会也可能不是这样,因为Excel可能只是将这些variables作为工作表的引用而不是值(我不确定)。 为了安全起见,你应该在你的函数的开头专门定义新的variables,然后在函数的其余部分只引用那些variables。

总结上面的文字墙,你的目标应该是尽量减lessVBA“连接”到工作表的次数。