我正在尝试下面的代码,它反复抛出'else without if‘和类似的错误。我只是找不出错误在哪里,因为每个if都被正确地终止了。
代码如下:
Sub hra_macro()
Dim city As Boolean
Dim salary As Integer
Dim varHRA As Integer
Dim mimHRA As Integer
Dim maxHRA As Integer
Dim A As Integer
Dim B As Integer
Dim Rent As Integer
city = Range("b1").Value
salary = Range("b2").Value
Rent = Range("b3").Value
If city = True Then
varHRA = 0
A = Rent - (salary / 10)
B = salary * 0.5
Do While varHRA < salary
varHRA = varHRA + 1
If (varHRA < A And varHRA < B) Then
minHRA = varHRA
End If
If (A < varHRA And A < B) Then
minHRA = A
End If
If (B < varHRA And B < A) Then
minHRA = B
End If
If minHRA > maxHRA Then
maxHRA = minHRA
End If
Exit Do
Else '<<<<<<<<<<<<<<<<<<<< PROBLEM AREA
varHRA = 0
A = Rent - (salary / 10)
B = salary * 0.4
Do While varHRA < salary
varHRA = varHRA + 1
If (varHRA < A And varHRA < B) Then
minHRA = varHRA
End If
If (A < varHRA And A < B) Then
minHRA = A
End If
If (B < varHRA And B < A) Then
minHRA = B
End If
If minHRA > maxHRA Then
maxHRA = minHRA
End If
Exit Do
End If
Range("b4").Value = maxHRA
End Sub发布于 2011-10-02 18:13:07
乍一看,If看起来还不错,但我注意到两个Do都缺少Loop。
它应该看起来像这样:
Do While varHRA < salary
'Do Stuff
LoopExit Do用于在While后面的条件为真之前退出循环,但您始终需要Loop关键字。
如果问题仍然存在,请发布您得到的确切错误消息。
编辑:
我刚刚尝试在MS Access中重现您在VBA中遇到的问题(本机上没有安装Excel,只安装了Access):
Public Function Test()
If 1 = 0 Then
Do While 1 = 0
Stop
Exit Do
Else
Stop
End If
End Function这段简单的代码给我的错误消息与您得到的完全相同:
编译错误:没有If的Else
当我用Loop替换Exit Do时,错误就消失了,代码也编译了。
因此,您应该在代码中将Exit Do替换为Loop。
发布于 2011-10-02 18:15:55
看起来你使用的是'Exit Do‘而不是'Loop’。“exit Do”将退出Do循环,这是你想要的行为方式吗?
https://stackoverflow.com/questions/7625746
复制相似问题