Функция должна возвращать уникальный массив, а не массив - PullRequest
0 голосов
/ 19 февраля 2020

Я создаю функцию "myFunction" в VBA, которая должна возвращать уникальное значение типа Double. Внутри этой функции у меня есть оператор Application.Run("myAddInFunction",...), где я вызываю вторую функцию; эта вторая функция принадлежит надстройке (эта надстройка для меня - черный ящик, я не могу ее изменить).

Эта «myAddInFunction» возвращает массив. В частности, при отладке он выглядит как "Variant / Variant (от 1 до 2, 1 до 7) ; другими словами, это матрица 2x7. Я использую значения из этого массива для выполнения некоторых вычислений, генерации уникальный дубль, и этот уникальный дубль должен быть возвращением главной функции myFunction.

Function myFunction(arg1,arg2):

    ' Call add-In Function. It will return a 2x7 matrix
    temp_response = Application.Run("myAddInFunction", arg1, arg2)

    ' Store some specific values from temp_response in new variables
    var1 = temp_response(2, 4)
    var2 = temp_response(2, 5)

    ' Make some calculations using var1 and var2
    myFunction = var1 * var2

End Function

ПРОБЛЕМА: например, когда я вызываю myFunction внутри ячейки A1, он возвращает матрицу в диапазоне A1:G2 (матрица 2x7), где все ячейки заполнены значением Double, заданным myFunction. Я ожидал, что только A1 будет заполнено этим значением, а не полный диапазон A1:G2

Самое смешное: я установил точку останова внутри myFunction ПОСЛЕ команды Application.Run . Когда я снова вызываю myFunction (внутри A1), код остановится в точке останова После нажатия F5 для освобождения кода функция работает отлично, заполняя только ячейку A1 этим значением Double!

Есть ли у кого-нибудь идеи о том, как решить эту проблему? Я не хочу ответа массива в myFunction, только значение Double внутри ячейки, в которую я вставил формулу =myFunction(arg1,arg2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...