在vba中使用RC的IF语句会出现编译错误,为什么?

时间:2014-01-12 17:10:06

标签: excel vba excel-vba if-statement

我目前正在研究需要比较一段字符串的小型VBA代码。如果我将它直接输入excel,我会这样做:

=IF(C14 = "ABC",1,0)

现在,由于这是一个VBA代码,因此需要将其作为相对引用。相反,它看起来像这样:

=IF(RC[-5] = "ABC",1,0)

问题:现在,后一个IF语句会出现编译错误 - 为什么会这样?

如果我在哪里输入

  =IF(RC[-5] = 2,1,0)

这不会产生任何编译错误。所以看起来字符串比较给我带来了问题。

1 个答案:

答案 0 :(得分:1)

对于vba代码,请尝试此

ActiveCell.FormulaR1C1 = "=IF(RC[-5]=""ABC"",1,0)"

通过评论进行跟进。

  

需要双“”吗? - SteewDK 3分钟前

我们需要额外的"来包含双引号以将其作为字符串传递。您也可以使用Chr(34)。例如

ActiveCell.FormulaR1C1 = "=IF(RC[-5]=" & Chr(34) & "ABC" & Chr(34) & ",1,0)"

顺便说一句,如果您不想使用公式,那么您也可以使用OFFSET

例如

If ActiveCell.Offset(0,-5).Value = "ABC" Then _
ActiveCell.Value = 1 Else ActiveCell.Value = 0