【问题标题】:why does VBA put 'range' instead of just range为什么 VBA 放“范围”而不是范围
【发布时间】:2016-05-06 15:49:16
【问题描述】:

使用 VBA 在单元格中放置公式

    Range("H2").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-6],CompanyUserEntries!B2:X" & URowCount & ",1,TRUE),"""")"

但是 Excel 最终把它变成了这个

=IFERROR(VLOOKUP(B2;CompanyUserEntries!'B2':'X12';1;TRUE);"")

范围周围的 ' 符号导致公式不起作用。知道如何在不破坏公式的情况下正确引用此范围吗?

【问题讨论】:

  • CompanyUserEntries!B2:X12 应该适合你
  • @Ian,想象一下 X 列的行号是一个变量。
  • 即使在 vba 中,当我输入 B2:X12 时,由于某种原因它仍然变为 'B2':'X12' ;(
  • @teylyn 哎呀知道了。没有正确理解问题。
  • 您能在文件共享服务上共享一个示例文件吗?节省尝试重现问题的时间。

标签: vba excel


【解决方案1】:

您不能在同一个公式中混合使用 R1C1 和 A1 符号。尝试仅使用 R1C1 表示法:

    ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-6],CompanyUserEntries!R2C2:R" & URowCount & "C24,1,TRUE),"""")"

【讨论】:

  • @wouldbenerd 是的,这是正确的。如果你修改像ActiveCell.Formula = "=IFERROR(VLOOKUP(B2,CompanyUserEntries!B2:X" & URowCount & ",1,TRUE),"""")"这样的代码,它会起作用。
  • 谢谢,我习惯从头开始编写 vba,但我懒得修改录制的宏。直到现在对这种 RC 方法不熟悉。
【解决方案2】:

您是否尝试过使用 RC?

"R2C2:R" & URowCount & "C24"

这应该适合你。

ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-6],CompanyUserEntries!R2C2:R" & URowCount & "C24,1,TRUE),"""")"

【讨论】:

    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多