VBA对象需要Range函数的错误

我有一个VBA代码,从另一个Excel查找值创build一个真/假标志,并根据该标志,我已经设置了两个不同的字符值。 我在下面的代码中得到'object required'错误。 有人可以解释为什么吗?

Sub test() Dim part1 As String Dim part2 As String Dim a As Range part1 = "=ifna(INDEX('DRG and Zip Summaries'!$A$10:$A$58,MATCH('DRG Summary Target'!F2 ""x_x_x""" part2 = ",'DRG and Zip Summaries'!$C$10:$C$58,0)),'FALSE')" With Range("A2:A183").FormulaArray = part1 .Replace """x_x_x""", part2 End With For Each a In Range("A2:A183") If a.Value = "FALSE" Then Range("B" & a.rownum) = Chr(168) Else: Range("B" & a.rownum) = Chr(254) End If Next End Sub 

不要把你的公式放在WITH声明中。 WITH声明只是用来标识要使用的对象,而不是像添加值一样进行任何更改。 使用:

 With Range("A2:A183") .FormulaArray = part1 ... 

等等

我不知道你为什么要使用“part1”和“part2”结构。 如果只是因为公式太长,可以使用下划线来分隔线条,因此:

 formula=""=ifna(INDEX('DRG and Zip Summaries'!$A$10:$A$58," & _ "MATCH('DRG Summary Target'!F2",'DRG and Zip Summaries'!" & _ "$C$10:$C$58,0)),'FALSE')" 

下划线将确保这三行全部作为一行处理。