• F9:设置程序断点,在代码左侧栏点击有相同效果。重新按F9即取消断点。
  • F8:单步跟踪,当调用子函数会跟踪到子函数内部
  • Shift+F8:单步跟踪,但不会进入子函数内部
  • Ctrl+Shift+F8:跳出正在跟踪的函数,直接返回上一层函数。
  • F5:运行程序,直到出现错误、程序结束或程序断点为止
  • Ctrl+F8:运行程序,直到出现错误、程序结束、程序断点或当前光标所在行为止
  • debug.print var:在立即窗口中显示var的值
  • debug.assert var:当var==false时程序自动停止

以上命令也可在菜单和命令栏中获取。

在调试过程中,可通过下面几种方法查看各个变量的值,当变量和预期不一样时,也就找到了程序出错的原因,便能对照修改:

  • 立即窗口(快捷键Ctrl+G):在该窗口里会显示debut.print的结果值,以及随时计算和运行代码。在代码前面添加“?”,可以在立即窗口中显示运行结果。
  • 监视窗口:可以将变量以及表达式添加到监视窗口,可以实时查看变量和表达式的值。支持将代码窗口里的变量和表达式拖入到见识窗口
  • 本地窗口:本地窗口里可以查看目前的local变量和global变量的变量值。
  • 编辑窗口:将鼠标停在编辑窗口的变量上可显示该变量的值。

有一些方法可减少程序错误以及降低调试的难度:

  • 添加重要的代码注释。
  • 源代码格式规范化,增加代码可读性。VBA插件Smart Indent是一个很好的辅助工具。
  • 尽可能声明变量类型,少用Variant变量。
  • 注意函数的参数传递方式,默认为传引用,子函数会修改变量的值。
  • 尽量将功能函数化,不同的功能分开写。
  • 避免在VBA中引用绝对地址,如Range("A1")。可先在Excel中定义名称"abc=$A$1",然后引用Range("abc")。
  • 避免使用ActiveSheet, ActiveWorkbook等可变变量,用Sheet1,ThisWorkbook这种绝对变量。绝对变量不受外界操作影响。
  • 要清除应用程序中的所有断点,请在“调试”菜单中选择“清除所有断点” (CTRL+SHIFT+F9)