vba - “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
解决方案
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 当然,您可以使用_
尽管将语句分成多行。有关更多信息,请参阅此。