对象所需错误VBA Iserror和vlookup

对象所需错误VBA Iserror和vlookup,vba,Vba,我在下面的代码行中得到了对象必需的错误 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是

我在下面的代码行中得到了对象必需的错误

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是一个命名范围。
有人能提出纠正这个错误的方法吗?

我对vlookup函数有些疑虑。我不明白你想做的一切,但是

Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, Offset1).Value, abcd.Value, 1, False)
看起来很不稳定

  • 你的第二个学期是abcd.Value。这需要一系列的单元格
  • 第三个值是1。vlookup的第一列是为索引保留的,不是可检索的值,因此我认为这里的值不能为1
    如果使用
    Application.WorksheetFunction.VLookup()
    ,则不匹配将导致运行时错误,您需要使用
    On error
    捕获该错误

    如果改为使用
    Application.VLookup()
    ,则在不匹配的情况下返回一个错误值-您可以使用
    IsError()


    不能将
    标志设置为字符串。然而,它看起来可能是一个布尔标志?这么小的代码很难说你想在这里做什么?
    Flag
    定义为什么?为什么不使用VBA来处理if语句和搜索?@Gareth是对的。如果您开始在VBA中工作,应该很快避免使用工作表函数,而是使用VBA函数。有关在范围中查找值的信息,请参阅
    If IsError(Application.VLookup(ActiveCell.Offset(0, Offset1).Value, _
                                               Range("abcd"), 1, False)) Then
    
        ActiveCell.Value = "abc"