Могу ли я написать UDF внутри строки формулы Evaluate в VBA? - PullRequest
1 голос
/ 07 марта 2020

Я определил следующую формулу, чтобы ввести ее как формулу массива: = IF (LenTableRange (Hoja1! $ B $ 15) = Hoja1! $ B $ 4, IF (OFFSET (LenTableRange (Hoja1! $ A $ 15)), 0, 5) = "", LenTableRange (Hoja1! $ A $ 15)))

Для получения дополнительной информации: - LenTableRange возвращает объект диапазона, тело функции:

'Passing a cell as a range, it returns
Function LenTableRange(R As Range) As Range
   Application.Volatile
   Set LenTableRange = Range(R, R.End(xlDown))
End Function

Данные, которые я беру, - это строки в столбце $ A $ 15>, числа в столбце $ B $ 15>. Оба столбца могут иметь повторяющиеся значения, поэтому я фильтрую его, а столбец, который ссылается на OFFSET (LenTableRange ($ B $ 15); 0; 5), ссылается на даты, которые могут не иметь значения или иметь пустую ячейку.

Как видите, в нем есть пользовательская функция. UDF LenTableRange работает отлично. Когда я вписываю всю формулу или имя в ячейку, она работает нормально, но когда я пытаюсь выполнить следующее в VBA:

'I think I have to escape the double quotes as so.
Dim StrForm As String
StrForm = "=IF(LenTablaRango(Hoja1!$B$15)=Hoja1!$B$4,IF(OFFSET(LenTablaRango(Hoja1!$A$15),0,5)="""""",LenTablaRango(Hoja1!$A$15)))"

Debug.Print Application.Evaluate(StrForm)

Это выдает ошибку 2015. Я подозреваю, что она не читает UDF внутри формулы должным образом , Реально ли это сделать? Как лучше всего решить эту проблему?

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