《VBA中类的解读及应用》教程是我推出第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第3讲:过程、函数、集合的作用范围域。
【分享成果,随喜正能量】如果你没有自己的核心竞争力,还天天想着发财,那只能是痴人说梦。
第三讲 过程Sub、函数Function、集合Collection的作用范围域
大家好,今天继续讲解VBA中类的解读及应用,今日讲解第3讲内容:过程(Sub)、函数(Function)、集合(Collection)对象的作用范围域。
1 过程(Sub)、函数(Function)也有作用范围(或者叫作用域)
我们可以这样理解,过程和函数并无实质的区别,当需要返回值时,就使用Function,如果不需要返回任何结果,都可以,推荐你使用Sub。
在标准模块中通过使用Private和Public关键字,可以划分为模块级和全局级,以决定它是在当前的模块有效还是整个工程有效。尽可能不要在类中定义Public方式的变量。
2 在类模块中,对作用域的理解
1) 类是对象的灵魂,是生成对象的模具,每生成一个对象,相当于产生了一个类的副本,这个副本就是对象的“肉身”,副本间是相互独立的,从而,模块级的变量只作用于副本自身。
2) 类模块中使用Public关键字,只有当引用对象变量是这个类的实例时,才能被访问。
3) 类中不能定义Public方式的结构(Type),如果必需要这么做的话,可以使用一个类来代替Type.
3 集合Collection,自定义对象范围的应用
Collection是我们在使用类时最常用到的对象。一个Collection对象代表一组相关的项目,其实它的成员并不被强制要求是同一类型。建立集合的方法和建立其它对象一样,如:Dim mycol As New Collection集合建立.可以使用Add方法添加成员,用Remove方法删除成员,用Item方法从集合中返回特定成员。这有点类似于字典。
Private Sub CommandButton1_Click()
Dim mycol As New Collection
Dim i%
Dim myct As Control
For Each myct In Me.Controls
mycol.Add myct
MsgBox "下面添加成员" & myct.Name
Next
For i = mycol.Count To 1 Step -1
If Left(mycol.Item(i).Name, 7) = "TextBox" Then
MsgBox "下面删除成员" & mycol.Item(i).Name
mycol.Remove i
End If
Next i
End Sub
代码截图:
代码讲解:上面的代码先将窗体上所有的控件加入到集合中,然后删除掉TEXT控件。Count属性返回集合的成员数量,Remove方法后面的参数是集合成员的索引号。成员的索引号通常是按照加入的顺序自然编号,从1开始,但可以在加入时使用Add方法的参数进行改变。
Add方法的完整语法是:
object.Add item[, key][, before][, after]
1)item 必需的。任意类型的表达式,指定要添加到集合中的成员。
2)key 可选的。唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。
before/after 可选的。表达式,指定集合中的相对位置。
如下面语句向集合增加一个对象TextBox1,并定义该成员的关键字为tx1:
col.Add TextBox1, "tx1"
增加一个对象TextBox2,并把它放在成员TextBox1的前面:
col.Add TextBox2, , "tx1"
下面看我们今天的代码测试,运行:
今日内容回向:
1 Sub 和Function有什么不同?
2 什么是集合?
本讲内容参考程序文件:VBA-CLASS(1-28).xlsm
学习是自我提高的过程,也是自我修行的过程。学,总会有收获。生命向前,没有达到不了的远方。
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
① 7→1→3→2→6→5或者7→4→3→2→6→5。
② 7→8
各套教程内容简介:
第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解
第1套教程(共三册):《VBA代码解决方案》:是入门后的提高教程
第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)
第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解
第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解
第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用
第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解
第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用