Асинхронные пользовательские функции с параметром диапазона в ДНК Excel вызывают ошибку при расчете полной страницы

Следующая функция отлично работает, когда вы вводите отдельную ячейку и нажимаете Enter, результат соответствует ожидаемому.

Когда формула вставляется в несколько ячеек и лист пересчитывается, функция в основном (исключение составляет одна или две ячейки, которые могут быть заполнены ожидаемым значением) возвращает ошибку #value

    [ExcelFunction(Name = "GetRate", IsThreadSafe = true)]
    public static void  GetRate(
        [ExcelArgument("Range containing quantity and rate", AllowReference = false)] object[,] valueRange,
        ExcelAsyncHandle asyncHandle)
    {

                var rate = 0.123456789m;

                asyncHandle.SetResult(rate);
    }

При отладке исключений не возникает


person VegDork    schedule 07.08.2019    source источник


Ответы (2)


Мне не удалось воспроизвести это поведение, используя опубликованный вами код, работающий в 64-разрядной версии Excel 2016. Есть ли у вас пример проекта, демонстрирующего такое поведение в конкретной версии Excel?

пример

код

офисная версия

person C. Augusto Proiete    schedule 08.08.2019

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

Убедитесь, что метаданные JSON добавляют "dimensionality": "matrix" к параметрам вашей функции и что Excel успешно анализирует файл, и, возможно, повторите попытку. В моем случае проблема со временем исчезнет.

person villasv    schedule 18.04.2021