测试与错误处理(VBA)

VBA 与 Python openpyxl 批量转换对比:100 文件效率、兼容性与维护成本 本文对比了VBA与Python openpyxl在批量转换100个文本文件到Excel时的效率、兼容性与维护成本。测试显示Python openpyxl速度比VBA快3倍,内存占用更低,且具备更好的跨平台性和错误处理能力。文章提供了两种技术的代码模板和选型建议,适合企业自动化数据处理场景。 阅读详情

10.7 测试与错误处理

1.测试

测试代码,检查它是否正确。为确保代码能够正常作用,必须尽力模拟代码运行的不同环境,并检查其正确性。

程序中的错误一般分为如下几类:

(1)语法错误(如输入时关键字或标点符号拼写错误) 。

(2)编译错误(如使用对象的方法时,该对象并不支持这个方法) 。

(3)运行期间错误(如除0、打开或关闭并不存在的文档、关闭未打开的文档等) 。

(4)逻辑错误(逻辑锗误是最难查找的错误类型,它们是由程序中使用的逻辑引起的。

2.调试

要确保代码中的变量和表达式按照预想的方式运行,可以使用VBA中的各种调试工具跟踪它们。VBE有以下调试工具。

(1) 中断模式

①进入中断模式方法:在过程的开始位置按下F8键(“逐语句”执行)。使用“切断断点“(F9键或者单击当前空白指示器栏)。使用Stop语句。当过程运行时,按下Ctrl+Break键。使用运行期间错误MsgBox对话框。

②退出中断模式方法:从运行菜单中选择“运行子过程/用户窗体)”;或者按下F5键,或者单击“调试”工具栏上的“运行子过程/用户窗体”按钮。从“运行”菜单中选择“重新设置”选项,或者单击“调试”工具栏上的“重新设置”按钮。

(2) 单步执行过程

① 单步执行过程:从“调试”菜申中选择“逐过程”选项,或者按下Shift+F8键。

②跳出过程(跳过程剩余部份):从“调试”菜单中选择“跳出”选项,或者按下Ctrl十shift十F8键。

③运行到光标处(跳过一组语句):从“调试”菜单中选择“运行到光标处”或按下Ctrl+F8键。

④设置下一条语句为光标所指语句(要警惕会忽略不执行中间的语句):从“调试”菜单中选择“设置下一条语句”或者按下Ctrl十F9键。

⑤“显示下一条语句”选项指明下一个将要执行的语句是什么。当需要在程序窗口中监视很多过程、却丢失了跟踪时,就可使用这个调试功能。

(3) 监视过程

①“本地”窗口(显示当前过程中使用所有变量及其值,还会显示当前加载窗体和控件的属性。):从“视图”菜单中选“本地窗口”选项。

②“调用堆栈”对话框(查看所有活动的过程调用):从“视图”菜单中选“调用堆栈”或按下Ctrl+L键。

③“立即窗口”(可查询并设置变量值,创建或撤销对象,执行单行命令)。从“视图”菜单中选择“立即窗口”或按下Ctrl+G键。

④“监视窗口”(是一个调试工具,在中断模式下可使用它更改变量和表达式的值,以查看不同的值如何影响代码)。从“视图”菜单中选择。

3.预防错误

(1)注释 。

(2)缩进代码:Tab键或启用Too1s(工具)菜单选Options(选项)Editor(编辑器)选项卡中的Auto Indent(自动缩进)。

(3)使代码模块化。

(4)显式声明变量:使用Option Explicit语句,或启用工具菜单选“选项”编辑器选项卡中的“需要变量声明”复选框。

(5)避免使用变体Variant(当某变量可能包含NULL值时就只能惟一指定Variant类型了)。

(6)打开语法检查:启用工具菜单选“选项”编辑器选项卡中“自动语法检测”。

(7)谨防Dim陷阱:Dim str1, str2 As String   '并未声明str1变量。

4.错误处理

调试只能够发现可以预测的错误,要处理不可预测的和不可避免的错误时,就必须使用错误处理。通过启用错误处理,捕获并提示错误处理,可以使程序更健壮。就可以使应用程序更稳定、更健壮。如果应用程序中包含了好几个过程,那么可以考虑采用集中式错误处理程序。

(1) 捕获错误:On Error Goto line (On Error Goto 0会在当前过程禁用错误处理程序) 在这个语法中,line指定了发生运行期间错误时控制将跳转到的代码行。

(2) 编写错误处理程序:给用户显示错误信息;提示补救方法;允许继续或取消操作。使用Err对象:

属性

说明

Number

存储最后一个错误的数字ID。这是默认属性

Description

存储说明错误的有关信息

Source

包含发生了错误的对象名或应用程序名

HelpFile

包含帮助文件的名字

HelpContextID

包含错误号对应的帮助上下文ID

LastDLLError

包含最后一次调用DLL的系统错误代码

Raise方法可以让用户自定义错误处理信息,还可把错误处理信息传回调用过程: Err.Raise number[, source, description, helpFile, helpContext]

Clear方法清除Err对象的所有属性值:Err.Clear (当调用On Error, Exit Sub, Exit Function, Exit Property, Resume 等语句时,会自动调用Err.Clear方法。)

(3) 退出错误处理程序:

①0n error Resume:当错误处理程序已经修复错误后,可以用它来返回控制给引起错误的语句。但注意如果错误还在的话,会引起无限循环。

②0n error Resume Next:忽略错误语句,继续下一句。

③Resume [LineLabel]: 把控制传递给行标号(必须和Resume语句处在同一个过程中)所在点的语句。

④也可使用Exit Sub或者Exit Function甚至End语句退出已产生错误的过程,但这些语句应放在错误处理程序之前,这样当未产生错误时就不会执行错误处理程序。
19、Outlook VBA与VBScript:错误处理、测试与调试全攻略 本文详细介绍了在编写Outlook VBA和VBScript代码时常见的错误类型及处理方法,包括语法错误、编译错误、运行时错误和逻辑错误。同时提供了丰富的调试技巧,如使用断点、立即窗口、监视窗口等工具,帮助开发者高效排查问题。文章还对比了VBA与VBScript在错误处理方面的差异,并通过实际案例演示了如何综合运用调试和错误处理方法,以提高代码的稳定性和可靠性。 阅读详情

相关推荐

2、编写和测试VBA代码的基础知识

本文详细介绍了编写和测试VBA代码的基础知识,包括创建代码模块、过程、变量使用、程序流程控制、调试方法以及代码优化技巧。通过实际案例分析,帮助读者将理论应用于实践,提高VBA编程技能。

nice1的博客 251

VBA: 如何停止当前VBA程序(尤其是死循环)的运行,用程序停止其他程序,暂停程序等(未完成)

暂停程序的3个思路 暂停 application.wait(now + timevalue("00:00:03")) 和 application.ontime(now + timevalue("00:00:03")) sleep 500 加入断点,然后点F5运行一下不就暂停了吗? stop 不行,程序运行时被挂起了 运行的时候程序是挂起的吧,只能加暂停的代码才能让你玩...

奔跑的犀牛先生 4万+

掌握VBA内置测试与调试工具

本文介绍了VBA中用于测试和调试的内置工具,包括逐行执行、跳过、步入和步骤外的命令,以及如何设置断点、使用书签导航、停止和重置过程、以及错误捕获和处理。通过实例展示了如何在VBA程序中有效地使用这些工具以优化程序的开发和维护。

weixin_30415591的博客 501

vba循环通过键盘某个按键按下退出循环_VBA实战技巧07: 阻止用户按Ctrl+Break键中断代码运行...

学习Excel技术,关注微信公众号:excelperfect当运行中的代码长时间没有响应,或者代码陷入死循环时,可以按Ctrl+Break键中断代码的执行(注:有些笔记本电脑的键盘上没有Break键,可以按Esc键)。此时,VBA会弹出如下图1所示的消息。图1然而,有时候我们不希望用户按Ctrl+Break键中断正在运行中的代码,因为此时程序可能正在创建一些需要占用电脑资源才能生成的“东...

weixin_39920403的博客 5412

掌握VBA编程:错误处理与数据访问技术

本文主要探讨了在使用Microsoft Access 2013进行VBA编程时,如何通过条件编译运行特定代码段,以及如何标记代码以便于导航。特别强调了错误处理的重要性,并详细介绍了如何在VBA程序中使用错误处理例程和Err对象来捕捉和处理运行时错误。此外,本章还涉及了如何设置Visual Basic项目的错误捕获选项,以便更有效地进行调试。最后,本文概述了数据访问技术在Microsoft Access中的应用,包括如何使用DAO和ADO对象进行数据库的连接、操作和安全性实现。

weixin_42323064的博客 314

掌握VBA程序错误处理与调试技巧

本文探讨了在使用VBA编程时如何通过内置工具进行程序测试和调试。介绍了如何设置错误处理程序、处理文件读写错误、使用调试窗口及工具,以及如何设置错误捕获选项,确保程序按预期运行。通过实例演示和步骤指导,文章旨在帮助读者掌握调试VBA程序的技巧,提高程序的健壮性和稳定性。

weixin_30415591的博客 491

Excel VBA入门(8): 代码调试/错误处理/代码优化

VBE有丰富的调试工具, 比如立即窗口, 本地窗口, 监视窗口, 断点调试... 第一个博文中已经讲过调试的基本操作: 设置断点, F5运行, F8逐条运行 断点就是程序中暂停停止运行的位置, 设置断点之后, 当运行到断点行所在的语句程序就进入中断模式, 此时在本地窗口和立即窗口中可以查看变量以及对象的属性值. 1. debug 介绍: 调试工具的基石 debug.prin...

weixin_30781631的博客 1085

掌握VBA编程:变量、数据类型与错误处理

本文深入探讨了VBA编程中变量和数据类型的基本概念,以及如何在程序中进行有效的错误处理。内容涵盖了创建和声明变量、理解变量的作用域和生命周期,到使用临时和静态变量,再到如何利用VBA的决策结构、循环控制和数组操作来编写更强大的代码。此外,本文还介绍了如何使用VBA进行数据访问,包括创建和操作数据库表和字段,以及如何通过DAO和ADO技术执行查询。最后,本文提供了关于VBA程序测试和调试的技巧,帮助开发者更有效地发现和修正代码中的错误。

weixin_42323064的博客 913

写了一段VBA代码后, Excel每次保存时都弹出警告:”此文档中包含宏、Activex控件、XML扩展包信息“(office 2007)

前言:今天在写一段VBA代码之后,遇到一个问题, Excel每次保存时就报一个警告(使用的是office 2007): 此文档中包含宏、Activex控件、XML扩展包信息 用起来很不爽! ---------------------------------------------------

sun0322 2万+

VBA插件开发实战:从基础到开源贡献

VBA(Visual Basic for Applications)是微软开发的一种编程语言,主要用于增强Microsoft Office系列应用程序的功能。它允许用户自动化复杂的任务,创建自定义功能和用户界面,从而提高工作效率。VBA编程在数据处理、报表生成和自动化工作流等方面特别有用。VBE(Visual Basic for Applications)是微软Office应用程序的内置编程环境,广泛应用于自动化任务和创建宏。

weixin_33480380的博客 1638

深入理解Excel-VBA与XML集成技术

本文深入探讨了在Excel-VBA项目中集成XML技术的多种应用场景。内容涵盖了如何使用XML映射技术将XML文件数据加载到Excel工作表,处理重复父元素的方法,以及如何通过Excel-VBA程序自动化地管理测试文件和学生名单。此外,还介绍了如何使用XML来存储和更新测试结果,以及如何在Excel中维护这些数据的组织性和可访问性。

weixin_31163455的博客 691

VBA

VBA一,概述 二, 宏 三,使用控件设计用户界面 四,使用VB编辑器 五,VBA语法基础 六,VBA对象模型 七,模块 八,测试与错误处理 九,VBA的安全性和保护工具 十,VBA程序的部署 十一,VBA高级应用 参见 一,概述VBA(Visual Basic For Applications)是微软开发出来在其桌面应用程序中执行通用的

3232

Excel-VBA宏编程实例源代码-判断是否有错误发生以进行分歧处理.zip

Excel-VBA宏编程实例源代码-判断是否有错误发生以进行分歧处理.zip

VBA语言的测试开发

VBA(Visual Basic for Applications)是一种由微软开发的事件驱动编程语言,广泛应用于Office办公软件中,如Excel、Word和Access。尽管其初衷是为办公自动化服务,但其强大的编程能力和灵活的应用特性,使得VBA在软件测试开发领域也发挥着重要作用。在这篇文章中,我们将探讨VBA语言在测试开发中的应用,包括其基本概念、优势、实际案例,以及如何通过VBA提升测试效率。

2501_91403935的博客 423

libnice和coturn这两个库有交叉实现的地方,具体有啥区别?

TurnAdmin:是一个TURN的管理工具,此工具能被用来管理用户账号的增删改查。 TurnServer:是TURN和STUN的服务器实现。 Turnutils_uclient: 模拟多个UDP、TCP、TLS或DTLS客户端 Turnutils_peer: 一个简单的无状态UDP-ECHO服务器,用作中继模式中的最终服务器 Turnutils_stunclient: 一个简单的STUN客户端例子 Turnutils_rfc5769check: 检查STUN/TURN协议实现的正确性。 我们..

Langeldep的专栏 1318

GD32F4系列定时器正交译码器实战:用TIMER1读取旋转编码器信号(附完整代码)

本文详细介绍了GD32F4系列定时器正交译码器的实战应用,重点讲解如何使用TIMER1模块高效读取旋转编码器信号。内容涵盖硬件连接、定时器配置、方向判断与速度计算等关键环节,并提供了完整的代码实现和优化建议,帮助开发者快速掌握GD32微控制器在工业控制和消费电子领域的编码器接口设计。

weixin_29169505的博客 200

VBA最值得学习的技术

总之,VBA是一个功能强大的工具,通过不断学习和实践,你可以掌握更多高级技术,并开发出更复杂、更实用的应用程序。

weitingfu的博客 629

告别VBA!用Python+PyWin32自动化你的SolidWorks建模流程(附完整代码)

本文详细介绍了如何利用Python和PyWin32实现SolidWorks建模流程的自动化,替代传统的VBA宏开发。通过环境配置、宏代码转换、高级开发模式及工程化实践等实战内容,帮助机械设计师构建高效、可维护的自动化工作流,显著提升设计效率。

weixin_30485379的博客 364

VBA语言的测试

VBA(Visual Basic for Applications)是由微软开发的一种事件驱动的编程语言。它是Visual Basic语言的一个子集,专门用于Microsoft Office应用程序,如Word、Excel、PowerPoint等。VBA能够自动化这些应用程序的操作,以简化复杂的任务,提高工作效率。VBA作为一种强大的编程语言,在日常的工作中发挥着越来越重要的作用。从数据分析到任务自动化,从报告生成到用户界面定制,VBA都展现了其独特的魅力。

2501_91512580的博客 895

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2396

一文看懂英伟达A100、H100、A800、H800、H20

想要Deepseek私有化部署吗?无论是训练大型AI模型,还是进行高性能计算(HPC),还是Deepseek私有化部署,都需要强大的GPU支持。而英伟达(NVIDIA)作为全球领先的AI芯片制造商,推出了一系列高性能GPU,包括等,广泛应用于AI训练、推理、科学计算等领域。如果想搭建一个属于自己的算力中心,该如何选择合适的GPU?本文将带你详细了解这些GPU的特性,并指导你如何搭建算力中心。一、英伟达算力GPU系列解析1. A100:数据中心AI计算的奠基石:Ampere:6912:432。

【可全包】本人程序员,不需要做任何吹嘘,只是实在写点程序,写点文档,熟悉各类主流框架,SSM,SpringBoot,Flask,Djiango,Mysql,Sqlite,VUE,Uniapp等,各类程序设计专家,优质作者 2万+

VBA-JSON企业级集成实战:从零构建高效数据处理方案

VBA-JSON是一款专为VBA开发者设计的JSON解析与转换工具,能够在Excel、Access等Office应用程序中高效处理JSON数据格式。作为企业级数据集成解决方案,VBA-JSON解决了VBA环境与Web API、RESTful服务交互时的核心痛点,为传统Office应用注入现代化数据处理能力。其跨平台兼容性和高性能特性使其成为VBA项目JSON处理的黄金标准。 ## 技术场景引入:

gitblog_00851的博客 207

【人工智能】Claude服务访问受限报错的技术分析与解决方案

在使用Claude系列大模型服务的过程中,部分用户会遇到服务不可用的标准化拦截提示,导致无法正常访问模型核心能力。本文针对该类报错进行完整技术拆解,明确报错根因与底层校验逻辑,并分场景提供合规、可落地的排查与解决方案,同时规避相关使用风险。

奶爸的编程之路,也就一周冷个三天 2671

在VBA中,常用的Err.Number测试

==标题==在VBA中,常用的Err.Number测试==正文==1.On Error语句有几种形式:On Error GoTo <label>: 当错误发生时,跳转到指定的标签处进行错误处理。On Error Resume Next: 当错误发生时,忽略错误并继续执行下一条语句。On Error GoTo 0: 禁用错误处理机制。2.工作簿、工作表、单元格常用的Err.Number...

fsyuheduo的博客 461

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2601

ASP.NET Core 6 Web API在IIS上的部署与调试

通过以上步骤和配置,你应该能够成功部署并调试你的ASP.NET Core 6 Web API在IIS上。记住,权限和配置是关键,确保你的环境和应用程序代码都正确设置。希望这篇博客对你部署和解决IIS上的问题有所帮助。

m0_74337424的博客 522
上一篇: VBA语句集
下一篇: Photoshop 去除图片中文字六个方法
Edream2
博客等级 码龄19年 27粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值