2015-05-12 4 views
0

Когда я ссылаюсь на определенную ячейку в vlookup Код VBA, как показано ниже, я могу получить код, чтобы вернуть правильный ответ.Код VBA для Vlookup

Application.VLookup(Sheets("Setup").Cells(2, 1), 
Sheets("Download").Range("A:G"), 7, 0) 

Однако, если я заменю код с переменной (VLDate), то я получаю сообщение об ошибке

Application.VLookup(VLDate, Sheets("Download").Range("A:G"), 7, 0) 

Я пытался сделать Dim VLDate As String, но это не работает тоже.

Любые предложения?

+0

Что вы подразумеваете под 'did not work'? Вы получили сообщение об ошибке? Разве это не находит ничего? Что вы возвращаете результат «VLookup»? Предоставьте больше кода и больше контекста, чтобы мы могли вам помочь. – FreeMan

ответ

0

В вашем примере Sheets("Setup").Cells(2,1) не является строкой.

Cells возвращает диапазон.

Dim VLDate As Range 
Set VLDate = Sheet("Setup").Cells(2,1) 

Если ваш первый пример работал, используя код выше, чтобы установить значение VLDate должны сделать свой второй пример работы тоже.

Редактировать Возможно, вы неправильно поняли свой вопрос, так как это верно, это может не помочь!

Не могли бы вы предоставить примерное значение для VLDate, а также тип форматирования ячейки и примерное значение из диапазона, в котором он искал?

+0

В соответствии с MSDN: https://msdn.microsoft.com/en-us/library/office/ff196273.aspx – NickSlash

+0

Бах! Ты прав, мой плохой ... – FreeMan

0

Я думаю, что знаю, в чем проблема. Первый вход vlookup должен иметь тот же тип данных, что и вы ищете. Например, если в ячейках, которые вы ищете, у вас есть только номера, попробуйте указать размер VLDate как число, если вы попытаетесь уменьшить его как строку, он не найдет соответствия и даст вам ошибку несоответствия типа.

Вы можете уменьшить VLDate как variant, что проще, но не используйте кавычки, если вы ищете число.

попробуйте добавить, для целей отладки, линия

MsgBox(CStr(Application.VLookup(Sheets("Setup").Cells(2, 1), Sheets("Download").Range("A:G"), 7, 0)) 

и если вы гет в MsgBox с Error 2042 он MENAS не смог найти матч, поэтому вы должны использовать неверный тип данных.

Единственная ситуация, в которой вы используете строку, состоит в том, что ячейки назначения содержат в своих формулах что-то вроде = "21", потому что тогда это строка.

надеюсь, что это поможет