私は列を下り、そのセルがリストされているセキュリティタイプのいずれかと等しいかどうかを確認するループを持っています。そうでなければ、データオフセット1の列を切り取って左に貼り付けます。ときには、データがオフセットされて1〜3列になっているので、i = i-1を追加してifをsat化するまで同じ行をチェックするのです。このコードでは、2つの問題が発生します。エンドレスループを作成する複数のステートメントまたは複数のステートメントの場合
1.)複数のorのif文のコードがよりシンプルになっていますか?
2.)このコードはセクションで動作しますが、シート全体(〜29K行)で実行されるときは無限ループに入ります。これがどうして起こるのか?
LastCashrow = Sheets("Cash Data").Range("A" & Sheets("Cash Data").Rows.Count).End(xlUp).Row
For i = 8 To LastCashrow
SecType = Left(Cells(i, 5), 2)
If SecType = "aw" Or SecType = "ca" Or SecType = "cb" Or SecType = "cd" Or SecType = "cl" Or SecType = "cp" Or SecType = "cs" Or SecType = "cv" Or SecType = "ep" _
Or SecType = "ex" Or SecType = "fi" Or SecType = "fm" Or SecType = "gb" Or SecType = "gm" Or SecType = "hf" Or SecType = "lp" Or SecType = "mb" _
Or SecType = "mf" Or SecType = "oa" Or SecType = "pf" Or SecType = "pr" Or SecType = "ps" Or SecType = "pt" Or SecType = "re" Or SecType = "rl" _
Or SecType = "tb" Or SecType = "tp" Or SecType = "ut" Or SecType = "wt" Or SecType = "zb" Or SecType = "zt" Then
ElseIf IsEmpty(SecType) = "True" Then
Exit For
Else
Set Shift = Range(Cells(i, 5), Cells(i, 17))
Shift.Cut
Cells(i, 4).Select
ActiveSheet.Paste
Application.CutCopyMode = False
i = i - 1
End If
Next i
チェックそれがtrueの場合、それは全く何の価値を持っている場合は、チェックし、その後、 – mast3rd3mon
他に、最終的には削除しない 'I = I - を1 'と下からループします。 'For i = LastCashrow to 8 Step - 1' –
@ScottCranerなぜですか? –