2015-09-01 2 views
0

Я получаю объект требуемой ошибки в следующей строке кодаТребуется объект ошибки VBA IsError и ВПР

Set Flag = "If(Application.WorksheetFunction.IsError(Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, Offset1).Value, abcd.Value, 1, False)),False,True)" 

    If (Flag = True) Then 
    ActiveCell.Value = "abc" 

где ABCD является именованный диапазон. Может кто-нибудь предложить вам способ исправить эту ошибку?

+2

Вы не можете установить 'Flag' в строку. Однако похоже, что флаг может быть логическим? Трудно сказать с таким маленьким кодом –

+1

Что вы здесь делаете? Что такое «Флаг»? Почему бы не использовать VBA для обработки инструкции if и поиска? – Gareth

+0

@ Гарет прав. Если вы начнете работать в VBA, вы должны в скором времени воздерживаться от использования функции WorksheetFunction и использовать функции VBA. Посмотрите http://www.rondebruin.nl/win/s9/win006.htm на поиск значений в диапазонах – Roland

ответ

0

У меня есть некоторые сомнения в функции vlookup. Я не понимаю все, что вы пытаетесь сделать, но

Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, Offset1).Value, abcd.Value, 1, False) 

выглядит неуловимым.

  1. Ваш второй термин - abcd.Value. Это должен быть целый ряд ячеек.
  2. Ваше третье значение: 1. Первый столбец vlookup зарезервирован для индекса, а не для извлекаемых значений, поэтому я не думаю, что вы можете иметь здесь значение 1.
+0

Вы можете использовать «1» для столбца, но вы просто возвращаете значение поиска ... –

0

Если вы используете Application.WorksheetFunction.VLookup() то неигровые приведет к ошибке времени, которое вы будете нуждаться в ловушку с помощью On Error.

Если вы вместо того, чтобы использовать Application.VLookup() то значение ошибки возвращается в случае совпадения не производится - вы можете проверить это с помощью IsError()

If IsError(Application.VLookup(ActiveCell.Offset(0, Offset1).Value, _ 
              Range("abcd"), 1, False)) Then 

    ActiveCell.Value = "abc" 
Смежные вопросы