当前位置: 首页 > ds >正文

如何学习VBA_3.3.3 VBA程序写好后,如何进行调试,直到程序运行

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。

如果您只是一般的职场VBA需求,可以打包选择7.1.3.9教程+汉英手册,第7套教程是入门,第1套教程是入门后的提高,第3套教程字典是必备的VBA之精华,第9套教程是实用的典型案例讲解。这四套教程内容掌握后足以处理一般工作中的问题,实际写代码的时候再辅助代码汉英手册,足矣!如果您想进一步提高,就需要选择高级阶段的教程了

VBA是面向对象编程的语言,博大精深。很多朋友咨询VBA的学习方法,我会陆续给大家讲解一些我的经验,大家可以慢慢体会。今日的内容是如何学习VBA_3.3.3 VBA程序写好后,如何进行调试,直到程序顺利运行

【分享成果,随喜正能量】142 一个人的气质,并不在容颜和身材,而是所经历过的往事,是内在留下的印迹,令人深沉而安谧。所以,优雅是一种阅历的凝聚;淡然是一段人生的沉淀。时间会让一颗灵魂,变得越来越动人。控制自己的脾气,做一个有修养的人。。

3.3.3 VBA程序写好后,如何进行调试,直到程序顺利运行

《VBA代码解决方案》的教程,我贯彻了一种搭积木的编程思路,147讲就相当于147块积木,你有了这些积木,把每块放在合适的位置,来构建你的工程。例如要搭建一处住宅,那么这些积木,有的是管上下水的,有的是管电路的,有的是管气温调节的。当房子建好后,我们首先要测试这些积木是否达到了我们的要求,这个时候就是程序调试了。不是每个程序写完后都能马上正常运行的,有的调试过程很快,有的会时间长些,有的甚至会推倒重来。

什么是程序调试呢?就是编制的程序在投入实际运行前,要进行的测试。测试过程包括修正语法错误和逻辑错误。这是保证程序正确性的必不可少的步骤。对测试时所发现的错误,要进行诊断,找出原因和具体的位置进行修正,从而完善程序。说的直白些,就是说你的房子搭建好后,在你搬家之前进行的综合检验。

一 程序调试的内容:程序调试的范围较广,一般包括如下几个方面:

1语法错误的检验:每一种语言都有自己的语法习惯,你写的代码必须要符合这些规范,而且是必须的。错一丝一毫也通不过。比如半角、全角;参数是否传递正确,是否有相应的属性等等。

2 运行过程的检验:语法通过了,仅是第一步,在运行过程中还会检验很多内容:如循环是否是闭合的,with语句是否是闭合的,参数的定义范围是否有问题,数组的上下标是否越界等等。

3 实际结果的检验:上面的第一第二都通过了,程序开始正常的运行,但运行的结果不一定是你期望的结果。这就要考虑是哪里的问题了。

4 程序优化的检验,如果结果和你的预想一致,那么是否就说明程序完美了?不是的,还要有程序的优化问题,包括:代码可读性是否强;占用的内存是否最少;运行时间是否最短;可视效果是否最佳。

二 代码调试的原则:

1 分析与错误征兆有关的信息。

2 调试的过程也是自己再学习的过程。

3 修改错误的同时应避免产生新的错误。

三 代码调试的方法

1 代码写完后要再次阅读。要最大限度地减少书写的错误。所以我推荐大家利用《VBA代码解决方案》,鼓励大家去复制,粘贴,修改代码,而不是录入代码。

2 在大脑中模拟运行,这个过程十分关键。要让代码在你的大脑中先运行,看运行的步骤,哪个过程先执行,哪个后执行,数据怎么进行查找等等,这个过程也是检查你写代码的逻辑是否严谨。

3 分过程小范围调试,上述的步骤之后,开始真正的调试了,要先小范围的调试,看看数值的关系是否正确。充分利用语句的中断符,msgbox对话框, 临时参数等等

4 总体的测试,小范围测试没问题后,开始执行大范围的测试。这个时候主要看最终的执行结果了,这个时候要设置特殊值来校验,不要一开始就执行几千几万的数据,要从几行开始。根据我的经验,一般出现问题常在一首一尾,所以要重视首尾的数据运行结果。如果与自己大脑的设想结果全然不符,就要检查你编程的逻辑了。

5 数据的追踪。当出现了非预期的数值或者现象的时候,要知道如何去追踪数据,这里就靠自己的经验了,但仍要注意语句的中断符,msgbox , 临时参数的利用。

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:



http://www.xdnf.cn/news/6006.html

相关文章:

  • 力扣-543.二叉树的直径
  • 每周靶点分享:Nectin-4、CDH6及文献分享
  • 网络协议分析 实验四 ICMPv4与ICMPv6
  • 紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机
  • 根据输入的数据渲染柱形图
  • 分布式异步强化学习框架训练32B大模型:INTELLECT-2
  • React Native 与 Expo
  • 迅龙3号基于兆讯MH22D3适配CST328多点触摸驱动开发笔记
  • 分别在windows和linux上使用curl,有啥区别?
  • INT202 Complexity of Algroithms 算法的复杂度 Pt.7 NP-Completeness NP完全性
  • JuiceFS v1.3-beta1:新增 Python SDK,特定场景性能 3 倍于 FUSE
  • XA协议和Tcc
  • Vue3+Vite单页面应用(SPA)改造为多页面应用(MPA)
  • 内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册
  • 2025.05.11拼多多机考真题算法岗-第三题
  • 当java进程内存使用超过jvm设置大小会发生什么?
  • 数据库原理实验:视图与索引
  • 游戏引擎学习第276天:调整身体动画
  • 【计算机网络】3数据链路层②
  • STM32 __main汇编分析
  • 基于 mathematical-expression 的动态数学方程求解器实现
  • 如何使用C51的Timer0实现定时功能
  • DeepBook 与 CEX 的不同
  • HDFS的客户端操作(2)文件上传
  • 重庆医科大学附属第二医院外科楼外挡墙自动化监测
  • 鸿蒙5.0项目开发——鸿蒙天气项目的实现(介绍)
  • OJ判题系统第6期之判题逻辑开发——设计思路、实现步骤、代码实现(策略模式)
  • 目标检测任务 - 数据增强
  • Linux文件编程——标准库函数(fopen等)和系统调用函数(open等)的区别
  • 无锡哲讯科技:引领芯片封装SAP系统的智能化革命