Excel VBA删除行
我正试图创build一个程序,将删除或创build基于用户放在某一行的行。 例如,如果用户放入3,但只有2行,则会插入1行。 如果有5行,它会删除第4行和第5行。它似乎应该是一个简单的代码,但我最困难的时候实际上删除/创build我想要的行。 我的代码如下:
Sheets("Summary").Select x = Cells(29, 3).Value i = 7 Sheets("Weighted I").Select Do Until Cells(i, 1).Value = "TOTAL" i = i + 1 Loop i = i - 7 If i > x Then dlt = i - x + 7 For cnt = 7 To dlt Rows(cnt).EntireRow.Delete cnt = cnt + 1 Next ElseIf i < x Then crt = x - i + 7 For cnt = 7 To dlt Rows(cnt).EntireRow.Insert cnt = cnt + 1 Next End If
删除行时,这是一个常见的问题。 想象一下,你正在通过你的for循环一次一行,并删除:
For cnt = 7 To dlt Rows(cnt).EntireRow.Delete cnt = cnt + 1 Next
你在第7行,你删除它。 这会将您的所有行都移动。 第8行现在是第7行。然后,您将cnt
variables增加1(至8)并删除第8行。但是您错过了第8行的第7行……这是疯狂的香蕉。
相反,改变你的for循环向后工作:
For cnt = dlt to 7 step -1 Rows(cnt).EntireRow.Delete cnt = cnt - 1 Next
这样行移动不会影响你的cnt
。