VBA嵌套If Then Else语句语法报错:Else without If求解
解决VBA编译错误“Else without If”
你的代码核心问题是For循环的语法错误,导致编译器无法正确解析外层If的结构,才会触发报错。具体错误点和修正方法如下:
错误分析
- VBA的For循环不需要加
Do关键字,你写的For i = 1 To var2 Do是语法错误,多余的Do会打乱代码的结构层级。 - For循环必须用
Next语句闭合,你手动写i = i + 1是错误的——VBA的For循环会自动处理变量递增,而且缺失Next会让编译器认为外层If的代码块还没结束,所以外层的Else就找不到对应的If了。
修正后的代码
If Not var1 Is Nothing Then For i = 1 To var2 ' Copy-Paste some records If ConditionA Then ' Copy-Paste some other records Else MsgBox "False Condition A" End If Next i ' 闭合For循环 Else MsgBox "False Condition1" End If
逻辑说明
修正后的代码完全匹配你的需求:
- 外层条件
Not var1 Is Nothing成立时,执行包含内部条件的For循环; - 内部条件
ConditionA不成立时,弹出提示后退出内部If,继续执行后续循环逻辑; - 外层条件不成立时,直接弹出提示,退出整体逻辑。
内容的提问来源于stack exchange,提问作者southpaw026
相关产品推荐
相关产品推荐

