Чтобы пройти диапазон, сначала нужно получить ссылку на диапазон.
У вас сейчас есть:
rangeVar = Worksheets("SheetCache").Range("A:B")
Это не получает диапазон; он считывает весь диапазон A:B
в массив Variant. Если вы хотите получить ссылку на диапазон, вам нужно использовать ключевое слово Set
.
Set rangeVar = Worksheets("SheetCache").Range("A:B")
По иронии судьбы это не влияет на вывод вашей функции abb11
( EDIT: в Excel 2003 ), потому что VLookup
может применяться как к массиву Variant, так и к Range. Однако чтение двух целых столбцов в массив довольно неэффективно, поэтому я бы предпочел получить ссылку на диапазон (Set rangeVar = ...
). РЕДАКТИРОВАТЬ В Excel 2007/2010 чтение двух целых столбцов в массиве Variant, вероятно, приведет к смерти вашей функции, поскольку в Excel 2003 загружается миллион строк, а не 65536 в Excel 2003, как я и делал тестирование.