用于创建此对象的程序是excel_一起学Excel专业开发22:使用类模块创建对象1
学习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
用于创建此对象的程序是excel_一起学Excel专业开发22:使用类模块创建对象1相关推荐
- excel中如何动态地创建控件以显示查询结果_一起学Excel专业开发02:专家眼中的Excel及其用户...
学习Excel技术,关注微信公众号: excelperfect 对于大多数人来说,使用Excel来做的工作就是在单元格中输入数据,进行一些格式化制作成报表输出,在这个过程中,可能会使用一些公式,可能会 ...
- 用于创建此对象的程序是package_【ROS 学习笔记】CMakeLists.txt 与 package.xml
0. 前言 在 ROS 中,节点的编写语言通常只有 C++ 和 Python,C++ 需要编译后才能运行,Python 则无需编译. 我们知道 Linux 平台编译 C++ 文件,需要编译器和链接器, ...
- 在Word文档中插入Excel表格时出现:“用于创建此对象的程序是Excel。您的计算机尚未安装此程序。”试试这个方法
出现这个错误提示,别急这去重装OFFICE套装,先试试这个方法: 1.右键点击Word,属性,兼容性,取消所有勾选选项. 2.右键点击Excel,属性,兼容性,取消所有勾选选项. 我是用这个方法弄好的 ...
- Mobl——用于创建HTML移动应用程序的新DSL
Mobl--用于创建HTML移动应用程序的新DSL 作者 Abel Avram译者 侯伯薇发布于 2011年2月12日 下午6时44分 http://www.infoq.com/cn/news/201 ...
- 创建此对象的程序是quation_MathType出现此对象创建于Equation中的处理教程
有那么一部份多朋友还不熟悉MathType出现此对象创建于Equation中怎么处理?下面小编就讲解MathType出现此对象创建于Equation中的处理教程,希望对你们有所帮助哦. MathTyp ...
- 创建此对象的程序是quation_MathType出现此对象创建于Equation中的问题怎么办
MathType在文档中编辑公式时那是相当地方便,但是由于MathType是作为第三方软件插入的,所以在使用时经常会出现一些不知名的问题,解决起来头疼.比如很多人会出现MathType停止工作的问题, ...
- python中用于创建文件对象的是_Python内置函数________用来打开或创建文件并返回文件对象。...
内置目前获得目标分子信息的方法不包括 药物对靶标生理活性调节而引起的毒性,函数或创称为 打开对象关于hERG通道描述不正确的选项是 建文件并反映药物分子整体亲脂性强弱的参数 是 有关structure ...
- 创建第一个iOS程序
创建第一个iOS程序 一.准备工作 1. 综合使用基础知识:类 对象 属性 数组 字典 字符 协议 代理 block 2.逻辑思维 3.搭建界面:系统提供的UIKit 自己定义拥有自己风格的控件 1️ ...
- sql中如何统计各种零件的总数量_如何应用GOF设计模式中的构建者模式创建复合对象实例...
软件项目实训及课程设计指导--如何应用GOF设计模式中的构建者模式创建复合对象实例 1.GOF设计模式中的构建者模式 构建者设计模式能够将一个复杂对象(它一般为组合类)的构建过程与它的表示部件相互分离 ...
- 单元测试源码分析之一创建mock对象
之前已经介绍过Mockito和PowerMock的常见用法,PowerMock其实就是在Mockito的基础上使用了字节码技术使得其可以对静态方法,私有方法等进行插桩. 现在就先来看看Mockito是 ...
最新文章
- 【第41题】【062题库】2019年OCP认证062考试新题
- 窗体之间传值的暴力方法
- ajax前台multipartfile,在SpringBoot中使用Ajax方式MultipartFile上传失败
- tensorflow gpu windows配置步骤教学
- python树的实现
- python多进程爬虫保存数据_Python多进程爬虫东方财富盘口异动数据+Python读写Mysql与Pandas读写Mysql效率对比...
- 慎用 supportedRuntime
- 迪赛智慧数——折线图(渐变堆叠图):国内智能快递柜营收规模及增长率
- 新东方雅思词汇(List 21~ List 25)
- 计算机学院云毕业,“云端”相约,逐梦起航——计算机与设计学院举办2020届线上毕业典礼...
- QT(6)-QStandardItemModel
- 微信小程序,动态改变背景图片
- 幂律分布图matlab代码,关于幂律分布,你还应该知道如何用代码实现!| 集智百科...
- 阿里总部对外解密双11超级工程背后的数据库技术
- 既然MAC地址是唯一的,为什么还需要IP地址?
- 如何写3DMAX的插件
- JavaWeb开发实现一个动态页面
- c语言字节变量怎样定义,C语言之定义变量_wx5c99a1487a5ff的博客的技术博客_51CTO博客...
- 防止被00后整顿?一公司招聘要求员工不能起诉公司
- 具象的东西_腾讯内容开放平台
热门文章
- 【leetcode】Copy List with Random Pointer (hard)
- 混沌数学之CircuitChaotic(二维离散电路混沌系统)
- [转] Js获取 本周、本月、本季度、本年、上月、上周、上季度、去年时间段
- Apache使用总结
- java array to list iterator_Iterator to list的三种方法
- 已处理证书链,但是在不受信任提供程序信任的根证书中终止 - Windows 7安装.Net Framework 4.7.2时出现此问题
- C#验证字符串是否是数字,是否包含中文,是否是邮箱格式,是否是电话格式
- linux实验十shell程序设计,实验二Linux Shell编程.doc
- 全网首发:怎样制作CDKEY(7)-新思路
- 列出本机JCE支持的Provider、消息摘要算法、公钥私钥算法