vb6.0 定义一个公共类_一起学Excel专业开发22:使用类模块创建对象1

本文介绍了如何在Excel应用程序中使用VB6.0的类模块创建自定义对象CCell,该对象用于分析单元格内容并区分为空值、标签、数值和公式。通过枚举常量增强代码可读性,类模块定义了属性和方法,包括只读属性和分析方法。示例展示了如何测试和应用此类模块。
摘要由CSDN通过智能技术生成

学习Excel技术,关注微信公众号:

excelperfect

在Excel应用程序中,经常使用类模块来创建自已的对象,用于:

1.封装VBA和Windows API代码,使之更易于使用或重用。

2.捕获事件。

3.引发事件。

4.创建自已的对象和对象模型。

创建自已的对象——CCell类模块示例

假设要使用代码来分析单元格,将其中的内容分为下面4种类型:

1.空值

2.标签

3.数值

4.公式

在VBE中插入一个类模块,将其命名为CCell,输入代码:

'创建枚举常量Public Enum anlCellType   anlCellTypeEmpty   anlCellTypeLabel   anlCellTypeConstant   anlCellTypeFormulaEnd Enum '声明模块变量Private muCellType As anlCellTypePrivate mrngCell As Excel.Range '为属性赋值Property Set Cell(ByRef rngCell AsExcel.Range)   Set mrngCell = rngCellEnd Property '获取属性值Property Get Cell() As Excel.Range   Set Cell = mrngCellEnd Property '获取属性值Property Get CellType() As anlCellType   CellType = muCellTypeEnd Property '获取属性值'转换枚举常量为文本Property Get DescriptiveCellType() AsString   Select Case muCellType       Case anlCellTypeEmpty            DescriptiveCellType = "空"       Case anlCellTypeLabel            DescriptiveCellType = "标签"       Case anlCellTypeConstant            DescriptiveCellType = "常量"       Case anlCellTypeFormula            DescriptiveCellType = "公式"   End SelectEnd Property '分析指定单元格Public Sub Analyze()   If IsEmpty(mrngCell) Then       muCellType = anlCellTypeEmpty   ElseIf mrngCell.HasFormula Then       muCellType = anlCellTypeFormula   ElseIf IsNumeric(mrngCell.Formula) Then       muCellType = anlCellTypeConstant   Else       muCellType = anlCellTypeLabel   End IfEnd Sub

在CCell类模块中,创建了一个由4个成员构成的公共枚举常量,每个枚举成员代表一种单元格类型,其值分别默认为0、1、2、3。使用枚举成员可以增强代码的可读性和可维护性,利用DescriptiveCellType属性可将枚举成员的值转换成易于理解的文本。

类模块定义了对象的属性和方法。在类模块中,所有的公共变量或属性过程都可作为对象的属性,所有的公有过程或函数均可作为对象的方法。

属性过程用于控制变量与外界交互,有3种形式:

1.直接对属性赋值

2.使用Set语句为属性赋值对象

3.使用Get语句返回值或对象引用

在CCell类模块中,使用了2个私有的模块级变量来存储属性值:变量muCellType存储单元格的类型,其值为anlCellType枚举成员值;变量mrngCell存储对某个单元格的引用,它表示由CCell类所创建的对象。

在CCell类模块中,使用Set语句给Cell属性指定一个Range型的引用并将其保存到变量mrngCell中。使用Get语句读取属性的值,其中CellType属性以枚举成员值返回所代表的单元格类型,DescriptiveCellType属性以描述性文本返回所代表的单元格类型,因为这两个属性没有对应的Set方法,所以是只读属性。

在实际应用中,基于过程的属性比基于公共变量的属性更好,因为可以更方便地控制给属性赋值和返回属性值。属性过程可以对传递给对象的数据进行检验并执行相应的操作,同时还可以根据需要设置属性为只读或者只写。

在CCell类模块中,定义了一个方法Analyze,是一个子过程,可以分析mrngCell变量所引用的单元格的数据类型,并将单元格数据类型所对应的枚举值赋给变量muCellType。

下面,我们来测试CCell类。

在VBE中,插入一个标准模块,输入代码:

Public Sub AnalyzeActiveCell()   Dim clsCell As CCell       '创建CCell对象的新实例   Set clsCell = New CCell       '确定当前单元格类型并显示   Set clsCell.Cell = Application.ActiveCell   clsCell.Analyze   MsgBox clsCell.DescriptiveCellTypeEnd Sub

类模块可以看成是一种对象模板,根据需要可以创建任意多个对象实例。运行AnalyzeActiveCell过程,显示当前单元格数据类型。

由于在CCell类模块中定义Analyze方法使用的是子过程,因此不能向外部返回值。我们可以以函数形式创建方法,使其可以返回值。例如,将CCell类模块中的Analyze方法转换成函数形式:

Public Function Analyze() As String   If IsEmpty(mrngCell) Then       muCellType = anlCellTypeEmpty   ElseIf mrngCell.HasFormula Then       muCellType = anlCellTypeFormula   ElseIf IsNumeric(mrngCell.Formula) Then       muCellType = anlCellTypeConstant   Else       muCellType = anlCellTypeLabel   End If      Analyze = Me.DescriptiveCellTypeEnd Function

这样,在标准模块中调用类模块来分析单元格的代码可以修改为:

Public Sub AnalyzeActiveCell()   Dim clsCell As CCell       '创建CCell对象的新实例   Set clsCell = New CCell       '确定当前单元格类型并显示   Set clsCell.Cell = Application.ActiveCell   MsgBox clsCell.Analyze()End Sub

c1862331de76eabc1a7ed4b6032e470f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值