2016-03-27 7 views
1

Do Until Loopがいくつか含まれているコードで作業していましたが、最初のループは正常に動作しますが、2番目と他のループは完全にバイパスされます。ExcelのVBAは2回目まで完全にループしません。

私は独立したサブルーチンで個々のループを実行し、必要に応じて機能しました。

私も以前のスレッドをチェックして、同じ問題の例を見つけることができないようです。

最初に、最初のループからより大きいと思われる2番目のループに対してi = 2を再宣言しようとしました。i。 これに加えて、私はiからへの変数を2番目のループで変更しようとしましたが、これも違いはありません。ここで

私が使用していたコードの例:

Dim i As Long 
i = 2 
Do Until i > lastRow 
    Cells(i, 16).Select 
    If ActiveCell.Offset(rowOffset:=0, columnOffset:=-13) <> "Invoice" Then 
     ActiveCell = "" 
     ElseIf ActiveCell.Offset(rowOffset:=0, columnOffset:=-12) <> "" Then 
     ActiveCell = "" 
     ElseIf ActiveCell.Offset(rowOffset:=0, columnOffset:=-9) <> "Usage Actual" Then 
     ActiveCell = "" 
     ElseIf ActiveCell.Offset(rowOffset:=0, columnOffset:=-3) = "Final" Then 
     ActiveCell = "" 
     Else: ActiveCell. _ 
     FormulaR1C1 = ' vlookup formula to data source 
     End If 
    i = i + 1 
Loop 

     ' Additional code to paste out formula and save work book 
Dim j As Long 
j = 2 
Do Until j > lastRow 
' from here the process skips right past the next loop to the Additional code to paste out formula and save work book noted below 
    Cells(j, 17).Select 
    If ActiveCell.Offset(rowOffset:=0, columnOffset:=-1) = "Yes" Then 
     ActiveCell.FormulaR1C1 = ' vlookup formula to data source 
     Else: ActiveCell = "" 
     End If 
    j = j + 1 
Loop 
     ' Additional code to paste out formula and save work book 

私は数日間、これに取り組んできたとアイデアが不足しています。

+0

'Do Until j> lastRow'にブレークポイントを設定してデバッグを試みましたか?そのコード行が実行されたときに何が起こるかを知ることは興味深いでしょう... –

+0

私は両方のループに 'MsgBox'を追加しました。両方のループの内部に入っています。 – Raju

+0

これも複製できません。私は、2番目のループで列のオフセットが間違っているか、 "Yes"のセルが見つからないと推測しています。最初のループの数式の結果に依存する場合は、それらの間に 'ActiveSheet.Calculate'を入れてみてください。 – Comintern

答えて

1

私は最終的にコードを動作させることができました。 方法は2つの変更を伴って終了しました。

最初に私は変数を変数に渡します。上にポストされたコードは最初の変数としてiで始まり、次はj、次にkとなります。

これは独自のもので、各ループ間に追加のプロセスを追加するまで、この問題を最初に解決しませんでした。

たとえば、最初のループの後に、別の列でルックアップを実行し、そのルックアップをlastRowにコピーするループを使用せずにコピーするコードを追加しました。私は次のループでこれを追跡し、さらにコードを追加し、ループを完了する必要はありませんでした。

私は幸いにも、プロジェクトのすべてのループを分割するのに十分な追加のプロセスがありました。私はまだ複数のループを次々に実行することは問題ではないと考えていますが、私はまだより効果的な解決策を見つける必要があります。

関連する問題