Chi*_*mat 2 excel vba if-statement
我正在尝试以下代码,并反复抛出'else if 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
Run Code Online (Sandbox Code Playgroud)
该If看看行不行给我的第一眼,但我注意到,这两个Dos的缺失Loop.
它应该如下所示:
Do While varHRA < salary
'Do Stuff
Loop
Run Code Online (Sandbox Code Playgroud)
Exit 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
Run Code Online (Sandbox Code Playgroud)
这段简单的代码给了我完全相同的错误信息:
编译错误:没有If的其他错误
当我替换为Exit Doa时Loop,错误消失并且代码编译.
因此,您应该在代码中替换Exit Doby Loop.