1

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 ステートメントの先頭にループバックしているようです。期待どおりの出力が得られるようにコードを変更するにはどうすればよいですか? 私はこれに何時間も苦労してきましたが、とてもシンプルに思えます:(。

4

1 に答える 1