如果把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 修改文本文档 指定行_VBA程序报错,用调试三法宝,bug不存在的相关推荐

  1. vba 修改文本文档 指定行_再说For Each循环——无论Python还是VBA都要看

    大家好!今天我们发布了<全民一起玩Python 基础篇>的第十一回 "入列表五湖四海皆兄弟,for循环一步一人无漏缺",同时在 www.ukoedu.com 中上传了笔 ...

  2. 准时下班系列_Excel合集之第9集—VBA导入文本文档数据

    Hi,各位同学好!我是吴明课堂的答疑老师之一陈婉.祝大家一切顺利,平安快乐! 工作场景描述: 前几天有位同学说,他们公司需要分析系统产生的日志文件(.LOG格式,Ps. TXT格式文档解决方式与log ...

  3. 记录问题处理----进程注入导致文本文档报“无法定位序数345于动态链接库comctl32.dll上”的问题

    问题描述 有用户反馈,他的电脑在打开TXT文本文档,notepad.exe会报"无法定位序数345于动态链接库comctl32.dll上": 经过初步了解,当他的电脑在运行公司产品 ...

  4. 文本文档TXT每行开头结尾加内容批处理代码

    文本文档TXT每行开头结尾加内容批处理代码 读A.TXT ,每行开头加:HTMLBodytxt = HTMLBodytxt + chr(10) aaaaaaaa 结尾加:bbbbbbbb 处理后的文档 ...

  5. 同时删除多个 Txt 文本文档的前几行

    概要:在网上下载 txt 格式的文本文件是我们经常会需要碰到的一种需求,不管是下载小说还是一些其他的学习资料,可能下载下来的文件就是txt格式的.这些下载下来的 txt 文件前面几行可能会有一些内容是 ...

  6. 同时删除多个 Txt 文本文档的最后几行

    概要:在平常的工作当中,我们对文本文件的使用是非常普遍的,文本文件的类型多种多项,有 txt 扩展名的.有 xml 扩展名的,甚至还有些文本文件是没有任何扩展名的.有时候可能我们会在网上下载一些文本文 ...

  7. 修改注册表快速新建txt文本文档

    平台: Windows 经常会遇到比如新建文件夹, 以及新建文本文档之类的需要. 新建文件夹默认提供快捷键 Ctrl + Shift + N, 但新建一个文本文档还需要右键, 加鼠标操作, 显得不那么 ...

  8. 从TXT文本文档向Sql Server中批量导入数据

    因为工作的需要,近期在做数据的分析和数据的迁移.在做数据迁移的时候需要将原有的数据导入到新建的数据库中.本来这个单纯的数据导入导出是没有什么问题的,但是客户原有的数据全部都是存在.dat文件中的.所以 ...

  9. 文本文档代码大全简单_简单4步搞定PC版微信多开,不再重复切换

    现在微信已经成为工作.学习中不可或缺的社交沟通工具,而很多人也不止拥有一个微信号.目前很多手机厂商都自带了应用双开的功能,所以在移动端这个问题已经被满足了,那么在电脑端呢?即使现在有很多辅助多开的工具 ...

最新文章

  1. Objective-c 网络编程1 Web请求和响应
  2. 引起路由器重启的“元凶”
  3. Genome Biology | 药物基因组学数据库
  4. phpstorm 提示请配置PHP解释器的解决办法
  5. java-HashMap源码学习
  6. 从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式, 输出杨辉三角形的前n行。请采用循环控制语句来实现。...
  7. Java中String做为synchronized同步锁
  8. .Net Micro Framework研究—串口部署释疑
  9. Python:bs4的使用
  10. dnf丢失clientbase_clientbase.dll丢失
  11. 由公式抽样检查所想到的...
  12. 干货 | 那些你不知道的爬虫反爬虫套路
  13. C语言二进制、八进制、十进制、十六进制深入探究
  14. 06 甲流疫情死亡率
  15. 神奇的口袋【北京大学】
  16. 算法基础题:木棍切割问题
  17. cadence allegro 元器件定位
  18. oracle 断电起不来,解决方案
  19. 比较清晰的求马鞍点方法,不过浪费空间时间。
  20. 小鹅通前端春招一面面经(2021.4.1)

热门文章

  1. gulp入坑系列(1)——安装gulp
  2. 设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则
  3. 318. Maximum Product of Word Lengths
  4. java 数据库连接池 开源_开源自己开发的一个JAVA数据库连接池,效果还算可以。...
  5. android中怎么保存checkbox中的checked属性_第二十四天HTML中的form表单
  6. java 对象流_java 对象流的简单使用
  7. fir fpga 不同截止频率_学习FPGA将来的出路在哪里?
  8. python123阶乘累加_使用多线程计算阶乘累加 1!+2!+3!+...+19!+20!。其中一个线程计算阶乘,另一线程实现累加并输出结果。...
  9. springboot整合elasticsearch_Spring Boot学习10_整合Elasticsearch
  10. 网络资产管理系统_固定资产管理系统的常用操作