Excel vba の for ループ内で if ステートメントを使用すると問題が発生します。デバッガーの出力は、私が期待するものではありません。達成しようとしていることの完全なコードを投稿できますが、理解できないものに絞り込んだと思います。これが私のコードです:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 9 To 60 Step 3
If Cells(i, "DR").Value < Cells(i, "EB").Value Then
Debug.Print i & "-ifloopstart"
Cells(i, "DR").Value = 999999
Debug.Print i & "-ifloopend"
End If
Next i
End Sub
デバッガーの出力は次のとおりです。
9-ifloopstart
33-ifloopstart
51-ifloopstart
51-ifloopend
33-ifloopend
9-ifloopend
ただし、次のことを期待していました。
9-ifloopstart
9-ifloopend
33-ifloopstart
33-ifloopend
51-ifloopstart
51-ifloopend
誰かがこれがどのように機能するか説明できますか? if ステートメントを終了するのではなく、if ステートメントの先頭にループバックしているようです。期待どおりの出力が得られるようにコードを変更するにはどうすればよいですか? 私はこれに何時間も苦労してきましたが、とてもシンプルに思えます:(。