如何将非连续的单元格传递给Excel UDF

在myUDF中,我可以引用一系列像“A1:A12”这样的单元格,但是我怎样才能引用像“A1,B4,H3”等非连续的单元格。
我使用ExcelDNA,参数types是对象,但它似乎会采取string,和一系列的单元格,而不是非连续的单元格

[ExcelArgument(AllowReference = true, Name = "Relations", Description = "a set of relations")]object rels 

这听起来像是从代码中将公式input到工作表及其参数中,然后希望用户能够在Excel的公式栏中正常编辑公式。 那是对的吗?

如果是这样, 请将参数放在parens中 。 例如,对于像这样的UDF …

 Public Function MyUDF(my_param As Range) 'concatenate all cell values in a non-contiguous range: Dim rgCell As Range, rgArea As Range For Each rgArea In my_param.Areas For Each rgCell In rgArea MyUDF = MyUDF & CStr(rgCell.Value) Next rgCell Next rgArea End Function 

…在工作表单元格中input如下所示:

 =MyUDF((A1,A3,A7:A11,C8:E10)) 

注意与使用像SUM这样的内置函数相比,额外的一组parens。

顺便说一句,你可能已经知道,当循环通过一个非连续的范围时,你必须循环遍历范围的区域,然后遍历每个区域的单元格; 循环遍历范围中的单元格只会为您提供第一个区域中的单元格。