Как сослаться на диапазон ячеек в UDF

c#, ExcelDNA, в моем UDF я хочу передать диапазон ячеек, MyUDF(A1:A2)

Я пробовал MyUDF (объект param1), если я набираю myUDF (A1: A2), MyUDF никогда не вызывается. Я также пробовал MyUDF (string param1), MyUDF (string [] param1) и не работает.

Какой тип параметра должен быть? Спасибо


person toosensitive    schedule 10.09.2012    source источник
comment
Через вашу надстройку где живет UDF? (Я не очень хорошо знаком, но в VBA ваш UDF должен находиться в независимом модуле, а не в модуле рабочего листа или рабочей книги). Это не в том месте?   -  person Brad    schedule 10.09.2012


Ответы (1)


Формат public static object MyUDF(object param1) {...} должен работать нормально, и ваша формула с =MyUDF(A1:A2) будет передаваться в массив объектов со значениями в этих ячейках.

Если вы хотите, чтобы аргумент был ссылкой на переданный диапазон, вы должны объявить его как

public static object MyUDF(
    [ExcelArgument(AllowReference=true)] object param1) {...}

Дополнительный атрибут указывает Excel передать фактическую ссылку при вызове как =MyUDF(A1:A2) - ссылка будет иметь тип ExcelDna.Integration.ExcelReference, откуда вы можете получить значения или сделать дополнительные вызовы к API Excel, чтобы получить адрес или что-то еще.

person Govert    schedule 26.09.2012