MICROSOFT

EP01. “Debugging 调试代码”

首页 Microsoft 工具 Excel · VBA · Macro Errors · EP01
约 3 分钟· #EP01#Excel#Macro Errors
🔒 登录后可标记已读
  • 宏跑出来的结果不对,但代码看起来「应该没问题」——光盯着代码读是读不出答案的,得看它实际怎么跑
  • F8 逐行执行,VBA 每次只走一行,工作表和变量的变化看得一清二楚
  • 代码长、不想一行行按的话,在想暂停的那行设断点(Breakpoint),跑到那里自动停下来检查
  • 学完能在代码出错或结果跑偏时,一步步揪出问题出在哪一行

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


示例代码

Dim i As Integer, j As Integer

For i = 1 To 2
    For j = 1 To 5
        Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
    Next j
Next i

方法一:逐行执行(Single Step)

把光标点在代码最前面,反复按 F8,VBA 每按一次只走一行——工作表上跑出了什么变化、每个变量当下是什么值,都能一步一步盯着看。

[截图:按 F8 逐行执行时,VBA 编辑器里当前执行到的那一行代码被黄色高亮标示]


方法二:断点(Breakpoint)

在代码编辑器左侧灰色区域点一下想暂停的那一行,会出现一个红点(断点)。宏跑到这一行就自动停住,检查前面的结果没问题了,再放行继续往下跑。

[截图:VBA 编辑器左侧灰色区域点出的红色断点圆点,以及宏运行到该行自动暂停、整行变成黄色底的效果]


方法怎么选

方法适合场景备注
逐行执行 F8代码短,想每一行都看一次反复按 F8,一行一行走
断点 Breakpoint代码长,只想检查某一段点灰色区域设红点,跑到那里自动暂停

学完你会

  • ✅ 用 F8 逐行执行代码,观察每一步的变化
  • ✅ 设置断点,让宏跑到指定位置自动暂停
  • ✅ 出错或结果不对时,一步步找出问题出在哪一行

常见错误

  • 代码很长却没设断点,从头到尾一行一行按 F8,浪费时间
  • 断点设完忘记移除,之后正式跑宏时又意外在同一个地方暂停
  • 只看最终结果对不对,没有用调试技巧一步步确认中间过程哪一步开始出错

Sources

Blog / Website:

  1. Debugging