分享

VBA类模块入门

 先生草堂 2016-12-02

'一、什么是类模块


   ''类',相同的事物划成的一个类别。象人类,鸟类等。在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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多