首页 > 解决方案 > “else without if”在 excel vba 中出现此错误

问题描述

我在下面的代码中收到错误“else without if”。有人可以帮忙吗?

For I = 2 To LR5
   If (Range("Ae" & I).Value = 5 & Range("x" & I).Value = 2 & Range("y" & I).Value = 2) Then Range("ah" & I).Value = "30000"
   ElseIf (Range("Ae" & I).Value = 5 & Range("x" & I).Value = 4 & Range("y" & I).Value = 4) Then Range("ah" & I).Value = "60000"
   ElseIf Range("Ae" & I).Value = "29" Then Range("ah" & I).Value = "10000"
   ElseIf Range("Ae" & I).Value = "30" & Range("x" & I).Value = "4" Then Range("ah" & I).Value = "80000"
   ElseIf Range("Ae" & I).Value = "30" & Range("x" & I).Value = "2" Then Range("ah" & I).Value = "50000"
   ElseIf Range("Ae" & I).Value = "17" & Range("x" & I).Value = "2" Then Range("ah" & I).Value = "60000"
   ElseIf Range("E" & I).Value = "RRUS11" Then Range("AH" & I).Value = "80000"
   ElseIf Range("E" & I).Value = "RRUS11+RRUSA2" Then Range("AH" & I).Value = "80000"
   ElseIf Range("E" & I).Value = "RRUS12" Then Range("AH" & I).Value = "120000"
   End If
Next

标签: vba

解决方案


TL;DR:您需要将所有内容Then移至新行。


在 VBA 中,If单行语句具有以下特点:

  • 他们从来没有End If
  • 它们必须完全写成一行。1

例如:

If someCondition Then DoSomething
If someCondition Then DoSomething Else DomeSomethingElse
If someCondition Then DoSomething(x) Else If anotherCondition Then DoSomething(y) Else DoSomething(z)

但是,one-line-if应该专门用于简短的语句。Else当你有(更不用说)时使用它通常不是一个好主意Else If。所以,在上面的代码块中,不推荐第二个和第三个例子。相反,你应该If这样写你的陈述:

If someCondition Then
    DoSomething (x)
Else If anotherCondition Then
    DoSomething (y)
Else
    DoSomething (z)
End If

1 当然,您可以使用_尽管将语句分成多行。有关更多信息,请参阅


推荐阅读