'一、什么是类模块 ''类',相同的事物划成的一个类别。象人类,鸟类等。在VBA中可以创建类的模块就是类模块。
'二、类模块有什么作用?
'类就象一个设计好的模板,它生产的产品大小、形状,它所具体的功能已设置完成,当需要 '这类产品时,我们只需要把材料放进模板,就可以马上生产出一个和模板有相同特征、功能的产品。 '对于同类的产品可以通过循环批量操作,不必一个个的设置。具体的作用有以下几方面: '1 让代码可读性更强 '2 调用excel对象的一些事件,如程序级事件,内嵌图表事件,菜单命令事件等. '3 封装API,让代码更简捷易懂 '4 创建控件数组. '5 团队协作时,编写完整模块后可以方便队友调用,减少开发时间
'三、怎么创建类模块 '插入菜单(或在工程窗口右键--插入)--类模块。 '四、类模块相关语句 '1 property let '作用:生成对象的可写入属性 Property Let 属性名称(参数) Xiadi = xdi End 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 = 3 End Property Property Set 绿色单元格(rng As Range) rng.Interior.ColorIndex = 4 End Property '************日报表类***************************************** Sub 设置模板工作表类模块方法() Dim shh As New 日报表 '创建一个日报表类的实例 Set shh.模板 = Sheets('sheet2') End Sub Sub 设置模板工作表调用宏方法() 设置模板 Sheets('sheet2') End Sub Sub 设置模板(sh As Worksheet) sh.Range('a1:g1').Merge sh.Range('a1') = '营业日报表' sh.Range('a1').HorizontalAlignment = xlCenter sh.Range('d3') = Date End Sub ‘以下写在类模块内 Property Set 模板(sh As Worksheet) sh.Range('a1:g1').Merge sh.Range('a1') = '营业日报表' sh.Range('a1').HorizontalAlignment = xlCenter sh.Range('d3') = Date End Property '************调用梯形面积类************************************ Sub 面积之类模块() Dim 梯形 As New 梯形面积 With 梯形 .上底 = 2 .下底 = 3 .高 = 4 MsgBox .面积 MsgBox .高 End With End Sub Sub 面积之自定义函数() MsgBox mianji(2, 3, 4) End Sub Function mianji(上底, 下底, 高) mianji = (上底 + 下底) * 高 / 2 End Function ‘以下写在类模块内 Dim Shangdi, Xiadi, gao Property Let 上底(shdi) Shangdi = shdi End Property Property Let 下底(xdi) Xiadi = xdi End Property Property Let 高(g) gao = g End Property Property Get 高() 高 = gao End Property Property Get 面积() 面积 = (Shangdi + Xiadi) * gao / 2 End Property '************调用万能计算器类********************************* Sub 计算() Dim 计算 As New 万能计算器 With 计算 Set .单元格区域 = Sheets('sheet3').Range('a1:a10') .求和 .平均数 .求个数 End With End Sub ‘以下写在类模块内 Dim rng As Range Property Set 单元格区域(rg As Range) Set rng = rg End Property Sub 求和() Debug.Print '求和:' & Application.Sum(rng) End Sub Sub 平均数() Debug.Print '平均数:' & Application.Average(rng) End Sub Sub 求个数() Debug.Print '个数:' & Application.CountA(rng) End Sub |
|