大家好,在我之前的教程中,我分别讲了"VBA代码解决方案;"VBA数据库方案#34A;"VBA字典和数组方案;,通过学习这三套教程,我们可以对VBA的基本知识和操作有一定的了解。这套教材是在前面教材的基础上解释的。希望大家在学习前面教材的基础上学习这套教材。本教程,我们开始讲解VBA的高级内容、类和类模块应用。今天的内容是第一个:什么是类别,什么是对象。
什么是类?类别是对象"灵魂"。对象可以是任何东西,而类别不会做任何事情,也不会占用内存。只有当类别成为对象并使用Set句子和New关键字实例成为特定对象时,才能做事并占用内存。
将类实例转化为特定对象的语法是:
Dim C As Class
Set C=New Class
上述句子创建了一个名为C的对象,该对象的数据类型被定义为Class。其特点是:
1 使用New关键字可以创建任何数量类别的新例子,并将其存储在Collection对象中。
2 使用Property Let/Set/Get语句,可编写代码验证给类元素的值,并可编写当值变更时执行的相应代码。例如,可以编写代码,以确保一个值是要求的特征。
3 类可以定义方法(使用Sub过程和Function过程)执行某个动作。
注:自定义数据类型与用户自定义类型的区别如下:
1 所有自定义类型的变量必须在编译过程中说明。可以使用动态数组来处理多个自定义类型,但必须使用Redim Preserve关键词。
2 在运行过程中不能添加新的自定义类型变量。
3 赋予自定义类型中元素的值无法控制。如果只能定义为整数,但如果要求大于5,则无法控制。
4 自定义类型只是静态存储数据。
二 类模块、类属性和方法是什么:
类模块由属性和方法组成,类本身与名词相似;属性可以作为描述类的形容词;方法是动词,执行操作
三 类别与对象的比较
让我们先看一个非常简单的程序,让我们亲身体验一下庐山的真面目:
Sub mynzclass1_1
Sheets("1").Activate
Range("A1").Value = "Hello,VBA world"
End Sub
上述代码的第二句:Range("A1").Value = "Hello,VBA world"
我们把这个代码全部放开,完全补充隐藏,看看它是什么样子的:
Application.ActiveWorkbook.ActiveSheet.Range("A1")="Hello,VBA world"
让我们解释一下:
1 Range("A1")为对象,指定单元格..
2 Range("A1")前面,Activesheet也是指定哪个工作表的对象。
3 Activeshet前面还有另一个对象ActiveWorkbok,指定哪个工作薄,
4 ActiveWorkbook前面还有一个Application,指定了哪个应用。
3 Activeshet前面还有另一个对象ActiveWorkbok,指定哪个工作薄,
4 ActiveWorkbook前面还有一个Application,指定了哪个应用。
那Value是什么呢?Value是Range(");A1")这个对象的属性。它是从哪里来的?它是由Range类定义的。那么range是类还是对象呢?别担心,我慢慢解释,希望你能通过我的解释来理解类和对象之间的关系。
在上面的解释中,我们提到了将实例类变成特定对象的过程。事实上,在mynzclass_1中引用了一个Range类别,并在实例化后修改了它的属性。例如,我们只是把这一切都隐藏起来,直接对一个对象Range("A1")但是Range("A1")这个对象只有引用Ragne才有Range的属性"Value"。
我们将上述代码转换为:
Sub mynzclasss1_2 ()
Sheets("1").Activate
Dim RA As Range '引用Range类
Set RA = Range("A1") 'set将类实例化
RA.Value = "Hello,world" 'RA是一个对象
Set RA = Nothing '销毁实例化
End Sub
这个代码是mynzclass1_1的原始代码,由此我们可以看出,类本身并没有直接为我们做任何事,但它却一直默默地隐藏在幕后,规化着我们的动作。是的,这就是类。是的,这就是类别。它以物体的形式展现在我们面前,让我们一直与之交流,但往往在不经意间忽略了它的存在。
现在回到mynzclass1_1,很容易发现Activeshet实际上引用了Workshet、Activeworkbook和Workbook,而Application引用了与其同名的Application(这是一个我们经常被混淆的概念,一个对象可以和它引用的类同名),原来我们已经在短短的赋值句中处理了这么多类。
那么我们应该如何区分类别和对象呢?
那么,我们应该如何区分类别和对象呢?事实上,它们经常成对地出现在我们面前,只有一个是可见的,另一个是隐藏的。我们可以这样理解类和对象:类是一个概念或定义,每个类都有自己的特征和行为,对象就是某个类的例子。所以类是对象"灵魂",它无处不在,但你看不见它。
比如:汽车
假如汽车被定义为四个或四个以上的轮子,人们可以坐在上面,操作它的行走工具(很难定义)。此时"汽车类"它有自己的属性,比如汽车的前轮(负责转向)。汽车前玻璃(负责挡风)等。这里的"汽车"这是一个概念抽象的概念。
我们通常指的是汽车作为对象:比如丰田是汽车类的大对象,大对象中有小对象,比如"FS"威驰;对象,属性:车轮是某个品牌,前挡风玻璃是某个品牌。这些都是非常具体的属性值。
今日内容回落:
1 什么是类?
主题测试文章,只做测试使用。发布者:艾迪号,转转请注明出处:https://www.cqaedi.cn/baike/143878.html