VBA程序报错,用调试三法宝,bug不存在的

2020-10-26 11:09:55 浏览数 (1)

如果把VBA比作一门刀法,那么经过前面内容的操练,大家已经掌握了很多实用的招式。

如果我们在刀法招式的基础之上,再掌握更多的“磨刀”心法,那么我们的刀用起来才会又好又快。

所以今天主要和大家分享——VBA“磨刀”心法之程序调试,这也是《Excel VBA:办公自动化》系列教程的第7节。

1.认识VBA:什么是VBA?

2.这些掌握了,你才敢说自己懂VBA

3.VBA变量5年踩坑吐血精华总结

4.VBA中重要的强制申明,谁看谁明白

5.VBA掌握循环结构,包你效率提高500倍

6.精通VBA分支结构,少写程序100行

1.什么是程序调试?

所谓的程序调试就是:在某个计算机程序正式投入使用之前,利用一些工具或方法找出程序的漏洞或错误,从而保证该程序能够正常运行不出错。

这样说,好像仍然不是很明白。我们举个例子,帮助大家更好消化。

案例:根据左侧「C列」富豪榜的身价数据,利用右侧「G列」的判断标准,将判断后的「富豪尊称」填入「D列」

在正式分享上述案例之前,先插播一条关于美化宏按钮的信息。

有朋友私信问我:猴子,我的那个「宏按钮」实在是太丑了,我看你设置的就挺好看,应该如何设置呢?

我觉得这位同学很有眼光,既然你已经发现了我的审美,那么也不隐藏了,都分享给你们了。

通常情况下,我们都是按照「开发工具」-「插入」-「表单控件」-「按钮(窗体控件)」这样的路径来绘制我们的「宏按钮」

这样绘制的「宏按钮」,简直是巨丑无比,哪能入我猴子的法眼?

一对比上图,很明显左侧的宏按钮颜值更高。

就像同样多金的2个男人,要是我,肯定选择更帅的那个,不是吗?

那么,左侧颜值更高的宏按钮如何设置呢?

经过我多年不眠不休的潜心研究,终于,研制出提升宏按钮颜值的方案:

首先,我们点选Excel选项卡中的「插入」-「形状」-「矩形」-「圆角矩形」

然后,直接拖动绘制就好,绘制完成后,Excel会自动多一个「格式」的选项卡。这个选项卡有很多可以自定义这个圆角矩形的操作,比如:颜色、阴影、大小等,大家根据自己的喜好修改就行。

大家可能还有个疑问,宏按钮确实好看了,可是怎么让它关联宏呢?

纳尼?这能难倒我万能的猴子,又经过数十年的研究,天台式微笑又一次上扬在我的嘴角:

其实,和插入VBA那个巨丑无比的「按钮(窗体控件)」关联宏的操作一样。

我们「鼠标右击」-「指定宏」,然后从「指定宏」列表选择自己需要关联的宏即可。

「宏美化」探讨完毕,我们继续回到上面的案例。

2.VBA程序如何调试?

我们根据上述案例的特点,并结合之前For循环结构和IF分支结构的2个知识点,首先将这个案例的代码写完(大家肯定都会写,我就直接展示了)。

运行程序,看下结果

这什么鬼,VBA你这又来侮辱我的智商吗?

不过,俗话说:调试用的好,快乐没烦恼。

因此,我们要用VBA的调试功能,解除VBA侮辱我们智商的烦恼。

(1)我们首次先打开VBA编辑器

(2)鼠标点选「断点」位置

比如,我们在「For i = 3 To 12」处设置「断点」,那么我只需要将鼠标挪至每行代码前的「灰色框体」上,然后轻轻点击「鼠标左键」,该位置会出现一个

,并且该句代码会被批色

,表明「断点」设置成功。

所谓「断点」就是当VBA遇到手动设置的「断点」,运行中的程序将会自动停止,并「批黄断点处代码」,等待下一步执行指令。

套用到这个案例就是,我点击程序自动运行后,当程序执行到「For i = 3 To 12」这句话时,就会自动停止,且批黄该句代码,等待我的下一条指令。

(3)「单步调试」查找错误出处

此时为了找到程序程序出错的位置和原因,我们需要使用「单步调试」,也就是一句句执行,查看每行代码执行情况,更加精准的排查错误。

在VBA编辑器中,依次点选「调试」-「逐语句」,当然最高效的方法是使用快捷键「F8」

(4)鼠标悬停变量处,自动显示当前变量的值

在代码过程中,我们将鼠标悬停在变量上,VBA编辑器将自动提示当前变量的取值,比如:图中的鼠标悬停在「变量i」上,下方会自动显示当前「i = 3」

有些小伙伴,可能说,猴子这个悬停显示变量值的功能确实很贴心,你讲解的这个案例,只有一个变量,悬停很easy。如果我的代码中有很多个变量,我要查看多个变量的值,那岂不是...想想都头皮发麻呢。

一听就知道,心中有这样疑问的同学,绝对是“懒中王者”,妥妥的未来科技界领头羊。

所以,接下来,猴子就再给你介绍个“懒人”VBA调试法宝。

(4)「添加监控」让VBA调试更贴心

我们在VBA选项卡依次点选「调试」-「添加监控」

在弹出的「添加监控」的表达式填写需要监视的内容即可,然后点击右侧「确定」按钮,比如:本案例中需要监控「变量i」的值变化,在「表达式」文本框填入「i」,然后点击「确定」

然后,我们就可以看到在VBA编辑前底部会生成一个名为「监视窗口」的窗体,上面显示了监控的相关内容。比如监控的是什么,当前监控内容的值;监控内容的类型,相关内容大家在实操后,自行探索查看即可

(5)综合利用上述调试功能,快速查找代码出错原因

当我们将上述代码一行行执行,在「i = 9」发现,根据分类方法「C9 = 934」属于二级分类,「单元格D9」显示的应该是「富豪」,而不是现在错误的「超级富豪」

然后,我们就聚焦在这行代码上,检查问题。果然是将单元格的判断值条件写错了,才导致了这次的翻车事件~

然后,修改代码后,发现代码执行结果正常。

3.总结

以上就是,我们利用VBA代码调试的功能,实现了定位错误代码、找出原因错误原因、修改错误代码,最后成功执行获得正确结果的全部流程。

通过这个案例,介绍了VBA三大调试法宝。

(1)设置断点

在需要停止的位置手动设置「断点」,程序运行此处批色显示且暂停执行,等待下一步指令。

(2)单步调试

单步调试实现程序逐句执行,快速定位错误代码位置,便于及时排查错误。

(3)添加监视

实时监控需要关注的变量或内容,精准定位错误原因。

同时,还与大家分享了,通过「插入形状」美化宏按钮颜值的小技巧,让你的代码实用的同时,也增加了爆表的颜值。

毕竟,多金又帅的小哥哥谁不喜欢呢?

0 人点赞