VBA投掷'其他没有'如果'错误

我正在尝试下面的代码,并重复抛出“如果没有,如果”等类似的错误。 我只是不知道错误在哪里,因为每个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 

乍一看, If我看起来不错,但是我注意到两个都缺lessLoop

它应该是这样的:

 Do While varHRA < salary 'Do Stuff Loop 

Exit Do用于在While为true之前退出循环,但始终需要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

当我用LoopreplaceExit Do ,错误消失,编译代码。

所以,你应该在你的代码中replaceExit Do by Loop

看起来像使用“退出”而不是“循环”。 “退出”将退出Do循环,这是你想要这样做的方式吗?