Почему моя определенная пользователем функция excel в Excel DNA возвращает случайное число, если я вызываю функцию без скобок? - PullRequest
0 голосов
/ 21 июня 2019

Я делаю плагин Excel DNA excel.Я создал некоторую пользовательскую функцию, используя 'ExcelFunctionAttribute'.Теперь, когда я вызываю эту функцию без скобок, она возвращает случайное число.

Предположим, моя функция:

[ExcelFunction(Description= "Hello Function", IsVolatile = true)]
public static string Hello(string name)
{
    return "Hello "+name;
}

У меня есть 3 сценария:

  1. Если я вызываю функцию в excel как = Hello ("XYZ") он возвращает Hello XYZ.

  2. Если я вызываю функцию в excel как = Hello (), это выдает ошибку.

  3. Если я вызываюфункция в Excel as = Hello, она выдает случайное число, например -17453245.

В моем этом сценарии я не дал скобок.Так может кто-нибудь сказать мне, почему это произошло?Как я могу решить эту проблему?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 июня 2019

Число, которое вы видите при вызове функции без скобок, не является случайным числом, но является «регистрационным идентификатором» для пользовательской функции. Это внутренний идентификатор, который Excel присваивает внутреннему имени, под которым зарегистрирована UDF.

Когда формула имеет только имя UDF без круглых скобок, надстройка никогда не вызывается в Excel , поэтому у надстройки нет способа фактически вернуть что-то еще, например #NAME? .

В некоторых случаях можно даже создать более мощные функции, используя эту «функцию», где вы берете имя функции без скобок и внутренне оцениваете его.

Но для обычного использования я ничего не могу сделать, чтобы обойти это встроенное поведение Excel.

...