插入if语句编译错误

时间:2015-08-24 15:13:19

标签: excel excel-vba vba

我想在excel中的diffent工作表中插入一个if语句。因此,我写了以下内容:

 Sub Final_Insert_Columns()


     Dim month As Variant
     Dim months As Variant
     months = Array("07 AMSTERDAM", "07 ARNHEM")

    For Each month In months

        Sheets(month).Activate
        Range=("n4").Formula = "IF(OR(T4=0;T4="PAS");"X"; (AJ4/AK4))

    Next
 End sub

但是这部分似乎存在问题:

 Range=("n4").Formula = "IF(OR(T4=0;T4="PAS");"X"; (AJ4/AK4))
 Compile error: expected end of statement.

关于我应该如何运作的任何想法?

2 个答案:

答案 0 :(得分:1)

而不是

Range=("n4").Formula = "IF(OR(T4=0;T4="PAS");"X"; (AJ4/AK4))

使用

Range("n4").Formula = "=IF(OR(T4=0, T4=""PAS""),""X"", (AJ4/AK4))"

你需要使用""逃避"在一个字符串内。另外 - 我认为你在公式中需要逗号而不是分号 - 但也许这是一个区域设置,你可以单独留下分号(我必须使用逗号在我的机器上测试它)。您还在前面有一个迷路等号,在公式字符串中有一个缺少的等号。如果你不包括" ="在IF之前,Excel会将其视为您在单元格中插入的字符串。

答案 1 :(得分:1)

您的代码需要进行修改,以反映以下事实:(1)您需要在公式中包含实际引号,目前它实际上只是结束了VBA自己使用的引号,以及(2)您需要结束整个引号用的东西,以便VBA知道你的公式文本是完整的。像这样:

Range=("n4").Formula = "IF(OR(T4=0;T4=""PAS"":);""X""; (AJ4/AK4))"

另一种方法是用ASCII字符34替换引号的插入,如https://stackoverflow.com/a/28507279/5090027所示。