“VBA类的解释和应用”教程[10165646]是我推出的第五套教程,现在是修订版的第一个版本。 这套教程定位于最高级的水平,是学习初级和中级之后的教程。
课程非常抽象,具有更多的研究价值。 当我们深入学习和应用VBA时,有必要理解这些抽象的理论知识。 对象、类、过程、方法、属性、事件、接口、接口的实现方式等。 通过掌握这些理论,您不仅会深刻理解VBA寄生语言的本质,还会深入了解自然界中的许多事物。 目前,这套教程程序文件已经通过了32位和64位办公系统测试。
这套教程由两卷,84讲课组成,修订后的教程内容将在以后介绍给大家。 今天的内容是: VBA 中类的解释和应用 第 9 讲:使用 WithEvents 关键字声明实例化对象类变量
想一想,你创造了多少尚未悔改和净化的邪恶? 不跟着恶趣味死去有多难? 从大多数人目前的情况来看,他们无法确定不会落入三恶境界。 但是,只要全心全意地依靠阿弥陀佛,就可以在今生结束后直接转生到净土,完全摆脱邪界,甚至永远超越生死苦海。
在前面的讲座中,我们首先定义了类,命名了类的名称,并定义了类的事件,其中我们知道事件指的是类引发的调用。 是对象的响应。 更准确地说,事件是由类引发的调用; 是实例化类后对象的响应。 如果我们将以下对象更改为实例化对象,则会更容易理解。 首先命名一个类,然后声明该类响应的事件,但必须先实例化该类,然后才能使用它。
引发事件的实例化类对象被调用事件源为了处理事件源引发的事件,可以使用 withevents 关键字声明实例化的类对象变量。 让我们再来理解一下这句话的意思:在实际应用中,我们面对的是对象,当一个类对象作为变量出现时,它可以响应一个事件,而在声明这样一个对象变量时,我们用声明语句withevents。
1) withevents 变量不能是派生对象变量。也就是说,它不能声明为对象(声明变量时必须指定类名)。
例如:将事件 a 写成对象的错误方式
正确的写法:变暗事件 a 作为文本
2)withevents变量不能声明为new,即withevents关键字和new关键字不能同时使用。如果按如下方式定义它,则会收到一个错误:作为新文本
3) withevents 变量不能在标准模块中声明。它只能在类模块、表单模块和其他定义类的模块中声明。
4)虽然withevents是dim、public、private语句的关键词,但不能在进程中使用withevents关键词来声明对象变量,只能一般使用。
5) 您只能使用 withevents 声明单个变量,而不能声明数组。
示例:今天我们将继续解释上面的例子,在上一讲中我们定义了 mytime 类,在这个类中,我们声明了两个事件如下,一个是 updatetime,另一个是 dabiao。
option explicit
public event updatetime(byval mynow as double)
public event dabiao()
*截图:
这两个事件是类似 mytime 的事件,在形成 mytime 后要实例化以响应。 那么,通过实例化mytime形成的对象是什么呢?
我在表单模块中声明了withevents:
private withevents mtext as mytime
也就是说,在表单中,需要将 mytime formation 类对象实例化为 mtext,这在表单的构造中实现:
option explicit
private withevents mtext as mytime
private sub commandbutton1_click()
textbox1.text = "启动定时器:"
textbox2.text = "0"
mtext.timertask (9)
end sub
private sub commandbutton2_click()
endend sub
private sub mtext_dabiao()
textbox1.text = "已达到标准"
doevents
end sub
private sub mtext_updatetime(byval mynow as double)
textbox2.text = str(format(mynow, "0"))
doevents
end sub
private sub userform_initialize()
textbox1.text = ""
textbox2.text = ""
set mtext = new mytime
end sub
private sub userform_terminate()
endend sub
如下表单所示**截图:
在表单构造函数中,set mtext = new mytime 用于将类的灵魂实例化为物理对象 mtext。
这样我们就可以用这个对象来响应事件updatetime,dabiao,我们来看一下窗口提示的事件截图
提示并可利用两个事件。
至此,我们已经逐渐理解了类的相关知识,比较抽象,但不是很难理解,以后会用这些知识点来讲解,实现我们的具体应用。
本次讲座请参考程序文件:VBA-CLASS(1-28)。xlsm
我在 VBA 方面 20 多年的实践经验浓缩在以下教程中: