大家好,今天继续讲解类和类模块应用,今日讲解第3讲内容:过程(Sub)、函数(Function)、集合(Collection)对象的作用范围域。

一 过程(Sub)、函数(Function)也有作用范围(或者叫作用域)。

我们可以这样理解,过程和函数并无实质的区别,当需要返回值时,就使用Function,如果不需要返回任何结果,都可以,推荐你使用Sub。

在标准模块中通过使用Private和Public关键字,可以划分为模块级和全局级,以决定它是在当前的模块有效还是整个工程有效。尽可能不要在类中定义Public方式的变量;

二 在类模块中,对作用域的理解:

1 类是对象的灵魂,是生成对象的模具,每生成一个对象,相当于产生了一个类的副本,这个副本就是对象的"肉身",副本间是相互独立的,从而,模块级的变量只作用于副本自身。

2 类模块中使用Public关键字,只有当引用对象变量是这个类的实例时,才能被访问。

3 类中不能定义Public方式的结构(Type),如果必需要这么做的话,可以使用一个类来代替Type.

三 集合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]

item 必需的。任意类型的表达式,指定要添加到集合中的成员。

key 可选择。唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。

before/after 可选择。表达式,指定集合中的相对位置。

如下面语句向集合增加一个对象TextBox1,并定义该成员的关键字为tx1:

col.Add TextBox1, "tx1"

增加一个对象TextBox2,并把它放在成员TextBox1的前面:

col.Add TextBox2, , "tx1"

下面看我们今天的代码测试:

函数模板和类模板的参数(过程Sub)(1)

运行:

函数模板和类模板的参数(过程Sub)(2)

函数模板和类模板的参数(过程Sub)(3)

今日内容回向:

1 SUB 和function有什么不同?

2 什么是集合?

函数模板和类模板的参数(过程Sub)(4)

,