Несколько операторов vlookup при назначении значения в поле пользовательской формы - PullRequest
0 голосов
/ 25 апреля 2018

Доброе утро,

Я создал пользовательскую форму, где пользователи могут искать имя человека, и он возвращает (среди прочего) их адрес. Оператор, используемый для поиска адреса, выглядит так:

.Address = Application.WorksheetFunction.VLookup(Me.Name1, _
Worksheets("Caselist").Range("Lookup"), 10, 0)

Это сработало нормально. С тех пор я разделил ячейку адреса на 3 отдельные ячейки (улица, город, почтовый индекс). Я хотел бы объединить значения во всех 3 ячейках, прежде чем добавить их в пользовательскую форму, чтобы пользователи могли видеть полный адрес. Я пробовал утверждение как это:

.Address = Application.WorksheetFunction.VLookup(Me.Name1,Worksheets("Caselist") _ 
.Range("Lookup"), 10, 0) & _ 
Application.WorksheetFunction.VLookup(Me.Name1,Worksheets("Caselist") _ 
.Range("Lookup"), 11, 0) & " MI, " & _
Application.WorksheetFunction.VLookup(Me.Name1,Worksheets("Caselist") _
.Range("Lookup"), 12, 0)

Я знаю, что на это сложно смотреть, но это, по сути, 3 оператора Vlookup, соединенных вместе с помощью "&" для создания одной строки. Когда я пытаюсь это сделать, я получаю следующую ошибку

"Невозможно получить свойство VLookup класса WorksheetFunction"

Я не нашел способа успешно отформатировать это онлайн. Есть идеи как это сделать?

1 Ответ

0 голосов
/ 25 апреля 2018

Я на 90% уверен, что ваш именованный диапазон Lookup не распространяется на столбцы 11 и 12. Попытка использовать Application.WorksheetFunction.Vlookup и запрос на возвращаемый столбец вне диапазона вернут

Ошибка времени выполнения '1004' - невозможно получить свойство VLookup класса WorksheetFunction.

Это одно из сложностей использования именованных диапазонов в коде - это не то, что вы можете ясно увидетьво время отладки, и полученная вами ошибка довольно неоднозначна:).

...