第四讲:打开你的VBE,开始建立属于你的类模块(下)

266 篇文章 0 订阅

【分享成果,随喜正能量】行有不得,反求诸己。如果总是在苛求外界,那么,就只会让自己烦恼不断;只有管好自己,不断完善自己,才能让一切逐渐好起来。活得通透的人,往往会明白,我,才是一切的根源。。

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。

类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:第四讲:打开你的VBE,开始建立属于你的类模块(下)5d4a37de31146671c06ed37e2fe77a3a.jpeg

第四讲  打开你的VBE,开始建立属于你的类模块

大家好,今天继续讲解VBA中类的解读及应用,今日讲解第4讲内容: 打开你的VBE,开始建立一个你的类模块。

我们打开VBE的窗口,插入一个类模块,这时也就建立了一个类。类模块的名字就是类的名字。我们可以选中这个类模块,按下F4件修改你需要的名称,这里我们将“类1”改名为“MyClass”,在名字下面你会看到只有一个属性:Instancing,其值也只有两个选项:Private和PublicNotCreatable。Instancing属性决定该“类”在其它工程中是否可以被使用。我们知道,标准模块中的Public过程,可以保存在宏工作簿,可以被另一工作簿的工程调用,但类中的代码是不可分割的整体,所以必须整体决定是否允许外用。当Instancing属性设为Private(默认)时,不允许其它工程访问。当设置为PublicNotCreatable时,只有在自己的工程创建了该类的对象时,其它工程才允许使用这个对象,注意,仅仅是在本工程中创建的对象,而不能用它在其它工程中创建对象。这就是上面两个值的意义。

2 给类对象属性赋值方法

我们知道,给普通变量和对象变量赋值的方式不同,对象变量是使用Set赋值的。对“对象”属性,VBA提供了Property Set来代替构建“普通”属性使用的Property Let。来看一段代码,和前面的比较一下,只是多一个Set。

Private tx As Object

Property Get x() As Object

    Set x = tx

End Property

Property Set x(ByVal o As Object)

    Set tx = o

End Property

可以按照Function去记住Property Get的用法,按照Sub去记住Property Let /Set。

3 给属性初始赋值的方法

我们常常希望,当一个对象建立的时候,它的某些属性会被自动赋予一个初始值,这样,对具有最常见的属性值的对象可以减少重复性的赋值工作。这需要借助于类的构建函数来完成。

在类模块代码窗口的“通用”框中点击向下的小三角箭头,选择“myClass”,右面声明框中可以看到两个选项,“Initialize”和“Terminate”,我们对它们应该不陌生,很多对象都有这两个事件,Initialize事件是在对象建立时发生,Terminate事件是在对象释放时发生。由于类是静态存在的,它并不是真正的对象,所以在类模块中,它们通常被称为构建函数和析构函数,或构建过程和析构过程。对它们的理解和在对象中的用法并没有什么不同。当一个对象被建立时,构建函数将被首先执行,同样,当对象释放后,将执行析构函数。

下面代码建立MyClass属性r,并赋初始值为”0001”:

[类模块MyClass的代码]:

Option Explicit

Private s$

Public Property Get r() As String

  r = s

End Property

Public Property Let r(ByVal c As String)

   s = c

End Property

Public Private Sub Class_Initialize()

   s = "0008"

End Sub

[标准模块1的代码]

Sub mynzclass4() '第4讲打开你的VBE,开始建立属于你的类模块

   Dim mycl As New MyClass

 MsgBox "MyCl的初始属性为:" & mycl.r

End Sub

代码的截图:

7a4b14e5b5c5f430ae0bca1f1a89850e.jpeg

a265ce65813cb22ad68664f72f9f944d.jpeg

运行:

f6910cf3f28a567e02483e15c6bda10b.jpeg

今日内容回向:

1 如何建立类的属性?

2 如何给属性赋初始值?

本讲内容参考程序文件:VBA-CLASS(1-28).xlsm

b0d3218ada918049b454c67cd8c3a0a0.jpeg

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


096af54257649ae43e14f38efefebab1.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值