Я пишу несколько функций VBA для работы и столкнулся с проблемой, которую нужно легко решить, но каким-то образом я не могу это сделать, несмотря на мои лучшие попытки найти ответьте здесь и на Google. Я написал функцию, которая должна дать мне диапазон между двумя строками в колонке:Передача диапазона от одной функции VB к другой
Function FindRng(StartRng As String, EndRng As String) As Variant
Dim TopOfRange As Single
Dim BottomOfRange As Single
TopOfRange = WorksheetFunction.Match(StartRng, Sheets("InfCom").Range("B:B"), 0)
BottomOfRange = WorksheetFunction.Match(EndRng, Sheets("InfCom").Range("B:B"), 0)
FindRng = Range(Sheets("InfCom").Cells(TopOfRange, 2), Sheets("InfCom").Cells(BottomOfRange, 2))
End Function
Так что, если входы А и В на строках 100 и 105, он должен вернуться B100: B105. Когда я тестирую это, адаптируя код для чтения FindRng = Range (...). Адрес, я действительно получаю $ B $ 100: $ B $ 105.
Однако, когда я затем ввожу результат FindRng в настраиваемую функцию сопоставления индексов, я получаю сообщение об ошибке. Функция выглядит следующим образом:
Function subsetPBPC(rngReturn As Range, LookupValueH As Variant, TopOfRange As String, BottomOfRange As String, LookupValueV As Variant) As Variant
subsetPBPC = sPBPC(rngReturn, LookupValueH, FindRng(TopOfRange, BottomOfRange), LookupValueV)
End Function
Проблема заключается в том, что он, кажется, читает вывод FindRng не как диапазон, но как содержание этого диапазона: когда я использую Evaluate инструмент Формулы на FindRng встроенный в другом Формула показывает результат FindRng как {A, B, C, D, E} вместо $ B $ 100: $ B $ 105, где от A до E - содержимое ячеек в диапазоне. У меня такое чувство, что решение действительно просто, но я этого не вижу. Функции, лежащие в основе настроенной функции Match Match, были протестированы, и все они работают как шарм.
попытка объявить функцию как диапазон: Function FindRng (...) Как Range – Seb