除非工作表处于活动状态,否则R1C1公式引用会出现乱码

时间:2017-11-12 19:21:36

标签: excel vba

我正在尝试避免激活工作表,因为我在电子表格中进行了计算。但是,我遇到了一个问题。此说明完全在我的Excel 2016(32位)版本上重现了该问题。

创建一个包含2张工作簿的新工作簿:Sheet1和Sheet2。 Sheet1是空白的。在Sheet2中,在单元格A2:A21中,我放了一些整数。然后我添加了一个使用R1C1公式格式的模块,将一些公式放在Sheet2的G列中,使用以下代码:

Option Explicit
Sub Test()
Dim osht As Excel.Worksheet
Dim NumRows As Integer

Set osht = ThisWorkbook.Worksheets("Sheet2")

NumRows = 20
osht.Range("G1").Offset(1, 0).Resize(NumRows, 1).FormulaR1C1 = "=RC[-6]*5"

End Sub 

我添加了一个图表工作表,用图表绘制Sheet2中的内容。如果您使用Sheet1或Sheet2作为活动工作表运行代码,它将正常工作,Sheet2!G2:G21中的公式是正确的:

=RC[-6]*5

在激活CHART表的情况下运行代码,这不起作用。 Sheet2!G2:G21中的公式如下所示:

=R[-1]C[16372]*5

这也发生在Excel 2013(32位)中。

我在哪里错了?或者这是一个Excel错误?

1 个答案:

答案 0 :(得分:1)

好的,解决了这个问题。我不需要使用R1C1引用来获得范围内的公式正确(我认为我做了)。回到常规Formula vs. FormulaR1C1修复了这个问题。