【问题标题】:VBA object required error with Range functionRange 函数需要 VBA 对象的错误
【发布时间】:2016-09-29 02:40:54
【问题描述】:

我有一段 VBA 代码从另一个 excel 中查找值以创建一个真/假标志,并且基于该标志,我设置了两个不同的 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

【问题讨论】:

  • 哪一行给你一个错误? Range("B" & a.rownum) 不正确,应该是Range("B" & a.Row)。此外,您应该限定您的推荐人,例如Workbooks("Workbook Name").Sheets("Sheet Name").Range("A2:A183")

标签: excel vba debugging


【解决方案1】:

不要将公式放在 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')"

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

【讨论】:

  • 我删除了 'with' 部分并使用 & _ 建议的代码。错误现在显示“应用程序定义或对象定义错误”
  • 我的公式有问题,在 = 之前有双引号。它应该是 formula="=ifna(Index( .... 等等。另外,请确保您在每行的末尾关闭 " 并包括 &,然后在下一行的开头重新打开 "。
  • 是的,我已经注意到这一点并相应地编写了公式,因此它看起来像以下代码:Sheet("Sheet5").Range("A2:A183").FormulaArray = "=ifna(INDEX( 'DRG 和 Zip 摘要'!$A$10:$A$58," & _ "MATCH('DRG Summary Target'!F2,'DRG 和 Zip 摘要'!" & _ "$C$10:$C$58,0) ),'假')"
  • 在末尾使用双引号将“False”括起来,或删除单引号。 Excel 不知道如何处理“FALSE”,这可能是错误的来源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多