MICROSOFT

EP03. “Do Until Loop Do Until 循环”

首页 Microsoft 工具 Excel · VBA · Loop · EP03
约 4 分钟· #EP03#Excel#Loop
🔒 登录后可标记已读
  • Do Until ... Loop 是 VBA 里不算常用但很实用的循环结构
  • 写在 Do UntilLoop 之间的代码会持续重复执行,直到 Do Until 后面的条件变成真为止
  • 前置知识:For 循环的基本概念
  • 学完能理解 Do UntilFor 的差别——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

代码说明

  1. 声明 i 并初始化为 1
  2. Do Until i > 6 表示:只要 i 还没有大于 6,就持续执行 Do UntilLoop 之间的代码
  3. Cells(i, 1).Value = 20 把第 i 行第 1 列的单元格值设成 20
  4. i = i + 1 手动把 i 加 1——这一步很关键,Do Until 不会像 For 那样自动递增计数器,必须自己在循环体里写递增逻辑,否则会变成无限循环
  5. 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 UntilDo While 的判断方向差异

常见错误

  • 忘记在循环体里写 i = i + 1 这类递增语句——Do Until 不会自动更新计数器,条件永远不会变成真,程序会陷入无限循环卡死 Excel
  • Do Until 是「直到条件为真才停」,跟 Do While(直到条件为假才停)逻辑刚好相反,两者容易搞混,写之前要想清楚自己要的是哪一种
  • Do Until 是先判断条件再执行循环体(跟 Do ... Loop Until 先执行再判断不同),如果条件一开始就已经成立,循环体一次都不会执行

Sources

Blog / Website:

  1. Do Until Loop