应用程序定义或对象定义的错误,公式为 VBA

Application-defined or object-defined error with formula VBA

我是 VBA 的新手,遇到了

application-defined or object-defined error

在做的时候。

Set twb = ThisWorkbook
Set extwbk = Workbooks.Open("abc.xlsx")
Set x = extwbk.Worksheets("FILTERED").Range("$A:$A")

With twb.Sheets("FILTERED")

    For rw = 9 To .Cells(Rows.Count, 1).End(xlUp).Row
        .Cells(rw, 34).Formula = "=IF(ISERROR(VLOOKUP(.Cells(rw, 1).Value2, x, 1, False))=TRUE,""New"",""Old"")"
    Next rw

End With

这可以手动完成,但我被要求通过编程来完成。它只是将 AH9 中的公式应用到数据的末尾。请问for循环有没有编码错误?

提前致谢。

不要将 VBA 变量放入字符串公式中。 在VBA中解析它们并将结果注入公式:

 .Formula = "=IF(ISERROR(VLOOKUP(" & .Cells(rw, 1).Value2 & "," & _
   x.Address(External:=True) & ", 1, False))=TRUE,""New"",""Old"")"

p.s。不要使用 =TRUE 来检查布尔值,像 If ISERROR(Something) = TRUE 这样的东西没有意义。就 If ISERROR(Something).

.Formula = "=IF(ISERROR(VLOOKUP(" & .Cells(rw, 1).Value2 & "," & _
  x.Address(External:=True) & ", 1, False)),""New"",""Old"")"

如果您希望公式是动态的并在以后 (rw, 1) 处的单元格发生变化时相应地重新计算,请使用 .Address 而不是 .Value2:

'                                                vvvvvvvv
.Formula = "=IF(ISERROR(VLOOKUP(" & .Cells(rw, 1).Address & "," & _
  x.Address(External:=True) & ", 1, False)),""New"",""Old"")"