将字符串写入单元格时,VBA会插入额外的单引号

时间:2011-10-17 07:36:04

标签: excel vba excel-vba

我正在尝试使用VBA编写此公式:

ActiveCell.Value = "=f(R[-1]C[0],Sheet1!" & ColumnLetter & i & ")"

其中ColumnLetter是我的宏之前计算的变量字母,f是某个函数,而且我是一个数字。

问题在于,当我运行它时,相反给出了单元格:(如果ColumnLetter = F,i = 16):

=f(R[-1]C[0],Sheet1!'F16')

但我想:

=f(R[-1]C[0],Sheet1!F16)

为什么VBA或Excel会将这些单引号放在F16附近?如果我在公式中不包含R [-1] [0]作为参数,它不会插入这些额外的引号,但我需要包含它。

非常感谢!

2 个答案:

答案 0 :(得分:9)

它是R1C1A1寻址的组合。您需要选择一种方法并将其用于两个部分 请注意,如果您在单元格中键入=f(R[-1]C[0],Sheet1!F16),则出于同样的原因会出现错误。

你说你需要使用R1C1样式作为第一个地址,但(假设这是因为你不想要 绝对地址)您可以使用.Offset代替

ActiveCell.Value = "=f(" & ActiveCell.Offset(-1, 0).Address(False, False) _
 & ",Sheet1!" & ColumnLetter & i & ")"

答案 1 :(得分:1)

Apostrophe意味着Excel应将其解释为文本。

将其写入ActiveCell.Formula。这样就被认为是公式。