2011-10-02 2 views
2

다음 코드를 반복적으로 'else if without if'및 이와 유사한 오류를 던지고 있습니다. 각 오류가 제대로 종료 되었기 때문에 오류가있는 곳을 파악할 수 없습니다. 여기 'else if if else'오류를 던지는 VBA

코드입니다 :

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 
+1

코드를 강조 표시하고 '{}'버튼을 클릭하여 코드를 포맷하십시오. 나는 이번에 너를 위해 그것을했다. – Fionnuala

+0

감사합니다. 이 사이트를 처음 사용하는 것입니다. 그것을 명심하십시오. –

답변

8

If의 처음 눈에 나에게 좋아 보이지만 둘 다 Do s는 Loop 누락 된 것으로 나타났습니다.

은 다음과 같아야합니다

Do While varHRA < salary 
    'Do Stuff 
Loop 

Exit DoWhile 뒤에 조건이 참이되기 전에 루프를 종료하는 데 사용됩니다,하지만 당신은 항상 Loop 키워드가 필요합니다.

그래도 문제가 계속되면 정확한 오류 메시지를 게시하십시오.


편집 :

Public Function Test() 

    If 1 = 0 Then 

     Do While 1 = 0 

      Stop 

     Exit Do 

    Else 

     Stop 

    End If 

End Function 

: 난 그냥 (I Excel에서이 컴퓨터에 전용 액세스를 설치하지 않은) MS Access에서 VBA에서 문제를 재현하려

이 간단한 코드는 다음과 같은 오류 메시지를 표시합니다.

Compile error: Else without If

Exit DoLoop으로 바꾸면 오류가 사라지고 코드가 컴파일됩니다.

코드에서 Exit DoLoop으로 대체해야합니다.

+0

안녕하십니까, 정확한 메시지는 '컴파일 오류 :없는 경우'입니다. –

+2

@Chinmay Kamat : 오류 메시지가 'Loop'에 대해 아무런 언급이 없더라도 오류가 발생하는 것 같습니다. 내 대답을 다시 읽으십시오. –

+1

이것은 확실히 답입니다. 저는 또한 테스트를 거쳤으며 Excel에서도 테스트했습니다. – Fionnuala

2

'Loop'대신 'Exit Do'를 사용하는 것처럼 보입니다. 'Do Do'가 Do 루프를 빠져 나옵니다. 이것이 당신이 원하는 행동입니까?

+0

네, 그렇게하고 싶었어요. 그게 문제 야? –

+2

@Chinmay Kamat : 그런 식으로 그렇게되기를 정말로 원하십니까? 어떤 종류의 조건없이'Exit Do'를 루프에 넣으면 ** 루프를 빠져 나옵니다 **. 그래서 전혀 루프를 돌지 않고 단지'Do' 다음에 코드를 실행하여'Exit Do'를 치기까지 한 번만 실행합니다. –