在 VBA 里,Do While 是最常用、最稳健的循环结构:先判断条件,满足就循环,不满足就退出。特别适合:不知道要循环多少次,但知道 “什么时候停” 的场景。一、基础语法
Do While 条件
执行语句
Loop
案例 1:自动生成 1~100 序号
Sub DoWhile_生成序号()
Dim i AsInteger
i =1
Do While i <=100
Cells(i,1)= i
i = i +1
Loop
MsgBox "1~100序号生成完成!"
End Sub
案例 2:批量删除 A 列空白行(正确版)
这是你指出问题的重点:删除行必须从下往上删,否则行号会乱跳,导致漏删。
Sub DoWhile_删除空白行()
Dim k AsInteger
k = Cells(Rows.Count,1).End(xlUp).Row ' 最后一行有数据的行号
' 从下往上循环,避免行错乱
Do While k >=1
If Cells(k,1)="" Then
Rows(k).Delete
End If
k = k -1
Loop
MsgBox "A列空白行已全部删除!"
End Sub
为什么这样写才对?
- 从上往下删:删完一行,下面行会上移,行号变了,会跳过行
案例 3:累加 1~100 的和
Sub DoWhile_累加求和()
Dim i AsInteger, s AsLong
i =1
s =0
Do While i <=100
s = s + i
i = i +1
Loop
MsgBox "1到100的和 = "& s
End Sub
小结