暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA类模块中代码错误的捕获

VBA语言専攻 2022-09-04
98
【分享成果,随喜正能量】你活着不是为了证明谁是对的,而是要在有限的生命里,找到对的事情,坚持的走下去,这是你的一生,要活成什么样子,都由你自己说了算。外界的声音只是参考,你不开心,就不参考。。
《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA类模块中代码错误的捕获

第五十讲  类模块的调试行为(2)

(接上讲)
大家好,我们今日继续讲解类模块的相关内容,现在讲解的内容是模块的调试行为,上一讲我们讲了窗体和普通模块,这一讲讲的是类模块的调试。
调试类模块与调试普通应用程序有一些区别。这是因为类模块的属性或方法中的错误,都是可处理的。Visual Basic 除了提供在遇到无法处理错误点时中断和在所有错误点中断选项之外,还提供了类模块内的可捕获错误中断选项。

l注意:可以在“工具”菜单下“选项”对话框的“通用”选项卡中设置缺省的错误捕获状态。所选择的选项影响当前的会话期,并且变成 Visual Basic 的所有后续实例的缺省状态。

1  类模块的调试实例

例如,假设类模块 Class1 包含以下代码:
Public Sub mycs()
   Dim intcs As Integer
   INCS = INCS 0
   MsgBox INCS
End Sub

在标准模块中有一个过程调用类的这个方法:
Sub mynz_49_50()
   Dim mycsA As New class1
   mycsA.mycs
End Sub
上述的整个过程非常的简单,就是在一个普通模块中调用了一个类的过程,这个类过程会弹出一个对话框。

代码的截图:
如果可捕获错误选项设为:在遇到无法处理错误点时中断,程序将不会停止在被零除的地方。
我们看下面的测试结果:
这个时候该错误停止标准模块中对类模块的调用中。

2  类模块的调试行为改进

可以改变我们的设置:
其一是在“发生错误时中断”来使程序停止于被零除,但对大多数应用来说此设置很不方便。这样做每遇到一个错误就会停下来,即使已经编写了错误处理程序。所以我们设置成:“类模块内中断”是折中的设置,这种设置要注意以下几点:
1) 已编写了错误处理的地方,执行将不会停止在类模块中。
2) 执行只停止于类模块中不能处理的错误上,并返回到方法的调用处。
3) 启动 Visual Basic 开发环境后,缺省地设置为类模块内中断。
4) 如果没有使用类模块,在类模块内中断与遇到在无法处理错误点时中断完全相同。

n提示:使用类模块内的中断或在遇到无法处理错误点时中断,当遇到中断点时,可以按ALT+F8 键或 ALT+F5 键单步或跳过运行该错误,即进入自己编写的错误处理代码或进入在其中发生错误调用过程的代码中。
好了,有了上面的基础,我们再重新设置一下我们的错误设置:
再次运行我们的程序:
我们发现,这个时候的断点发生在了类模块的错误处了。这个时候如果我们的类模块没有发生错误,在标准模块中发生了错误,也是正常提示的,

今日内容回向:
1  代码的调试中对于类模块有什么不同?
2  如何设置错误的中断点?


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

【分享成果,随喜正能量】少一些贪念,少一些欲望,心静下来,一切都安定了。。
文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论