Excel宏代码中活动公式上的运行时错误

时间:2018-07-01 08:48:28

标签: excel vba excel-vba excel-formula

我想将工作表2的单元格A5的值用于工作表1中宏的活动公式。但是,我得到了

  

错误1004(应用程序定义或对象定义的错误)。

如果使用静态值(例如100)而不是'Sheet 2'!A5,则它可以正常工作。

下面是我的代码:

ActiveCell.FormulaR1C1 = "=if('Sheet 2'!RC>'Sheet 2'!A5,""PASS"", ""FAIL"")"

1 个答案:

答案 0 :(得分:2)

您不能将xlA1单元格引用与xlR1C1单元格引用混合和匹配。 A5是xlR1C1语法中的R5C1。

ActiveCell.FormulaR1C1 = "=if('Sheet 2'!RC>'Sheet 2'!R5C1,""PASS"", ""FAIL"")"

现在,在此公式中,RC是相对于“工作表2”上同一单元格(活动工作表上的活动单元格处于打开状态)的相对单元格的相对行/相对列引用。但是,“ Sheet 2”!R5C1引用将是绝对行/绝对列,例如“ Sheet 2”!$ A $ 5。

如果您需要引用“ Sheet 2”!A5的相对行/相对列,则需要使用.Formula而不是.FormulaR1C1并以xlA1的方式引用活动单元的地址。

with ActiveCell
    .Formula = "=if('Sheet 2'!" & .address(0, 0) & ">'Sheet 2'!A5,""PASS"", ""FAIL"")"
end with