Excel 循环不停止时执行
我创建此宏是为了从第6行开始,删除第5列中具有Excel 循环不停止时执行,excel,loops,vba,Excel,Loops,Vba,我创建此宏是为了从第6行开始,删除第5列中具有0值的行。它应该停在第2列有空单元格的行上。 我的数据只有大约600行。但是,在第20行前后,电子表格一直在等待,我需要按Esc键停止它。当它停止时,它位于最后一行,但不执行最后一部分,即对第4列求和 如果我再次按下宏,它可以很好地处理新数据,并在第4列中添加总和。(顺便说一下,这是我在excel中的第一个宏) 子删除行() ' '删除行宏 '键盘快捷键:Ctrl+d ' 单元格(6、5)。选择 执行While(单元格(ActiveCell.Row,
0
值的行。它应该停在第2列有空单元格的行上。
我的数据只有大约600行。但是,在第20行前后,电子表格一直在等待,我需要按Esc
键停止它。当它停止时,它位于最后一行,但不执行最后一部分,即对第4列求和
如果我再次按下宏,它可以很好地处理新数据,并在第4列中添加总和。(顺便说一下,这是我在excel中的第一个宏)
子删除行()
'
'删除行宏
'键盘快捷键:Ctrl+d
'
单元格(6、5)。选择
执行While(单元格(ActiveCell.Row,2)”)
Do While(单元格(ActiveCell.Row,5)=0)
行(ActiveCell.Row)。选择
选择。删除移位:=xlUp
环
单元格(ActiveCell.Row+1,5)。选择
环
单元格(ActiveCell.Row,4)。选择
尺寸cel1为字符串,cel2为字符串
cel1=ActiveCell.Offset(-1,0).End(xlUp).Address
cel2=ActiveCell.Offset(-1).地址
ActiveCell.Value=“=sum(&(cel1)&):&(cel2)&”)
端接头
删除行时自下而上循环,否则可能会跳过行
sub deleteRows()
dim i as long
with worksheets("Sheet1")
for i=.cells(.rows.count, "B").end(xlup).row to 6 step -1
if .cells(i, "E").value2 =0 then
.cells(i, "E").entirerow.delete
end if
next i
with .cells(.rows.count, "D").end(xlup)
.offset(1, 0).formula = "=sum(" & .parent.range(.cells(1), .cells(1).end(xlup)).address & ")"
end with
end with
end sub
缩进代码
为所有单元格和范围调用定义父工作表引用
它工作得非常漂亮(快速、干净),非常感谢。我第一次就认为它是正确的,但几分钟后,我意识到我必须以.Parent的一个级别退出嵌套的With语句。
sub deleteRows()
dim i as long
with worksheets("Sheet1")
for i=.cells(.rows.count, "B").end(xlup).row to 6 step -1
if .cells(i, "E").value2 =0 then
.cells(i, "E").entirerow.delete
end if
next i
with .cells(.rows.count, "D").end(xlup)
.offset(1, 0).formula = "=sum(" & .parent.range(.cells(1), .cells(1).end(xlup)).address & ")"
end with
end with
end sub