EP03. “Do Until Loop Do Until 循环”
🔒 登录后可标记已读Do Until ... Loop是 VBA 里不算常用但很实用的循环结构- 写在
Do Until和Loop之间的代码会持续重复执行,直到Do Until后面的条件变成真为止 - 前置知识:
For循环的基本概念 - 学完能理解
Do Until和For的差别——Do Until更适合「不确定要循环几次,只知道什么时候该停」的场景
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
方法怎么选
| 循环类型 | 适合场景 | 备注 |
|---|---|---|
For ... Next | 已知要循环几次(比如固定跑 10 次) | 计数器自动递增,最省事 |
Do While ... Loop | 不确定要循环几次,条件成立才继续 | 先判断再执行,条件一开始不成立就一次都不跑 |
Do Until ... Loop | 不确定要循环几次,条件成立就停止 | 跟 Do While 方向相反,容易搞混,写之前想清楚要哪一种 |
完整 VBA 代码
Dim i As Integer
i = 1
Do Until i > 6
Cells(i, 1).Value = 20
i = i + 1
Loop
代码说明
- 声明
i并初始化为 1 Do Until i > 6表示:只要i还没有大于 6,就持续执行Do Until和Loop之间的代码Cells(i, 1).Value = 20把第i行第 1 列的单元格值设成 20i = i + 1手动把i加 1——这一步很关键,Do Until不会像For那样自动递增计数器,必须自己在循环体里写递增逻辑,否则会变成无限循环Loop标记循环体结束,回到Do Until重新判断条件
运行结果
i 从 1 开始,每次循环把当前行的 A 列设成 20,再自增 1,直到 i 变成 7(大于 6)才停止。最终 A1 到 A6 这 6 个单元格都被填入 20,循环总共执行了 6 次。
怎么运行
Alt + F11 打开 VBA 编辑器,把代码放进按钮点击事件,按 F5 或点命令按钮执行,A1:A6 会被填入 20。
学完你会
- ✅ 写出
Do Until ... Loop结构,让循环执行到条件成立才停 - ✅ 知道要在循环体里手动递增计数器,避免无限循环
- ✅ 分清
Do Until和Do While的判断方向差异
常见错误
- 忘记在循环体里写
i = i + 1这类递增语句——Do Until不会自动更新计数器,条件永远不会变成真,程序会陷入无限循环卡死 Excel Do Until是「直到条件为真才停」,跟Do While(直到条件为假才停)逻辑刚好相反,两者容易搞混,写之前要想清楚自己要的是哪一种Do Until是先判断条件再执行循环体(跟Do ... Loop Until先执行再判断不同),如果条件一开始就已经成立,循环体一次都不会执行
Sources
Blog / Website: