Я не совсем уверен, что вы пытаетесь сделать с помощью ссылки "UBRLookup [Level 3]", но, как указал Джозеф, это то, что вы делаете неправильно.
[
не является допустимым символом для именованного диапазона в Excel.
Столбец, на который вы ссылаетесь, должен быть числовым значением, смещение от начала массива таблицы, которое вы определили как именованный диапазон.
Следующее должно работать, если столбец, который вы хотите извлечь, является вторым столбцом в вашем именованном диапазоне (например, то, что вы называете [уровень 3], находится во втором столбце).
Public Function getAreaName(UBR As Integer) As String
Dim result As String
Dim sheet As Worksheet
Set sheet = ActiveWorkbook.Sheets("UBR Report")
result = Application.WorksheetFunction.VLookup(UBR, sheet.Range("UBRLookup"), 2, False)
getAreaName = result
End Function
Обновление:
Я посмотрел на Excel 2007, и из того, что я вижу, функция столбца не представлена как Application.WorksheetFunction.
Вы можете использовать его на листе с =Column(D4)
, но при попытке автозаполнения в редакторе vba функция отсутствует. Это может быть связано с разницей в версиях, поэтому я пока проигнорирую это.
Все равно определенно кажется, что вы неправильно используете третий аргумент. Если вы действительно не хотите использовать ссылку на номер, нам нужно выяснить, где происходит сбой функции.
Несколько тестов по линии
Debug.Print Application.WorksheetFunction.Column(D4)
Debug.Print sheet.Range("UBRLookup[Level 3]")
должен, надеюсь, помочь вам показать, где именно происходит ошибка - я считаю, что она будет возражать против обоих вышеперечисленных, но если она выдаст некоторую полезную информацию, то мы можем стать на шаг ближе к вашему решению.