Запустить UDF после других функций?

У меня есть UDF, который собирает результаты других функций и отправляет их в веб-API, который вычисляет и отправляет ответ. например

           A                      B                   C               D
7  =CalcResult(E7, F7)    =CalcResult(G7, H7)        234     =SendToAPI(A7,B7,C7)
8  =CalcResult(E8, F8)    =CalcResult(G8, H8)        274     =SendToAPI(A8,B8,C8)
9         ...                    ...                 ...             ...

Что происходит, когда вы запускаете SendtoAPI, он отправляет API дважды, один с 2 нулями и значением в c, затем второй с правильными данными после завершения calcResult.

Есть ли способ заказа, который вызывается первым?

Установить SendToAPI для запуска в последний раз?

1 ответ

Решение

UDF часто вычисляются более одного раза в последовательности вычислений, когда они вызываются с еще не рассчитанными параметрами. Неисчисляемый параметр варианта отображается в UDF как пустой вариант, поэтому решение состоит в том, чтобы выйти из UDF без отправки в веб-API, если какой-либо из параметров пуст.

Смотрите страницу моего сайта http://www.decisionmodels.com/calcsecretsj.htm для более подробной информации.

И мой пост в блоге https://fastexcel.wordpress.com/2011/11/25/writing-efficient-vba-udfs-part-7-udfs-calculated-multiple-times/

Другие вопросы по тегам