在 myUDF 中,我可以引用一系列单元格,如“A1:A12”,但如何引用非连续单元格,如“A1,B4,H3”等。
我使用 ExcelDNA,参数类型是对象,但它似乎会取字符串和一系列单元格,而不是不连续的单元格
[ExcelArgument(AllowReference = true, Name = "Relations", Description = "a set of relations")]object rels
听起来您正在从代码中将公式及其参数输入到工作表中,并且您希望用户随后能够在 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
...在工作表单元格中输入它,如下所示:
=MyUDF((A1,A3,A7:A11,C8:E10))
请注意,与使用 SUM 等内置函数相比,额外的一组括号。
顺便说一句,您可能已经知道,在遍历非连续范围时,您必须遍历该范围的区域,然后遍历每个区域中的单元格;循环遍历范围内的单元格只会为您提供第一个区域中的单元格。