美文网首页
VBA程序报错,用调试三法宝,bug不存在的

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

作者: 猴子数据分析 | 来源:发表于2020-10-23 20:35 被阅读0次

    如果把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)添加监视

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

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

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

    推荐:人工智能时代,你必须要学会这个通用技能

    相关文章

      网友评论

          本文标题:VBA程序报错,用调试三法宝,bug不存在的

          本文链接:https://www.haomeiwen.com/subject/vnlbmktx.html