2016-06-27 1 views
1
For j = 1 To 8 
Sheet5.Cells(j + 1, 2) = 480 
Next 
t = 0 
c = 0 
    For j = LBound(arrayTime) + 1 To UBound(arrayTime) 
     MsgBox "j " & j 
     'MsgBox (t) 
     numMins = Sheet5.Cells((j + 1) - (8 * c), 2) - arrayTime(j) 
     If numMins < 0 Then 
     t = t + 1 
     ReDim Preserve arrayTime(numrows - 1 + t) 
     arrayTime(numrows - 1 + t) = arrayTime(j) 
     MsgBox (arrayTime(numrows - 1 + t)) 
     Else 
     Sheet5.Cells((j + 1) - (8 * c), 2) = numMins 
     End If 
     If j = 8 * (c + 1) Then 
     c = c + 1 
     End If 
     MsgBox ("end " & t) 
    Next 

조건이 true이면 값을 arrayTime에 추가하려고합니다. 나는 성공적으로 추가했지만 for 루프는 추가 된 요소를 통해 반복하도록 치수를 재조정하지 않습니다. 배열은 원래 12 개의 원소를 포함하고 있습니다. 그러나 13 번째 원소를 추가합니다. 그러나 13 번째 원소를 인식하고 12 번째 원소 만 반복합니다. for 루프를 13 회 반복하는 방법에 대한 제안 사항은 무엇입니까?VBA 배열 추가

+0

다른 반복문이 필요한 이유는 무엇입니까? 편집 : 어, for 루프. numMins = Sheet5.Cells ((j + 1) - (8 * c), 2) - arrayTime (j)'를 추측하면? – findwindow

+0

루프에서 끝 번호를 변경할 수 없으면 고정됩니다. 어떤 유형의 Do Loop로 변경해야합니다. –

+0

왜냐하면 셀의 숫자에서 배열의 마지막 요소를 뺄 필요가 있기 때문입니다. if 문이 참이 아닐 때까지 루프를 돌리고 싶습니다. – aggieman

답변

0

루프 카운터 (예 : i)를 추가하고 LBound(arrayTime) + 1으로 설정 한 다음 Do Until (i = UBound(arrayTime))을 사용합니다. 이렇게하면 VBA가 각 루프 전에 상한을 다시 계산해야합니다.

+0

아마도 멍청한 질문을하지만, 내가 할 때까지 루프 또는 그 안에 넣어합니까? – aggieman

+0

이것은 위 바운드를 변경하지 않았다 – aggieman

+0

나는 그것을 고쳤다. 도와 주셔서 정말 감사합니다! – aggieman