2017-03-14 5 views
1

루프가 중단되지 않는 것 같습니다. 내가 어디서 잘못 될지 모르겠습니다. 탭 "ABC"의 셀 C5 = 44.5 %. 탭 "ABC"의 셀 C4 = 32 %. 열 E에서 32 %에서 45 % 사이의 비율을 나열해야합니다. SO E9 = 32 %, E10 = 33 %, E22 = 45 %. 셀 E9를 셀 C4에 연결했습니다. 매크로가 E10 셀에서 채우기 시작합니다. 탭 "ABC"의 셀 C2 = 9Excel VBA에서 루프까지 수행

내 매크로는 계속 실행되며 45 %에서 멈추지 않습니다.

Sheets("ABC").Select 
i = Worksheets("ABC").Range("C2").Value + 1 

Do Until Cells(i, 5).Value <= Round(Worksheets("ABC").Range("C5").Value, 0) 
    Cells(i, 5).Value = Cells(i - 1, 5).Value + 0.01 
    i = i + 1 
Loop 

End Sub 
+0

'<='대신'> ='이되어서는 안됩니까? – Ralph

답변

1

당신은 꾸준히 + 0.01에 의해 Cells(i - 1, 5).Value을 증가하고있다.

따라서 Cells(i - 1, 5).Value이 커집니다. 따라서, 나는 줄 것을 가정입니다 :

Do Until Cells(i, 5).Value <= Round(Worksheets("ABC").Range("C5").Value, 0) 

정말해야합니다 :

Do Until Cells(i, 5).Value >= Round(Worksheets("ABC").Range("C5").Value, 0) 

을 또한 올바르게 시작 지점을 설정 잊고있다. 게시물을 올바르게 이해하면 시작 지점은 Range("C4").Value이어야합니다.

>=을 사용하고 있고 =을 사용하지 않으므로 반올림하지 않아도됩니다. 따라서 정확한 일치가 있는지 여부는 중요하지 않습니다. Range("C5")에 지정된 임계 값을 전달하면됩니다. 루프가 특정 값으로 Cells(i, 5).Value 후 검사를 설정하기 때문에 검사가 실행될 때 마지막으로

, Cells(i, 5).Value 항상 ="" (빈)입니다. 따라서, 당신은 당신이 다음 찾고있는 내가 추측하고 모두 함께 가져 오는 Do Until Cells(i - 1, 5).Value...

전에 행을 확인해야합니다

Option Explicit 

Sub tmpSO() 

Dim i As Long 
Dim ws As Worksheet 

Set ws = ThisWorkbook.Worksheets("ABC") 
ws.Activate 
i = ws.Range("C2").Value + 1 

ws.Cells(i - 1, 5).Value2 = ws.Range("C4").Value2 
Do Until ws.Cells(i - 1, 5).Value2 >= ws.Range("C5").Value2 
    ws.Cells(i, 5).Value = ws.Cells(i - 1, 5).Value + 0.01 
    i = i + 1 
Loop 

End Sub 
+0

이렇게하면 루프를 건너 뛰고 매크로가 끝납니다. – Qbr219

0

이 시도 :

Sheets("ABC").Select 
i = Worksheets("ABC").Range("C2").Value + 1 

Do Until Cells(i - 1, 5).Value >= Worksheets("ABC").Range("C5").Value 
    Cells(i, 5).Value = Cells(i - 1, 5).Value + 0.01 
    i = i + 1 
Loop 
0

랄프 & PSPL,

많은 감사합니다. 당신의 제안이 나를 도왔고 일했습니다. 이것은 나와 같은 새로운 코더들에게 훌륭한 포럼입니다. 도와 줘서 고마워.

For the benefit of the larger group, this is what I have finally used. 

Sheets("ABC").Select 
i = Worksheets("ABC").Range("C2").Value + 1 

Do Until Cells(i - 1, 5).Value >= Worksheets("ABC").Range("C5").Value 
    Cells(i, 5).Value = Cells(i - 1, 5).Value + 0.01 
    i = i + 1 
Loop 

End Sub