我正在尝试创建一个程序,该程序将根据用户在特定行中的内容来删除或创建行.例如,如果用户输入3,但只有2行,则它将插入1行.如果有5行,它将删除第4行和第5行。这似乎应该是一个简单的代码,但是我很难让它实际删除/创建我想要的行.我的代码如下:
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
最新回答
- 2021-1-71 #
相关问题
- excel vba:如何在VBA中连接字符串?excelvbavbaexcel2021-01-11 22:58
- 使用FileDialog打开工作簿并在Excel VBA中进行操作excelvbaexcelvbaopenfiledialog2021-01-10 21:25
- Vba Excel从关闭的文件执行vlookupexcelvbaexcelvbaexcelformulavlookup2021-01-07 06:56
- Excel VBA"对象'IwebBrowser2'的方法'文档'失败"excelvbaexcelvbawebscraping2021-01-07 08:54
- 使用通配符打开Excel工作簿excelexcelvbawildcardvba2021-01-07 15:25
这是删除行时的常见问题.想象一下,您一次遍历for循环并删除:
您位于第7行,并将其删除.这会将所有行上移.第8行现在是第7行。然后增加
cnt
变量乘以1(到8)并删除第8行。但是您错过了第7行,也就是第8行...这是疯狂的香蕉。相反,将for循环更改为向后工作:
这样,行移动不会影响您的
cnt
.