在vba中使用IF语句给编译错误,为什么?

我目前正在处理一个小的VBA代码,需要比较一段string。 如果我将这个直接input到Excel,我会做以下事情:

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

现在,由于这是一个VBA代码,所以需要将其作为相关参考。 相反,它会看起来像这样:

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

问题:现在,后面的IF语句给出了一个编译错误 – 为什么这样呢?

如果我在哪里input

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

这不会给出任何编译错误。 所以看来,string比较给我的问题。

对于VBA代码试试这个

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

从评论后续。

如何加倍“”是必要的? – SteewDK 3分钟前

我们需要额外的"来包含双引号将它作为一个string传递,你也可以使用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