Я работаю над макросом Excel VBA, который получает электронное письмо клиента с другого листа.Excel VBA VLookup - Ошибка 13 - «Несоответствие типа»
Я получаю ошибку 13 «Тип Рассогласование» от ВПР:
For Each c In Range("D3:D130").Cells
If c > 500 Then
Dim emailadress As String
Dim client_name As String
Dim lookup_mail As Range
Set lookup_mail = Sheets("MAILS").Range("A1:D130")
client_name = Range("A" & (c.Row)).Value
emailadress = Application.VLookup(client_name, lookup_mail, 4, False)
Если я сделать это таким образом, она работает просто отлично:
emailadress = Application.VLookup("John Doe", lookup_mail, 4, False)
Так что я думаю, есть что-то неправильно с тем, как я «заявляю»? имя клиента. Что странно, потому что, когда я вывожу имя client_name в MsgBox, он всплывает отлично.
(я использую VBA обусловленно мне нужно отправить автоматические электронные письма клиентов)
Любая помощь apreciated!
Ошибка типа 13 в этой точке обычно указывает, что значение не удалось найти. Вы отлаживали и что такое значение 'client_name' в точке ошибки? Запустите 'Debug.Print char (39) & client_name & chr (39)' непосредственно перед vlookup и проверьте окно Immediate, чтобы увидеть, есть ли ведущие/конечные пробелы в источнике и/или цели. – Jeeped
Значение верное, я получаю имя клиента, но по какой-то причине VLookup не может прочитать это значение ... –
Не должно быть 'Application.WorksheetFunction.VLookup (...)'? Кроме того, если вы назвали Range («A1: D130»), вы можете просто поместить текст в VLookup, вы также можете сделать этот динамический диапазон имен так, чтобы вы не беспокоились о размере изменений диапазона. – PatricK