Я создаю функцию "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)