如何在VBA中编写输入为数组的excel函数?
我试图编写一个函数来测量用户定义数组的大小(例如,在excel中,这个数组的输入是一个2x2数组,每个单元格包含一个“1”[excel公式{=RRR(A1:B2)}-见下文]),因此我可以围绕该信息构建一个函数 除了这个特殊的部分,我的函数中的所有其他部分都可以工作。错误消息为“预期阵列”。显然,“rng”不是作为数组输入的。(见下面的代码)如何在VBA中编写输入为数组的excel函数?,excel,vba,Excel,Vba,我试图编写一个函数来测量用户定义数组的大小(例如,在excel中,这个数组的输入是一个2x2数组,每个单元格包含一个“1”[excel公式{=RRR(A1:B2)}-见下文]),因此我可以围绕该信息构建一个函数 除了这个特殊的部分,我的函数中的所有其他部分都可以工作。错误消息为“预期阵列”。显然,“rng”不是作为数组输入的。(见下面的代码) 我想说的是,首先需要将范围转换为数组,比如 Dim array1()作为变量 阵列1=平均值 RRR=UBound(阵列1,1) 如果您正在处理一个范围,
我想说的是,首先需要将范围转换为数组,比如
Dim array1()作为变量
阵列1=平均值
RRR=UBound(阵列1,1)
如果您正在处理一个范围,并且想要知道行数或列数,只需使用
rng.Rows.Count
和rng.Columns.Count
不必首先将范围的内容转换为数组-如果范围仅包含一个单元格,则转换将失败(因为在这种情况下,
Value
-函数的结果是标量而不是数组)。这很有效,谢谢。我是Excel VBA新手,将数据转换为正确的格式以使代码的其他部分正常工作有点令人沮丧。@Corrado Barbero:小心,如果使用rng.Value
和rng
是单个单元格,结果不是数组,Ubound
将抛出运行时错误
Public Function RRR(rng As Range)
RRR = UBound(rng, 1)
End Function