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

なぜ、別の反復で、 'if'文の中に何をすればいいですか?編集:ああ、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

恐らく疑わしい質問ですが、私はdo untilループかその中に入れますか? – aggieman

+0

これは上限を変更していません – aggieman

+0

私はそれを修正しました。手伝ってくれてどうもありがとう! – aggieman