【问题标题】:Run Time Error on Active formula in Excel Macro codeExcel宏代码中活动公式的运行时错误
【发布时间】:2025-11-23 11:30:02
【问题描述】:
我想将工作表 2 的单元格 A5 的值用于工作表 1 的宏中的活动公式。但是,我得到了一个
错误 1004(应用程序定义或对象定义错误)。
如果使用静态值,例如 100,而不是 'Sheet 2'!A5,它可以工作。
下面是我的代码:
ActiveCell.FormulaR1C1 = "=if('Sheet 2'!RC>'Sheet 2'!A5,""PASS"", ""FAIL"")"
【问题讨论】:
标签:
vba
excel
excel-formula
【解决方案1】:
您不能将 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