Я пишу код для запуска списка из 9000 учетных записей клиентов и сравнения его с другим списком, используя application.vlookup
.Если учетная запись клиента существует во 2-м списке, то результатом будет True, но не false.
Код работает 99% времени, но продолжает работать с ошибками на определенных учетных записях клиентов.Другие 1% времени, это дает мне ошибку несоответствия типов.
Насколько я понимаю, не должно быть проблем, если значение не найдено во второй таблице, поскольку я не назначаю customer_account (тип длинной переменной) для vlookup
.Это похоже на правду, поскольку для всех других учетных записей клиентов он не находит, так как ошибки не возникает.
Кроме того, я использую базовый код ранее в своем коде, чтобы сравнить учетные записи клиентов с еще одним списком иработает без проблем (все те же объявления переменных и т. д.)
Вот что я подтвердил:
1) Все учетные записи клиентов отформатированы как общие (нет букв или специальных символов)
2) Переменная customer_account объявлена как long
3) Переменная national_accounts объявлена как диапазон и определена до моего цикла for-next, поэтому не должна изменяться.
4) Второй список номеров счетов отсортирован численно (с использованием true в качестве параметра vlookup
для повышения эффективности).
If Application.VLookup(customer_account, national_accounts, 1, True) = customer_account Then <~~~~this is where the debugger shows an error type mistmatch
national_account_check = True
recommend_action = "National Account"
' Do some stuff
Else
national_account_check = False
' Do a some other stuff
End If
Мой оператор if не должен присваивать значение customer_account, просто оцените выражение.