我有一段VBA代码,它从另一个excel中查找值以创建一个True / False标志,并根据该标志,我设置了两个不同的char值。我得到了对象要求'以下代码中的错误。有人可以解释一下原因吗?
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
答案 0 :(得分:1)
不要将公式放在WITH声明中。 WITH声明只是用于标识要使用的对象,而不是进行任何更改,例如在其中放置值。使用:
With Range("A2:A183")
.FormulaArray = part1
...
等
我不确定你为什么要使用" part1"和"第2部分"结构要么。如果只是因为公式太长,你可以使用下划线字符来断行,因此:
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')"
下划线将确保这三条线都作为一条线处理。