在实际开发过程中,我们无法一次性写对所有代码,出错是正常现象,需要反复检查修改。

使用 Excel 编辑器提供的代码调试功能,可以更快定位错误来源,提高开发效率。

VBA 编辑器包含多种调试方法,他们可以在工具栏【调试】菜单中找到。本篇介绍其中常用的调试功能。

vb实时监控是否有新的文件存储 vba监控变量_工具栏

1.运行代码 - F5

此功能虽然不在调试菜单里,但是它是最常用的调试方法。很多时候,我们只需要快速运行某一个过程,查看其结果。

F5 快捷键就是运行过程或函数的快速方法。把鼠标光标移动到想要运行的过程或函数内部,按 F5 键即可。

2.按行运行代码: F8

F8 快捷键可以从头按行运行代码,每次按 F8 键,就运行一行代码,然后暂停。

此方法的好处是可以一行一行运行代码,观察每一行代码运行结果,精确找到问题所在。

vb实时监控是否有新的文件存储 vba监控变量_工具栏_02

3.跳过子过程运行:SHIFT + F8

使用 F8 快捷键按行运行代码时,一个过程调用另外一个子过程时,子过程内部也会按行运行代码。

如果想跳过子过程中按行运行代码,可以使用 SHIFT + F8 快捷键。这样可以在父过程按行运行代码,子过程一次性运行所有代码,回到父过程继续按行运行。

4.跳出子过程:CTRL + SHIFT + F8

在子过程按行运行代码时,可以使用 CTRL + SHIFT + F8 快捷键一次性运行子过程余下所有行代码,跳出到父过程。

5.运行到光标位置:CTRL + F8

使用 CTRL + F8 快捷键,可以一次性运行到光标所在位置行后暂停。

当想要检查某一行代码有无问题,又确定改行以上代码没问题时,可以使用此快捷键快速运行代码到当前行。

6.设置断点:F9

断点是代码暂停运行的一行代码。设有断点的代码行,背景颜色突出显示,默认是深红色。

vb实时监控是否有新的文件存储 vba监控变量_VBA_03

设置/取消断点有两种方法:

  1. 光标放置在一行代码内,按 F9 快捷键。再次按 F9 ,取消断点。
  2. 鼠标点击代码行左侧灰色背景处。再次鼠标点击,取消断点。

断点的数量没有限制,代码每次运行到断点处,会暂停运行。如果想一次性取消所有的断点,可以使用 CTRL + SHIFT + F9 快捷键。

7.查看变量的值

使用按行运行方法或断点设置,代码都会进入到暂停期间。暂停时,下一步运行的代码行背景变为黄色,等待执行。这时把鼠标悬停在任意一变量的上面,可以看到该变量的当前值。这有助于掌握程序运行时,变量的变化情况,快速找到问题。

vb实时监控是否有新的文件存储 vba监控变量_如何监视一个变量_04

8.Debug.Print 函数查看变量的值

上面的方法使用鼠标查看变量的值,除此之外,还能在立即窗口,使用 Debug.Print 函数打印出指定变量的值。

vb实时监控是否有新的文件存储 vba监控变量_工具栏_05

9.运行时改变变量的值

代码暂停期间除了查看变量的值外,还能实时改变变量的值,并且鼠标调整下一步运行的代码行。

vb实时监控是否有新的文件存储 vba监控变量_如何监视一个变量_06

10.监视表达式

程序运行时查看某一表达式的值,可以使用监视功能。这样查看观察表达式的值更方便。

首先,选中要观察的表达式,然后鼠标右键,弹出的菜单选择【添加监视】。

vb实时监控是否有新的文件存储 vba监控变量_如何监视一个变量_07

然后,出现添加监视菜单对话框,点击确定,完成添加。

vb实时监控是否有新的文件存储 vba监控变量_VBA_08

最后,在编辑器右下方出现监视框。代码运行及暂停时,可以看到当前表达式的值及相关信息。

vb实时监控是否有新的文件存储 vba监控变量_快捷键_09

11.强制结束运行

通常,代码运行到 End Sub 或 End 语句时停止。如果想提前结束程序执行,可以点击工具栏【重新设置】按钮。

vb实时监控是否有新的文件存储 vba监控变量_快捷键_10

总结

代码调试的主要目的是把执行代码范围缩小到一个小的范围,快速定位问题所在。VBA 编辑器提供的调试功能可以很好地完成这一目标。总结下来,使用调试功能可以做到以下工作:

  • 按行运行代码;
  • 代码运行时,查看某一变量的值;
  • 跳过或跳出子过程;
  • 设置断点,添加监视,查看某一表达式的变化;
  • 强制结束过程。