2016-06-27 5 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 

Im пытается добавить значение к массиву, если условие истинно. Я успешно добавил его, но цикл for не будет изменять размер для циклического добавления добавленного элемента. Первоначально массив содержит 12 элементов, тогда я добавляю 13-е, но цикл делает для распознавания 13-го элемента и только циклов 12 раз. Любые предложения о том, как получить цикл for для цикла 13 раз?Добавление массива VBA

+0

Почему еще одна итерация, просто сделайте то, что находится внутри 'if' statement ?? Изменить: uh, цикл 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

Наверное, тупой вопрос, но я поставил i под do до цикла или внутри него? – aggieman

+0

это не изменило верхний – aggieman

+0

Я исправил его. Большое вам спасибо за вашу помощь! – aggieman

Смежные вопросы