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行。然后,您将cntvariables增加1(至8)并删除第8行。但是您错过了第8行的第7行……这是疯狂的香蕉。

相反,改变你的for循环向后工作:

 For cnt = dlt to 7 step -1 Rows(cnt).EntireRow.Delete cnt = cnt - 1 Next 

这样行移动不会影响你的cnt