【发布时间】:2017-10-10 12:50:29
【问题描述】:
在 VBA 中,以下哪个 if 语句会执行得更好?
上下文:我正在遍历工作表以查找条目。
if [condition1] and [condition2] and [condition3] then
*do something*
end if
或
if [condition1] then
if [condition2] then
if [condition3] then
*do something*
end if
end if
end if
我的直觉是第二个陈述,因为它只需要在进行下一次迭代之前检查一个初始条件,但这是这样吗? 另外,有没有更好的方法呢?
【问题讨论】:
-
会表现得更好 - 你可以通过在两个语句周围包裹一个计时器并根据实际代码测试性能来实际测试这个:)。除此之外,考虑到伪代码,这个问题有点含糊,真正有帮助。
-
AFAIK,即使 first 为 false,第一个语句也会评估所有 3 个条件。因此,第二个语句应该更快。无论如何,这个问题应该在 CodeReview 上,而不是 SO。
-
只是挑剔,但第一条语句不是有效的 VBA。
-
我希望实际上两者之间没有区别。 Excel 应用程序处理其代码所花费的时间比 VBA 代码评估
If所花费的时间要多几个数量级。 -
有比迭代搜索或 .Find 方法更快的方法,this link 比较了 3 种方法。结论是使用数组是最好的方法。