如果您从另一个 VBA 子例程或函数调用您的函数,Excel 将不会为您解释范围计算。在调用函数之前,您必须自己对范围区域执行任何数据操作。
但只要您将该函数用作工作表单元格中的 UDF,Excel 就会按照您的描述来解释范围参数。对范围应用任何计算时需要注意的是,您必须通过键入 control-shift-enter 来“标记”单元格公式,使其成为数组公式,以完成单元格公式。
考虑这个设置:
Option Explicit
Public Function CalculateThis(inRange) As Double
Dim answer As Double
answer = 0#
CalculateThis = answer
End Function
范围参数 A1:E1 按预期出现,Variant/Object/Range。使用 VBA 编辑器中的 View-->Locals 窗口进行查看。
现在,如果您想在 到达您的函数之前将计算应用于范围,您仍然可以。
考虑公式=CalculateThis(A1:E1^2)。您期望的是一个包含五个值的数组,每个值都是平方的。但是如果你通过输入一个简单的enter 来输入这个公式,你得到的是一个单一的值而不是一个数组。 (奖金指向能解释为什么值为 9 的人。)
但是用control-shift-enter 输入相同的公式,你会得到预期的五个值的数组,每个值都是平方的。
如果您的范围和数组计算不完全匹配,您必须检查一些错误情况。例如=CalculateThis(A1:E1^{1,2,3,4,5})(使用control-shift-enter 输入)会得到预期的结果:
但是=CalculateThis(A1:E1^{1,2,3}) 没有:
(变量数组中的错误是可以检查的字符串“Error 2042”。)