首页 > 解决方案 > 我在这段代码中遗漏了什么:“否则没有 if 错误”?

问题描述

我正在尝试运行此代码,该代码首先声明wsD然后WsS依赖于“数据”选项卡中的单元格。我不断得到一个

else 没有 if 错误。

Set wsD = ThisWorkbook.Sheets("Data")

    If wsD.Range("C4") = "AL" Then Set wsS = ThisWorkbook.Sheets("AL_Sim")
    ElseIf wsD.Range("C4") = "COLL" Then Set wsS = ThisWorkbook.Sheets("COLL_Sim")
    ElseIf wsD.Range("C4") = "COMP" Then Set wsS = ThisWorkbook.Sheets("COMP_Sim")
    ElseIf wsD.Range("C4") = "GL" Then Set wsS = ThisWorkbook.Sheets("GL_Sim")
    ElseIf wsD.Range("C4") = "EPL" Then Set wsS = ThisWorkbook.Sheets("EPL_Sim")
    ElseIf wsD.Range("C4") = "LAW" Then Set wsS = ThisWorkbook.Sheets("LAW_Sim")
    ElseIf wsD.Range("C4") = "POL" Then Set wsS = ThisWorkbook.Sheets("POL_Sim")

    End If
Next

标签: excelvbaif-statement

解决方案


If语句有两种合法语法。

排队:

If {bool-expression} Then {statement}

并阻止:

If {bool-expression} Then
    {statements}
End If

因此,如果关键字后面的同一行上有语句Then,VBA 会将If语句解析为内联语法。

因此,由于语句是完整的,下一个以开头的语句ElseIf对编译器来说没有意义:有一个“没有 if 的 else”。


推荐阅读