学习 Excel VBA 中的类模块
vba中类的解读和利用

vba中类的解读和利用VBA是Microsoft Office套件中的一种编程语言,它可以通过写入宏来实现自动化操作和功能扩展。
在VBA中,使用类(Class)可以更加高效和灵活地组织和管理代码。
本文将解读VBA中的类以及如何利用类来改善VBA代码的可维护性和可扩展性。
类是一种用于定义对象的蓝图。
对象是类的实例,每个对象都有自己的属性和方法。
在VBA中,使用类可以将相关的属性和方法封装到一个对象中,从而使代码更加模块化和易于维护。
类还可以通过继承和多态等概念来实现代码重用和灵活性。
要定义一个类,可以使用Class关键字,后跟类的名称。
类的属性和方法可以在Class模块中定义和实现。
例如,下面是一个简单的VBA类的示例:```Class PersonPrivate mName As StringPublic Sub SetName(name As String)mName = nameEnd SubPublic Function GetName() As StringGetName = mNameEnd FunctionEnd Class```在上面的例子中,Person类有一个私有属性mName用于存储人的姓名,以及一个公共的SetName方法和一个公共的GetName方法来设置和获取姓名。
私有属性只能在类的内部访问,公共方法可以从类的外部访问。
要使用类,我们需要创建类的实例。
可以使用New关键字来创建实例,例如:```Dim p As New Personp.SetName "John"MsgBox p.GetName```在上面的例子中,我们首先创建了一个Person类的实例p,然后通过调用SetName方法来设置实例的姓名为"John",最后使用GetName方法来获取姓名并显示在消息框中。
类不仅仅可以拥有属性和方法,还可以定义事件。
事件是类的一种特殊类型,它允许其他对象在特定的情况下响应并执行相应的操作。
Excel VBA基础教程两篇

Excel VBA基础教程两篇篇一:Excel VBA基础教程Excel VBA教程是把VB编程应用在Excel平台的一套实用教程,Excel +VBA双剑合壁,他可以帮助我们实现Excel原本实现不了的功能,可以让工作变得更高效,可以让操作变得变方便,可以把重复性的操作变得更有趣,随心所欲的定制自己的工作平台,还可以针对企业来开发各种系统如,人事管理系统、仓库系统、进存销系统等,对于经常要处理大量数据工作的朋友,学会了这套VBA教程你的工作将游刃有余。
标题Excel VBA基础教程Excel VBA基础教程第一章:Excel VBA基础知识1-1、Excel VBA教程简介1-2、宏在工作中的运用1-3、Excel VBA基础1-4、Excel VBA窗口介绍1-5、Excel VBA代码编写规则1-6、对象1-7、属性1-8、方法1-9、常量与变量1-10、数据类型1-11、判断语句之IF1-12、判断语句IF之多条件1-12B、If条件判断小结1-13、判断语句之SELECT1-14、循环语句之DO...LOOP1-15、循环语句之DO...LOOP实例1-16、循环语句之DO WHILE...LOOP1-17、循环语句之DO UNTIL...LOOP1-18、循环语句之WHILE与UNTIL位置变化1-18B、DO...LOOP 语法小结1-19、.循环语句之FOR EACH...NEXT1-20、循环语句之FOX...NEXT1-20B、For...NEXT小结与实例1-21、用语句FOR...NEXT制作九九乘法表1-22、exit与end语句1-23、跳转语句1-24、错误分支语句1-25、with语句1-26、VBA与公式1-27、VBA与函数11-28、VBA与函数21-29、VBA与运算符1-30、like运算符1-31、like运算符运用1-32.综合运用(盘点清单核对)第二章:Excel工作簿和工作表操作2-0、工作簿与工作表基础知识2-1、工作簿的表示方法2-2、当前工作簿与活动工作簿2-3、工作簿基础操作2-4、工作簿实例应用2-5、工作表的表示方法2-6、工作表集合应用2-7、工作表增加与删除2-8、工作表增加删除实例2-9、工作表移动与复制2-10、工作表选择与激活2-11、工作簿综合运用(拆分工作簿)第三章:Excel单元格区域操作3-0、EXCEL单元格基础3-1、Range引用基础13-2、Range引用基础23-3、Range引用与变量3-4、Range引用与索引值3-5、Range引用与索引值应用(有条件的平均工资)3-6、Cells单元格引用基础3-7、单元格简写3-8、三种单元格引用小结3-9、行、列引用3-10、row与column属性3-11、单元格的值与地址3-12、单元格移动与复制3-13、行列插入与删除3-14、活动单元格与选择区域3-15、UsedRange已使用区域(条件统计)3-16、currentregion当前区域3-17、单元格的Offset(给工资条加、减表头)3-18、单元格的resize(单据数据保存)3-19、单元格所在行与列(删除空行)3-20、specialcells定位(按批注汇总)3-21、FIND单元格查找技术3-22、单元格查找应用(制作查询系统)3-23、FIND实例应用(进销存之入库单)3-24、FIND实例应用(进销存之入库单)3-25、单元格END属性3-26、单元格END属性应用(查找分期付款最后月份) 3-27、最后的格格3-28、单元格并集(Union)3-29、单元格并集应用(条件筛选)3-30、单元格交集(Intersect)3-31、单元格式之数字格式3-32、单元格式之字体(VBA实现条件格式)3-33、给你点颜色看看(底纹颜色讨论)3-34、单元格式实例(工资条格式化)3-35、利用查找颜色拾取进行颜色汇总3-36、粘贴3-37、选择性粘贴3-38、合并单元格(相同部门的合并)3-39、合并单元格实例(取消合并单元格并保持数据)篇二:Excel VBA完全教程一、VBA 语言基础第一节标识符一.定义标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。
Excel VBA编程 类模块的事件

Excel VBA编程类模块的事件事件是对象可识别的动作,如按钮对象可识别Click事件。
此事件是单击该对象,然后释放鼠标时发生,它也会发生在一个控件的值被改变时。
另外,自定义类模块有Initialize事件和Terminate事件,这两个事件分别在类的实例初次创建时和最后一个指针释放或被破坏时触发。
1.Initialize事件该事件发生在加载对象之后、显示这个对象之前。
通常使用Initialize事件提供应用程序或UserForm以备用。
Initialize事件可为变量指定初始值,而且可以移动控件或调整其大小,使之与初始数据协调。
语法:Private Sub object_Initialize()其中,object代表一个对象表达式,其值为“应用于”列表中的对象。
例如,假设程序中已有两个窗体UserForms。
在UserForm1的Initialize事件中加载UserForm2,并将其显示出来。
当用户单击UserForm2时,就会将其隐含起来,而UserForm1将会出现。
而当用户单击UserForm1时,UserForm2便会再次出现。
' 这是UserForm1 的Initialize 事件过程Private Sub UserForm_Initialize()Load UserForm2UserForm2.ShowEnd Sub'这是UserForm2 的Click 事件过程Private Sub UserForm_Click()UserForm2.HideEnd Sub' 这是UserForm1 的Click 事件Private Sub UserForm_Click()UserForm2.ShowEnd Sub2.Terminate事件该事件发生在将所有引用对象的变量设置成Nothing,从而删除对象实例的所有引用,或者对象的最后一个引用超出范围。
语法:Private Sub object_Terminate( )其中,object 代表一个对象表达式,其值为“应用于”列表中的对象。
Excel VBA编程 类模块的方法

Excel VBA编程类模块的方法在模块中提供的方法与后面章节中介绍的对象的方法大体相同,本节主要介绍最常用的类模块方法。
例如,使用Print方法处理窗体上的相关信息,,或者使用Close方法关闭或清除窗口信息等。
1.Print方法使用Print方法可以在窗体上显示字符串,其语法为:格式:object.Print [outputlist]Print 方法的语法具有以下几个参数组成,其功能如下:●Object 必需的。
对象表达式,其值为“应用于”列表中的对象。
●Outputlist 可选的。
要打印的表达式或表达式的列表。
如果省略,则打印一空白行。
其中,在outputlist参数的语法如下:{Spc(n) | Tab(n)} expression charpos在outputlist的使用过程中,包含如表9-1所示的参数及其功能。
表9-1 outputlist参数及功能下面介绍的示例,使用Print方法在“调试”窗口的“立即”面板中显示变量HuanYing的值,其代码如下:Dim HuanYingHuanYing = "Welcome to Beijing!"Debug.Print HuanYing在Print方法的使用过程中,应注意以下几点内容:●可以用空白或分号来分隔多个表达式。
●对系统指定的区域设置,用小数点分隔符将所有打印到Immediate视窗的数据正确格式化。
关键字要用适用于主应用程序的语言输出。
●对于Boolean数据,或者打印True或者打印False。
●使用系统能识别的标准短日期格式书写Date数据。
●如果outputlist数据是Empty,则无内容可写。
但是,如果outputlist数据是Null,则输出Null。
在输出Null 关键字时,要把关键字正确翻译出来。
● 要把错误数据作为Error errorcode 输出。
在输出Error 关键字时,要把关键字正确翻译出来。
VBA中的自定义函数和类模块使用方法

VBA中的自定义函数和类模块使用方法自定义函数和类模块是 Visual Basic for Applications (VBA) 中的两个重要概念。
它们让我们能够进一步扩展和自定义 Excel 等 Office 应用程序的功能。
本文将介绍如何在 VBA 中使用自定义函数和类模块。
一、自定义函数自定义函数是一种自定义的 VBA 代码,它接受输入参数并返回结果。
通过创建自定义函数,我们可以在 Excel 的单元格中使用这些函数,以便进行特定的计算、操作和数据处理。
1. 创建自定义函数在 VBA 编辑器中,我们可以通过以下步骤创建自定义函数:1. 打开 Excel 并按下 "ALT + F11" 组合键,以打开 VBA 编辑器。
2. 在 VBA 编辑器中,选择所需的工作簿,然后插入一个新的模块。
3. 在模块中编写自定义函数的 VBA 代码。
例如,以下是一个简单的自定义函数,用于计算两个数的和:```vbaFunction Sum(a As Double, b As Double) As DoubleSum = a + bEnd Function```2. 使用自定义函数使用自定义函数时,我们可以在 Excel 的单元格中直接调用它们,就像使用内置函数一样。
在需要的单元格中输入函数名和参数,然后按下回车键即可看到结果。
例如,如果我们在单元格A1中输入"=Sum(1, 2)",按下回车键后,A1的值将变为3,表示1和2的和。
二、类模块类模块是VBA中用于创建自定义对象的模块。
它可以用来定义属于特定类的属性和方法,进一步扩展 VBA 的能力。
通过类模块,我们可以创建属于自己的对象,实现更复杂的逻辑和操作。
1. 创建类模块要创建类模块,请遵循以下步骤:1. 打开 Excel 并按下 "ALT + F11" 组合键,以打开 VBA 编辑器。
2. 在 VBA 编辑器中,选择所需的工作簿,然后插入一个新的类模块。
VBA类模块完全教程

VBA类模块完全教程VBA是Visual Basic for Applications的缩写,它是微软Office 套件中的一种宏语言,用于编写自定义的程序代码来自动化和扩展Office应用程序的功能。
VBA可以在Excel、Word、PowerPoint等应用中使用,可以通过创建类模块来组织和管理VBA代码,使其更具结构和可维护性。
本文将介绍VBA类模块的基本概念和用法。
1.什么是类模块:类模块是VBA中的一种特殊模块,它允许我们定义和管理自定义的对象类型。
一个类模块可以包含变量和过程(即子程序和函数),并可以通过实例化(创建对象)来使用。
类模块提供了面向对象编程的基本功能,允许我们通过封装数据和操作来创建更加可靠和可扩展的代码。
2.如何创建类模块:3.类的属性和方法:类模块可以包含属性和方法来定义对象的数据和操作。
类的属性是对象的特征或状态,可以是公共(Public)或私有(Private)的。
类的方法是对象的行为或操作,可以是公共或私有的。
4.类的初始化器和析构器:类模块中可以有一个特殊的过程叫做“Class_Initialize”,它在对象被创建时自动调用,用于初始化类的属性。
类模块中也可以定义一个特殊的过程叫做“Class_Terminate”,它在对象被销毁时自动调用,用于清理资源。
5.类的实例化和使用:通过使用“New”关键字,我们可以实例化一个类并创建一个对象。
然后,我们可以使用对象的属性和方法来访问和操作对象的数据和行为。
6.类的继承:VBA中的类也支持继承关系,即一个类可以从另一个类派生出来,从而继承了父类的属性和方法。
通过使用关键字“Implements”和“Class_Initialize”过程,我们可以实现类的继承。
7.类模块的应用:类模块在VBA开发中有广泛的应用,可以用于创建自定义的对象类型,封装复杂的数据结构和算法,实现复杂的业务逻辑等。
通过使用类模块,我们可以提高代码的可读性和可维护性,减少重复代码的编写。
VBA类模块完全教程
VBA类模块完全教程VBA是Visual Basic for Applications(Visual Basic应用程序)的缩写,是一种内置于Microsoft Office套件中的编程语言,用于自动化Office应用程序的任务和功能。
VBA类模块是VBA中的一个重要概念,它允许程序员创建自定义的数据类型和操作。
类模块中可以定义类的属性、方法和事件,从而创建一个可重复使用的对象。
下面是一个完整的VBA类模块教程,包括如何创建和使用类模块的步骤:2.在左侧的项目窗口中,右键单击要添加类模块的工作簿,并选择"插入"->"类模块"。
3.在类模块中,可以定义类的属性、方法和事件。
以下是一个示例类的代码:```Public Class Person'定义属性Private mName As StringPrivate mAge As Integer'定义方法Public Sub SetName(name As String)mName = namePublic Sub SetAge(age As Integer)mAge = ageEnd SubPublic Sub ShowInfoMsgBox "Name: " & mName & ", Age: " & mAgeEnd SubEnd Class```4. 在模块中定义的私有变量(如mName和mAge)是类的属性。
可以使用公共方法(如SetName和SetAge)来设置这些属性的值。
5. 可以使用类的实例来调用方法。
例如,可以创建一个Person对象,并为其属性赋值,然后调用ShowInfo方法来显示信息。
```Sub TestDim p As New Person'设置属性值p.SetName "John"p.SetAge 25p.ShowInfoEnd Sub```6. 运行Test子程序,将会显示一个对话框,其中包含了设置的属性值。
Excel VBA编程 应用程序的构成
Excel VBA编程应用程序的构成从开发者的角度看,Excel VBA应用程序主要由3部分组成,分别为工作表、用户窗体、模块和类模块组成。
1.工作表工作表是Excel存储和处理数据的最重要的部分,其中包含排列成行和列的单元格。
它是工作簿的一部分,也称电子表格。
使用工作表可以对数据进行组织和分析,可以同时在多张工作表中输入并编辑数据,并且可以对来自不同工作表的数据进行汇总计算。
例如,在“员工档案管理”工作簿中,包含3个工作表,分别为Sheet1、Sheet2和Sheet3。
用户可以在Sheet1工作表中创建一个表格。
然后,在该工作表中通过运用控件按钮再创建相应的VBA代码,从而完成工作表的制作,如图1-10所示。
工作表图1-10 工作表2.用户窗体VBA中的用户窗体可以实现人机对话,用户可以使用窗体来显示所输入的数据,也可以使用用户窗体创建一个完整的用户界面。
也可以在工作表中,直接设计操作界面。
用户在Windows对话框中所看到的大多数控件都能在用户窗体中实现,如命令按钮,选项按钮,复选框,文本框、组合框和一些其他不常用的控件图像等等。
例如,下图1-11所示的为一个用户窗体,在该窗体中,用户可以运用一些控件来完成该“员工档案管理系统”的创建。
用户窗体图1-11 创建用户窗体3.模块与类模类模块又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体)。
而类模块用于创建新的对象类的属性,方法的定义等。
其中,模块具有两个基本的特征:外部特征和内部特征。
外部特征是指模块跟外部环境联系的接口(即其他模块或程序调用该模块的方式,包括有输入输出参数、引用的全局变量)和模块的功能;内部特征是指模块的内部环境具有的特点(即该模块的局部数据和程序代码)。
例如,在图1-12所示的图中显示了模块的位置。
它位于VB编辑器窗口中的【工程管理器】窗口中。
模块图1-12 模块。
VBA类模块入门
VBA类模块入门'一、什么是类模块''类',相同的事物划成的一个类别。
象人类,鸟类等。
在VBA中可以创建类的模块就是类模块。
'二、类模块有什么作用?'类就象一个设计好的模板,它生产的产品大小、形状,它所具体的功能已设置完成,当需要'这类产品时,我们只需要把材料放进模板,就可以马上生产出一个和模板有相同特征、功能的产品。
'对于同类的产品可以通过循环批量操作,不必一个个的设置。
具体的作用有以下几方面: '1 让代码可读性更强'2 调用excel对象的一些事件,如程序级事件,内嵌图表事件,菜单命令事件等. '3 封装API,让代码更简捷易懂'4 创建控件数组. '5 团队协作时,编写完整模块后可以方便队友调用,减少开发时间'三、怎么创建类模块'插入菜单(或在工程窗口右键--插入)--类模块。
'四、类模块相关语句'1 property let '作用:生成对象的可写入属性Property Let 属性名称(参数) Xiadi = xdiEnd Property '2 property Get() '作用,生成对象的可读取属性Property Get 属性名称()End Property '3 Property Set '作用:生成子对象Property Set 子对象名称(对象)End Property '4 Sub语句'作用:生成方法'5 Function语句'使用类,首先要创建一个新的实例。
即'dim 变量as new 类模块名称'创建后,就可以使用该类的对象、方法和属性了'************调用MyRng类**************************************Sub 设置单元格() Dim rggg As New MyRng Set rggg.红色单元格= Range('B5') Set rggg.绿色单元格= Range('B6')End Sub‘以下写在类模块内Property Set 红色单元格(rng As Range) rng.Interior.ColorIndex = 3End PropertyProperty Set 绿色单元格(rng As Range)rng.Interior.ColorIndex = 4End Property '************日报表类*****************************************Sub 设置模板工作表类模块方法()Dim shh As New 日报表'创建一个日报表类的实例Set shh.模板= Sheets('sheet2')End SubSub 设置模板工作表调用宏方法() 设置模板Sheets('sheet2')End SubSub 设置模板(sh As Worksheet)sh.Range('a1:g1').Merge sh.Range('a1') = '营业日报表'sh.Range('a1').HorizontalAlignment = xlCenter sh.Range('d3') = DateEnd Sub‘以下写在类模块内Property Set 模板(sh As Worksheet) sh.Range('a1:g1').Merge sh.Range('a1') = '营业日报表' sh.Range('a1').HorizontalAlignment = xlCentersh.Range('d3') = DateEnd Property'************调用梯形面积类************************************Sub 面积之类模块() Dim 梯形As New 梯形面积With 梯形.上底= 2 .下底= 3 .高=4MsgBox .面积MsgBox .高End WithEnd SubSub 面积之自定义函数() MsgBox mianji(2, 3, 4)End Sub Function mianji(上底, 下底, 高) mianji = (上底+ 下底) * 高/ 2End Function‘以下写在类模块内Dim Shangdi, Xiadi, gaoProperty Let 上底(shdi) Shangdi = shdiEnd Property Property Let 下底(xdi) Xiadi = xdiEnd PropertyProperty Let 高(g) gao = gEnd PropertyProperty Get 高() 高= gaoEnd PropertyProperty Get 面积() 面积= (Shangdi + Xiadi) * gao / 2End Property '************调用万能计算器类*********************************Sub 计算() Dim 计算As New 万能计算器With 计算Set .单元格区域= Sheets('sheet3').Range('a1:a10') .求和.平均数.求个数End WithEnd Sub‘以下写在类模块内Dim rng As RangeProperty Set 单元格区域(rg As Range) Set rng = rgEnd PropertySub 求和() Debug.Print '求和:' & Application.Sum(rng)End SubSub 平均数() Debug.Print '平均数:' &Application.Average(rng)End SubSub 求个数() Debug.Print '个数:' & Application.CountA(rng)End Sub。
vba class molules实例
vba class molules实例VBA类模块是Excel中常用的编程工具,它可以帮助我们更好地管理和组织代码,提高编程效率和可维护性。
本文将介绍VBA类模块的基本概念和使用方法,并通过实例演示其在Excel中的应用。
一、VBA类模块的基本概念VBA类模块是一种面向对象的编程方式,它将数据和处理数据的方法封装在一起,以类的形式存在。
类是一种抽象的概念,它定义了对象的属性和方法。
属性表示对象的特征,方法表示对象的行为。
通过创建类的实例,我们可以使用该类中定义的属性和方法。
二、VBA类模块的创建和使用在Excel中,我们可以通过以下步骤来创建VBA类模块:1. 打开Excel,按下Alt + F11进入VBA编辑器;2. 在项目资源管理器中,右键点击项目名称,选择“插入”->“类模块”;3. 在类模块中,定义类的属性和方法;4. 在其他模块中,创建类的实例并使用其属性和方法。
下面我们通过一个简单的实例来演示VBA类模块的使用。
假设我们需要管理一个学生信息表,其中包含学生的姓名、年龄和成绩。
我们可以创建一个名为"Student"的类,用来表示学生的信息。
在类模块中定义"Student"类的属性和方法:```vba' 类模块:StudentPrivate mName As StringPrivate mAge As IntegerPrivate mScore As DoublePublic Property Get Name() As StringName = mNameEnd PropertyPublic Property Let Name(ByVal value As String) mName = valueEnd PropertyPublic Property Get Age() As IntegerAge = mAgeEnd PropertyPublic Property Let Age(ByVal value As Integer) mAge = valueEnd PropertyPublic Property Get Score() As DoubleScore = mScoreEnd PropertyPublic Property Let Score(ByVal value As Double)mScore = valueEnd PropertyPublic Function GetGrade() As StringIf mScore >= 90 ThenGetGrade = "A"ElseIf mScore >= 80 ThenGetGrade = "B"ElseIf mScore >= 70 ThenGetGrade = "C"ElseIf mScore >= 60 ThenGetGrade = "D"ElseGetGrade = "F"End IfEnd Function```在其他模块中,我们可以创建"Student"类的实例,并使用其属性和方法:```vba' 模块:MainSub Test()Dim stu As New Student = "Tom"stu.Age = 20stu.Score = 85MsgBox "姓名:" & & vbCrLf & _"年龄:" & stu.Age & vbCrLf & _"成绩:" & stu.Score & vbCrLf & _"等级:" & stu.GetGradeEnd Sub```运行上述代码,我们可以看到弹出一个消息框,显示了学生的姓名、年龄、成绩和等级。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习Excel VBA 中的类模块
这几天,我们Team 又有一个新的流程上线,所以制作一个新版工作Report 的Excel 文档的任务又落到了我头上,以前利用Excel VBA 写过很多类似的文档,所以这个任务的完成还算是轻车熟路,基本上把以前写的Daily Report 文档拿过来修改一下就OK 啦。
在代码的编写中,我想到了新的问题,因为我编写的文档需要大量的按钮控件,点击按钮Excel完成的动作大致相同,以前我只是把相同的问题,归类到一个Sub 中去,然后再不同的按钮的Click函数中调用,其实这样做只是提高了代码的可修改性和重用性,学过设计模式的朋友应该了解,这样做的目的无非是如果按钮的响应动作发生变化,我只需要修改Sub 中的代码即可,但是即便是这样,我还需要在制作新的Excel 文档时手动生成大量的按钮Click事件响应函数,使用“海量”的”CTRL+V” 操作,于是懒惰的我开始思考有没有更简单的方法,最开始的时候我还比较享受使用“海量”的”CTRL+V” 操作,因为毕竟100个按钮,如果0.5秒操作一次的话,一分钟就搞定了,看来懒人的劳动是必须要量化的,呵呵。
不过,实际问题是,在我的代码中每个Click 事件的响应函数中需要动态获取按钮本身的Cell位置,也就是所以我需要修改100个的函数,这样的工作量太大了,所以我开始思考: Excel VBA中是否具有Java 中的反射机制?
我在论坛中询问了相关问题,多亏大哥的帮助,他告诉我Excel VBA 虽然没有反射机制,但是我所希望的功能完全可以通过Excel VBA 中的类模块来实现并给出了一个很好的实例。
于是,我通过Google 了一些类模块的学习资料,认真的学习了一下。
类模块机制给开发者提供了自定义控件动作的功能。
下面的例子实现了自定义Excel 文档中的CommandButton 的Click 动作:
首先创建一个类模块,
Public WithEvents anniu As mandButton
Private Sub anniu_Click()
MsgBox "我的名字是:" & & Chr(10) & "我的宽度是:" & anniu.W idth
End Sub
其次,在Workbook 模块中编写以下代码:
Dim 按钮() As 类1
Private Sub Workbook_Open()
Dim a As Object, j%
For Each a In Sheet1.OLEObjects
If InStr(, "CommandButton") = 1 Then
j = j + 1
ReDim Preserve 按钮(j)
Set 按钮(j) = New 类1
Set 按钮(j).anniu = Sheet1.OLEObjects().Object
End If
Next
End Sub
以上就完成了自定义 CommandButton 动作。
感兴趣的朋友们,可以自己找找Excel 类模块的相关知识系统的学习一下。