在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