连代码调试都一窍不通,还谈啥会

有句俗话说的好,一段优秀的代码,三分靠编写七分靠调试。今天我就给大家聊一下VBA代码调试的问题:一段代码写完了,运算结果却不对,到底应该如何发现并改正错误?

本章概要如下:

❶ 语法检查❷ 逻辑检查❸ 样本调式❹ 运行调试❺ 错误处理

对于新手而言,初期编写的VBA代码并不会有复杂的逻辑,最常见的错误就是语法错误。典型有以下3种。

以上代码第3行将第1个工作表赋值变量sht,但由于并未使用关键字Set,代码会返回下图所示的错误信息:对象变量或with块变量未设置。

正确代码如下:

2)循环或判断语句不完整。

当有多层循环语句或者条件判断语句嵌套时,新手朋友容易遗漏Next或者End If语句。需要注意的是,当If语句嵌套在循环语句中时,如果缺少End If,系统会提示”编译错误,Next没有For”。这提示张冠李戴的不要太明显。

以下代码缺失End If语句。

运行后提示错误如下:

解决此类错误,最好是养成代码缩进与提前输入结构语句的习惯。关于代码缩进的规则,VBA系列教程里有详细的讲述,这里不再啰嗦。而输入结构语句是指…写了For语句后,立刻空两行写Next语句,再在循环体中编写其它语句。For Each sht In Worksheets

End If

3)工作表对象缺失

这个错误基本上每个VBA学员都遇见。有段代码如下:代码看不全可以左右滑动…

正确代码参考如下:

注意Cells前有个.代表With所引用的Worksheets(1)对象。

相比于语法错误,麻烦的是逻辑错误。代码运算的逻辑,有些来源于数据分析与处理的基本逻辑,有些来源于公司的业务逻辑。对于后者,往往只有行业内的人才能通过你的描述快速理解。这时就有可能发生这样的情景:有的朋友发出来一段代码,也不说运算逻辑,就问为什么代码运行后不提示错误,但结果并不对……坦白的说,这种行为就给有人问为什么输入公式1+1不提示错误,但结果也不等于预想的3,差不了多少——就让人很无语。

如何梳理逻辑错误呢?首先,正如我们一直强调的,所谓编程,就是顺序、分支和循环。顺序就是运算的先后顺序,分支就是运算的条件层次,循环就是遍历数据,所以请养成做思维导图的习惯,通过思维导图梳理清楚代码运算的顺序和条件层次——相信我,这非常有助于你快速而准确的编写代码。然后,在代码中尽量增加注释。注释的好处我们在VBA系列教程中编写VBA代码有哪些注意事项里有详细解释,像我这么傲骄的人,这里不再重复,你懂得图片。

最后,请继续往下看(*^▽^*)

不论是检查代码的语法错误还是逻辑错误,都离不开样本调试;也就是用一个样本数据逐步运行代码,发现并修正错误。上面这句话包含了两个重点词汇:样本数据、逐步运行。样本数据要求小而全。

小是指数据量必须小,比如,你需要从如上图所示的10万行数据中查找A列包含关键字”上海”、”福建”、”广东”,同时B列性别等于男的结果表,你不能拿10万个数据一个一个去测试,这样你不是风儿也是沙;实际上,有3条左右的样本数据就足够了。

全是指数据的代表性需全面,依然以上图所示数据为例,C列的性别就不能只有男的,没有女的,当然,也不能只有女的,没有男的。

参考代码如下:

重点说一下代码逐步调试,这包含了逐语句调试、断点调试等情况。逐语句调试是指以语句为单位分步运行代码。按一次键,VBA将运行当前过程,然后高亮显示下一个语句并进入中断模式。按多次键,即可逐语句运行代码。

当代码逐语句运行时,我们可以通过本地窗口,实时查看变量内容是否符合计算预期。

断点调试就是在程序中设置代码暂时停止运行的位置,这个位置被称为断点。当代码运行到断点所在的语句时,程序会进入中断模式,同时高亮显示断点代码行。设置断点最常用的方法是将鼠标指针悬停在【代码窗口】左侧灰色区域内,当鼠标指针显示为指向左上方的箭头时,单击即可设置该代码行为断点。

断点设置完成后,会出现一个红色大圆点,单击该断点标识,即可删除断点。断点可以存在多个,如果存在断点,按键后,VBA将运行代码直至断点处进入中断模式。此时,通过本地窗口,或搭配运行MsgBox语句,可以查看代码中的变量值是否运行有误。

除此之外,使用Stop语句也可以实现断点调试的效果。以上述代码为例,如果需要查看变量K的累加过程,可以在语句k=k+1后添加一行Stop语句,代码运行到Stop语句时将自动进入中断模式,再通过本地窗口,即可查看相关变量的数据。

不管是逐语句调试还是断点调试,都是为了查看代码的运算过程,以及变量的值是否正确。查看变量优先推荐使用本地窗口,但有时候本地窗口的变量过多,如果只是查看个别变量,使用起来就不是很方便,相比之下,使用Msgbox语句更为合适。以上述案例为例,如果需要查看第1条符合查询规则的行号,可以在If判断语句后增加以下两行代码。

…MsgBox iStop….

代码运行后返回结果如下图所示。

运行代码后结果如下图所示:

最后需要补充说明两点:

1)当过程重复运行时,立即窗口的内容并不会自动清除。2)除了将变量数据写入立即窗口,也可以将其写入工作表中,两者各有优劣,看个人习惯和实际需求。

无论你如何认真的编写代码,程序运行时仍然有可能出现错误,这也许会让初学编程的你感到困惑,但从某种角度来说,错误确实是程序不可或缺的一部分,所以请躺平微笑面对错误,并坚定不移的抱有三种态度:忽视它、捕捉它、反馈它。

使用On Error Resume Next语句,可以忽视程序中的错误,继续运行错误语句后的代码。

捕捉和反馈错误可以使用Err对象。

举个例子,还是删除名称为”数据”的工作表,示例代码如下:

第5行代码是On Error GoTo line语句。它可以跳转到指定的错误处理程序入口,line代表代码行标签或行号,本例为ErrHander。

第12至第16行代码是ErrHander标签。第14行代码使用Err对象的Number属性返回错误的编号,第15行代码使用Err对象的Description返回错误的描述内容(这描述大部分时候不讲人话,如下图所示,就凑合用吧)。

假设需要删除工作表名称为”工作表1″, “工作表2”, “工作表3″,并将删除的和不存在的分别弹窗告诉用户,可以参考下代码遍历删除。

第4行代码忽视程序运行中的错误。

第8行代码在每次删除工作表前都清除Err对象的所有属性。第10行代码判断Err对象的编号是否为0,如果为0,说明工作表成功删除,否则,就假设工作簿中不存在相关工作表(摊手,是的,事实上,也有可能是工作簿结构被保护了)。

代码运行后返回结果如下:

同志们呐,代码调试是一个需要保持耐心和细心的过程,这里重复一句话(小学老师说过这叫首尾呼应),一段优秀的代码三分在编写七分在调试,写一段代码你可能只需要十分钟,而调试却需要1小时——这都是很正常的。最后,用大老板的一句话勉励大家:

THE END
0.京东三面惨遭被虐,关于redis,高并发,分布式,微服务一窍不通京东三面惨遭被虐,关于redis,高并发,分布式,微服务一窍不通 分布式学习笔记+xmind思维导图: 京东关于微服务面试真题: 什么是 Spring Cloud? 使用Spring Cloud 有什么优势? 服务注册和发现是什么意思?Spring Cloud 如何实现? 负载平衡的意义什么? 什么是 Hystrix?它如何实现容错? jvzquC41yy}/lrfpuj{/exr1r1jfc=;:g9:2gm
1.一窍不通的意思和造句一窍不通,比喻什么都不懂,闭塞,愚钝。出自战国·吕不韦《吕氏春秋·过理》。第一范文网小编为大家整理了这个词的意思和造句,希望大家喜欢。 一窍不通的意思: 【词语】:一窍不通 【拼音】yī qiào bù tōng 【解释】 窍:心窍,洞。比喻什么都不懂,闭塞,愚钝。 jvzquC41yy}/fr~khctxgw3eqo5{wx|gp1€bqsz14775:;60jvsm
2.一窍不通的意思是什么,一窍不通的含义解释一窍不通yī qiào bù tōng ㄧㄑㄧㄠˋㄅㄨˋㄊㄨㄥ 一个心窍不通。语本《吕氏春秋.贵直论.过理》:「其窍通,则比干不死矣」句下汉.高诱.注:「故孔子言其一窍通,则比干不见杀也。」后用以比喻人昏昧不明事理,或对某事完全不懂。《醒世恒言.卷三五.徐老仆义愤成家》:「这萧颖士又非黑漆皮灯,jvzquC41o0wvdjnmg0ipo8hk{w5g;qdski/j}rn
3.一窍不通的意思一窍不通成语解释一窍不通yī qiào bù tōng 成语解释: 窍:洞;这里指心窍。一窍都不是贯通的。比喻什么都不懂;闭塞、愚钝。 成语出处: 战国 吕不韦《吕氏春秋 过理》:“杀比干而视其心,不适也。孔子闻之曰:‘其窍通,则比干不死矣。’”高诱注:“纣性不仁,心不通,安于为恶,杀比干,故孔子言其一窍通则比干不见杀也。” 常用程 jvzq<84o0z~67::0eqs0eqjpi{{06;7826
4.一窍不通的意思一窍不通造句读音解释成语解释:窍:洞,指心窍。没有一窍是贯通的。比喻一点儿也不懂。 >> 一窍不通的故事 成语出处:《吕氏春秋·过理》:“杀比干而视其心,不适也。孔子闻之曰:‘其窍通,则比干不死矣。’”高诱注:“纣性不仁,心不通,安于为恶,杀比干,故孔子言其一窍通则比干不见杀也。” jvzq<84o08vd{7hqo1jsrfqdwzppp3jvor
5.一窍不通的意思一窍不通是什么意思一窍不通的不什么意思:不字含义为副词的意思。不的意思 不的成语:包括好学不倦、食不知味、不顾死活、计不旋踵等带不字的成语。 一窍不通的通什么意思:通字含义为没有阻碍,可以穿过,能够达到:通风 ,通天 ,通气 ,通宵 ,通行 ,通过 ,通衢 ,贯通 ,四通八达 ,曲径通幽的意思。通的意思 jvzquC41ejkoi‚z0{y720lto1e0'N9'D:+92.J9'CG&:M*G6'H9'AI'G;+92.>C
6.一窍不通是什么意思|成语一窍不通的出处|解释|用法|近义词|造句一窍不通 基本信息 成语拼音:yī qiào bù tōng 成语注音:ㄧㄑㄧㄠˋㄅㄨˋㄊㄨㄙ成语正音窍,不能读作『qiǎo』。 成语简拼:YQBT 感情色彩:贬义成语 成语结构:主谓式成语 常用程度:常用成语 产生年代:古代成语 成语繁体:一竅不通成语辨形窍,不能写作『窃』。jvzq<84yyy428|~uvgs/ew4c17>36<70jvsm
7.一窍不通[一竅不通]的意思出处战国 吕不韦《吕氏春秋 过理》:“杀比干而视其心,不适也。孔子闻之曰:‘其窍通,则比干不死矣。’”高诱注:“纣性不仁,心不通,安于为恶,杀比干,故孔子言其一窍通则比干不见杀也。” 例子虽然他是一窍不通的浑虫,可是双桥镇上并无“镇长”之流的官儿,他也还明白。(茅盾《子夜》六) 正音“窍”jvzq<84yyy4de|hj{0ipo8hjgpmzw8h{1{orkjtdwvuoi8
8.《天龙八部》五首词查先生才大如海,旧诗之于他,应当仅是格律、韵部的限制而已,倘若用心用力,绝不可能写不好,遑论“一窍不通”“完全不会”? 这就像刘渊材恨“曾子固不能诗”,其实南丰先生的诗作并非不佳,只不过不愿意用力于此道。非不能也,乃不为也。 从《天龙八部》回目上的五首词,即可略窥金庸先生在诗词上“不用心用力jvzquC41yy}/lrfpuj{/exr1r1::h>g466i7el
9.一窍不通是什么意思一窍不通的解释拼音近义词反义词造句出自 战国 吕不韦《吕氏春秋 过理》,近义词 目不识丁、一事无成、一无所知,反义词 登堂入室、心照不宣、游刃有余, 还可以查询一窍不通反义词 一窍不通近义词 一窍不通的拼音 一窍不通的意思 一窍不通的反义词 一窍不通的近义词 一窍不通窍的意思 一窍不通的窍是什么意思 一窍不通造句 一窍不通什么jvzq<84e{0mfk?3eqo5zkzncqd{uqwlaa:h7:=>xj0nuou
10.一窍不通甫止著一窍不通 甫止著 纯爱现代都市完结.尚未签约 58084字0人阅读3289人气2海星 我哥夫的弟弟强制了我 立即阅读 CP1612573 投诉 作品简介2024-05-25 17:00:13 十五岁,于清岩被查出信息素变异,情绪激动时腺体会散发出诱人发狂的香味,自此远离人群,常年戴着副黑框眼镜,垂着头走路,性子越发阴郁。 jvzquC41iqth|rhr0eun1wtxgn328:77954ivvq
11.歇后语:一窍不通抱着擀面杖当笙吹 一窍不通 扁担吹火 一窍不通 耳聋鼻塞嘴哑 一窍不通 擀面杖吹火 一窍不通 七窍通六窍 一窍不通 实心竹子吹火 一窍不通;不通 实心竹子 一窍不通;不通 弯扁担吹火 一窍不通 眼瞎耳聋鼻塞嘴哑 一窍不通 解析看不懂?免费查看同类题视频解析查看解答jvzquC41yy}/|‚gcpi4dqv4swgyukxs146<64lfc6c?ghk;95f?4f;>5cd>b5=6d0jznn
12.一窍不通作文(精选54篇)在学习、工作乃至生活中,大家总少不了接触作文吧,作文是通过文字来表达一个主题意义的记叙方法。你所见过的作文是什么样的呢?以下是小编整理的一窍不通作文,希望能够帮助到大家。 一窍不通作文 1 同学们,你们对什么事情会一窍不通呢?可能有人会说:“什么一窍不通?怎么我会有一窍不通呢?”也许有人会说:“jvzquC41yy}/f~fpogoxgw3eqo5{wx|gp1€iwjsvk1:1:A670jznn
13.一窍不通成语出处解释蒙学成语网蒙学成语在线网(www.mengxuewang.com)提供成语一窍不通的意思及对应读音、一窍不通出处、近义词、反义词、一窍不通造句等详细信息。 成语名字:一窍不通成语发音:yī qiào bù tōng成语解释:窍:洞;这里指心窍。一窍都不是贯通的。比喻什么都不懂;闭塞、愚钝。成语jvzquC41yy}/onsizwkdjnsi{w4dqv4eqpz05@6660nuou
14.[转]人体结构的奥秘:“九窍不通一窍通”与“一窍不通九窍通”2、人体有十窍,出生前只有一窍通,出生后一窍不通九窍通,九窍组成地天泰卦。 3、人中穴,是人体的能量中点,是任督二脉的节点,是泰卦中心。 4、人体的五脏六腑的分布符合泰卦。 5、人体经络走向符合泰卦。 人是天地阴阳交感而生的。人体的许多奥秘尽在否泰二卦,人体司空见惯的结构特征隐藏着宇宙的法则。 jvzquC41o0}bpp65364dqv4fqe5xgkfrr1zprrh143::;99;0jznn
15.一窍不通:五窍各有疏通法健康·生活一窍不通:意思是指没有一窍是贯通的,比喻一点儿也不懂。出自《吕氏春秋·过理》。对于健康而言,如果“一窍不通”会影响五脏乃至全身健康,因为中医认为“五脏通五窍”,如何运用一些简单的养生方法给身体通“窍”呢? 通“心窍”:漱华池。心开窍于舌,所以保养心窍要注意口腔养生。中医古代养生术中有一招叫做“鼓jvzq<84jgcruj7ugqrrf0lto0et0p:4424702;531e759<>/5462:A890jznn
16.庄子的智慧:一窍不通与浑沌之死一窍不通,这是形容一个人有多笨。 人有七窍,耳、鼻、嘴、眼,哪个都要通;到了一窍都不通的境界,那就成了什么也听不到、什么也看不到、什么也闻不到、什么也尝不到,那算是笨到家了。 可是,庄子就是中国哲学史上的一个怪咖,他却认为“一窍不通”才是人生的大智慧。在《庄子.应帝王》中,讲述了一个jvzquC41yy}/5?5fqe4dp8ftvkimg86776;:2Bd329932<6;20nuou
17.张铁林爆料混血女儿对中文一窍不通,只会说这4个字张铁林爆料混血女儿对中文一窍不通,只会说这4个字 00:00 00:52 鲁豫有约 凤凰卫视《鲁豫有约》栏目官方账号 来自香港 张铁林爆料混血女儿对中文一窍不通,只会说这4个字jvzquC41x0oggwl0eqs0e8{1x263\ykVCM}38
18.奚望20以内的加减法一窍不通苏醒濒临崩溃……电视剧奚望20以内的加减法一窍不通 苏醒濒临崩溃…… 节目简介 陪你一起长大 导演:陈昆晖 主演:刘涛/ 李光洁 / 颖儿 / 李宗翰 / 胡可 / 陶昕然 / 贾景晖 / 张瑞涵 地区:内地 类型:家庭/ 剧情 简介:年轻夫妇苏醒与奚彬有个儿子奚望,身边的妈妈都以不能让孩子输在起点上为由给孩子们报各种课程,可苏醒夫妇让儿子jvzquC41yy}/opyx0eun1k4566<3286374:9;@3jvor
19.诈骗团伙指导炒股敛4000余万对股市一窍不通炒股股市分析师据该团伙负责人杨某交待,其实他们对股市一窍不通,全凭组团忽悠,能赚钱也是“瞎猫碰上死耗子”。公司在成立之初主要是销售炒股软件的,但在推广中, 发现股民对股票走势信息需求强烈,而对一些著名的炒股大师,更是深信不移,于是杨某便产生了向股民提供“内幕消息”、冒充知名股票分析师骗钱的想法。 jvzq<84hkpgoen3ukpg/exr0ep5tvxhm1uzpetqgcttdnjxu146279=331756A74;5:89>3ujvsm
20.MySql从一窍不通到入门(七)分区策略:HASH/RANGE/LIST/KEY表的分区的原理理解起来比较简单,其实就是把一张大数据量的表,根据分区策略进行分区,分区设置完成之后,由数据库自身的储存引擎来实现分发数据到指定的分区中去,正如上图所示,一张数据表被分成了n个分区,并且分区被放入到不同的介子disk中,每个disk中包含自少一个分区,这就实现了数据的均衡以及通过跨分区介子检索提jvzquC41dnuh0lxfp0tfv8PkpiIbv?;81cxuklqg1fkucrqu19>44>639