【发布时间】:2017-02-15 14:30:09
【问题描述】:
所以我有一些 VBA 代码,旨在根据单元格中的值处理一些事情。读取单元格中的值并相应地运行代码。这没有问题。
If Target.Value = "something" Then
End If
ElseIf Target.Value = "something2" Then
End If
ElseIf Target.Value = "something3" Then
End If
ElseIf Target.Value = "something4" Then
End If
效果很好,但是如果我添加一个额外的 ElseIf 条件,我会得到“Else without If”的编译器错误。在第五个条件下将 ElseIf 更改为 Else 并不能解决问题。我的问题是我可以运行的 ElseIf 条件的数量是否有限制?我实际上只需要第五个就可以完全完成我正在尝试做的事情。我肯定条件内的代码没有错误。
【问题讨论】:
-
“这没有问题” 什么?确定????
-
Ahhhh 就是这样......代码有点乱,所以我假设最后一个 ElseIf 语句的 EndIf 在所有其他语句中,但事实并非如此。我的错误应该抓住那个。
-
我可以运行的 ElseIf 条件的数量是否有限制 - 没有(模块将在 10K 行之后停止编译)。限制是你可以在心里记下多少。在某一时刻,您应该考虑使用
Select Case块,如果可能的话,在另一时刻,您会考虑为每个案例设置一个单独的过程,也许还有一个运行适当方法的CallByName或Application.Run调用 - 然后你可以Dictionary键入Target.Value值并使用过程名称进行赋值,然后转到Application.Run strategies(Target.Value),使其成为 1-liner!
标签: vba excel if-statement