『マクロの行の削除について』(たかい)
75未満の数値を含む行を削除するマクロを作成したいのですがLoop文の作成が上手くいかず、?に入る文について教えていただけますでしょうか。
Dim i As Integer For i = 5 To Cells(Rows.Count, 5).End(xlUp).Row Do While ? If Cells(i, 10) < 75 Then Cells(i, 10).EntireRow.Delete End If i = i + 1 Loop Next i
また、IF文のみで実行すると、何故一行ずつ削除されていき、まだ75未満の数値が残っている状態で終了してしまいます。
こちらの原因がわかる方がいましたらご教示ください。
よろしくお願いいたします。
< 使用 Excel:Excel2021、使用 OS:Windows11 >
Do ~ Loop自体不要でしょうね。 i = i + 1 も邪魔してます。
先に削除対象を確定させておいて、まとめてDelete掛ける。
Dim i As Long, u As Range For i = 5 To Cells(Rows.Count, 5).End(xlUp).Row If Cells(i, 10) < 75 Then If u Is Nothing Then Set u = Cells(i, 10) Else Set u = Union(u, Cells(i, 10)) End If Next i If Not u Is Nothing Then u.EntireRow.Select '.Delete
(白茶) 2024/07/19(金) 18:13:02
コードをステップ実行すると、どの様な動作をしているのか分かると思います。
その際、VBEでローカルウィンドウを表示して、変数iの変化を見るとより良いです。
ステップ実行 〜マクロを1行ずつ実行〜
https://hp.vector.co.jp/authors/VA016119/step/step01.html
私も白茶さんのコードを用いますが、
行削除のマクロで良く使われる方法として、
下の行から削除していく方法もあります。
Dim i As Long For i = Cells(Rows.Count, 5).End(xlUp).Row To 5 Step -1 If Cells(i, 10) < 75 Then Cells(i, 10).EntireRow.Delete End If Next i
(雨傘) 2024/07/19(金) 18:27:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.