本帖最后由 hwc2ycy 于 2014-2-20 00:30 编辑
常用的调试命令(菜单调试) 1.逐语句 意思就是一次只执行一个语句,也有管这叫单步(经常在论坛答题的童鞋兴许就会看到对于代码出错,热心的童鞋就会建议你单步试试,按F8试试),对应的快捷键是F8。 但是要注意一点,不是按F8键就能逐语句执行。 例如,当前的代码窗口中没有任何的过程可用。 只要你当前代码窗口中的光标所在行位于某个过程中即可(有参数的Sub或函数例外)。 当前代码运行逐行进入中断模式后,VBE的主窗口标题中会显示有“中断”两字。 同时在代码窗口左边的边界条有显示一个黄色箭头指向当前即将执行的语句行。 将要执行的语句会以黄色背景色高亮显示。 如下图: 进入中断模式后,便可以分步调试语句。
2.逐过程 当我们逐行调试下面的代码时,会发现,每次在调用IsSheetExists函数时,函数里的代码也是逐行执行。很多时候,过程的调用我们也许不需每次都去单步调用,这样就可以用到逐过程了。 逐过程不像逐行命令,只要光标所在位于某个过程中,不管当前是否处于中断模式,就可以直接按F8。逐过程则不行,需要当前处于中断模式后,才可执行逐过程 命令(也可以直接按快捷键SHIFT+F8)。 当在demo2中按F8后,执行Calldemo3时,下一个被显示的语句就是demo3过程内的第一个语句。Demo3过程执行完后,回到calldemo4,继续执行。 而逐过程的区别就在于把过程视为一个基本单位来执行,执行完一个语句后再继续执行下一个语句。不过,下个被显示的语句,就是当前过程中的下一个语句,不会因为当前语句为一过程调用而有所改变。这样跳过了在子过程内频繁的单步执行。
3.运行到光标处 使用“运行到光标处”来选定想执行到哪一行语句才停止,可以用来跳过大型循环。 对应的快捷键是CTRL+F8 例如上面的代码,直接把光标定位到msgbox“ok”所在行,按CTRL+F8后,代码运行到msgbox “ok”这行时便会暂时中止运行。
4.跳出 执行当前执行点所在函数中剩余未执行的行。下个被显示的语句是紧随在该过程调用后的语句。所有在当前与最后的执行点间的代码都会被执行。 该命令需要在中断模式中才能有效。
快捷键是CTRL+SHIFT+F8
一般在调试子过程函数调用时这个命令比较方便。
例如上面的代码,在光标定位到demo6中按F8后,再执行跳出,代码就直接结束运行,不会有任何暂停。 但是当我们先按F8,当代码逐行运行到demo5中后,再执行跳出后,代码就在call demo5的下一行代码处msgbox“ok”行中断。
这些调试技巧不需要刻意去记,没事的时候多折腾代码。 快捷键也是,用多了自然熟能生巧。
|