【问题标题】:When writing string to a cell, VBA inserts extra single quotation marks将字符串写入单元格时,VBA 会插入额外的单引号
【发布时间】:2011-10-17 07:36:04
【问题描述】:

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

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

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

问题是当我运行它时,单元格被赋予了这个:(如果 ColumnLetter = F, i = 16):

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

但我想要:

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

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

非常感谢您的帮助!

【问题讨论】:

  • 你打算做什么?似乎您混淆了R1C1 符号和A1。见:lytebyte.com/2008/04/29/…
  • 不能同时使用吗?我想为我的函数获取 2 个参数,一个来自左侧的单元格,一个来自“ColumnLetter”列和“i”行中的另一张表。

标签: vba excel


【解决方案1】:

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

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

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

【讨论】:

  • 完美,正是我想要的,并且像魅力一样工作。很遗憾你不能混合格式......我很幸运,我想要的相对变量之一很容易计算出来。感谢您的宝贵时间!
【解决方案2】:

撇号对 Excel 意味着它应该将其解释为文本。

将其写入 ActiveCell.Formula。这样它就被识别为公式。

【讨论】:

  • 不行,引号是Excel创建公式的时候加的
猜你喜欢
  • 1970-01-01
  • 2012-07-19
  • 2015-11-28
  • 2014-11-20
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多