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
私は数日間、これに取り組んできたとアイデアが不足しています。
'Do Until j> lastRow'にブレークポイントを設定してデバッグを試みましたか?そのコード行が実行されたときに何が起こるかを知ることは興味深いでしょう... –
私は両方のループに 'MsgBox'を追加しました。両方のループの内部に入っています。 – Raju
これも複製できません。私は、2番目のループで列のオフセットが間違っているか、 "Yes"のセルが見つからないと推測しています。最初のループの数式の結果に依存する場合は、それらの間に 'ActiveSheet.Calculate'を入れてみてください。 – Comintern