Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 15488|回复: 8

[分享] vba类模块浅显学习之六,类模块创建方法

[复制链接]
发表于 2011-3-21 22:31 | 显示全部楼层 |阅读模式
本帖最后由 wbzxz 于 2011-4-16 21:28 编辑

我一开始认为类模块创建方法很神秘,查阅了不少资料,我个人感觉,类模块创建方法并不困难,因为我只是初学,也只能举两个最浅显的例子来进行说明,叙述中有不对的地方,请各位老师和童鞋指点;
1、类模块创建方法的语句

     Public Sub 方法名称()
        .......
     end sub
     
     Public Function 方法名称() as 数据类型
        .......
     end sub

    Public是默认的,通常可以省略

     我们可以看到,创建方法实际上就是sub过程和Function过程

2、如果创建的方法不需要返回值,就可以用sub过程;

3、如果创建的方法需要返回值,就要用function过程;

举例1:
这个例子中,在类模块中定义了一个名称叫做 ”清空“ 的方法,可以用来清空类模块的所有属性,因为不需要返回值,使用的是sub过程

类模块代码:
  1. Option Explicit

  2. Public 姓名 As String
  3. Public 每小时工资 As Double
  4. Public 每周工作时间 As Double

  5. Public Sub 清空()
复制代码

标准模块代码:
  1. Option Explicit

  2. Sub EmployeePay()

  3.   Dim 新雇员 As New 雇员 '创建“雇员”类模块对象的单个实例——新雇员
  4.   
  5.   '给“新雇员”的各个属性赋值
  6.   新雇员.姓名 = "张三"
  7.   新雇员.工资 = 15
  8.   新雇员.每周工作时间 = 55
  9.   
  10.   
  11.   '读取“新雇员”的各个属性的值
  12.   MsgBox "雇员姓名:" & 新雇员.姓名 & Chr(13) & _
  13.           "雇员每小时工资:" & 新雇员.工资 & Chr(13) & _
  14.           "雇员每周工作时间:" & 新雇员.每周工作时间
  15.          
  16.   '利用类模块创建的方法“清空”变量
  17.     新雇员.清空
  18.   
  19.   '再次读取“新雇员”的各个属性的值
  20.    MsgBox "雇员姓名:" & 新雇员.姓名 & Chr(13) & _
  21.           "雇员每小时工资:" & 新雇员.工资 & Chr(13) & _
  22.           "雇员每周工作时间:" & 新雇员.每周工作时间
  23. End Sub

复制代码
通过这个程序运行,可以看出,第一次弹出Msgbox窗口的时候,各个属性都有值,然后利用清空方法后,每个属性都被清空啦。



举例2:
在这里例子中,在类模块中定义了一个名称叫做 ”每周工资“ 的方法,他是用 ”每周工资*每周工作时间“,因为需要返回值,所以我用了Function函数

类模块代码
  1. Option Explicit

  2. Public 姓名 As String
  3. Public 每小时工资 As Double
  4. Public 每周工作时间 As Double

  5. Public Function 每周工资() As Double
  6.   每周工资 = 每小时工资 * 每周工作时间
  7. End Function
复制代码


标准模块代码
  1. Option Explicit

  2. Sub EmployeePay()

  3.   Dim 新雇员 As New 雇员 '创建“雇员”类模块对象的单个实例——新雇员
  4.   
  5.   '给“新雇员”的各个属性赋值
  6.   新雇员.姓名 = "张三"
  7.   新雇员.每小时工资 = 15
  8.   新雇员.每周工作时间 = 55
  9.   
  10.   
  11.   '读取“新雇员”的各个属性的值
  12.   MsgBox "雇员姓名:" & 新雇员.姓名 & Chr(13) & _
  13.           "雇员每小时工资:" & 新雇员.每小时工资 & Chr(13) & _
  14.           "雇员每周工资:" & 新雇员.每周工资 & Chr(13)
  15. End Sub

复制代码
通过运行上面代码,我们会看到,每周工资是825,那么我们的方法就获得成功啦。

以上是我对方法的理解,举了两个简单的例子,不知道能不能说明方法的用法,希望大家指点。

以上代码的两个源文件如下:

类模块基本示例6.rar (10.19 KB, 下载次数: 194)

评分

参与人数 1 +30 收起 理由
兰色幻想 + 30

查看全部评分

发表于 2011-3-22 12:41 | 显示全部楼层
回复

使用道具 举报

发表于 2011-4-8 22:49 | 显示全部楼层
回复

使用道具 举报

发表于 2011-4-15 07:51 | 显示全部楼层
谢谢分享  
回复

使用道具 举报

发表于 2011-4-16 21:16 | 显示全部楼层
没有看到
定义了一个名称叫做 ”每周工资“ 的方法,他是用 ”每周工资*每周工作时间“,因为需要返回值,所以我用了Function函数

能不能把Function函数直接写在帖子里
回复

使用道具 举报

 楼主| 发表于 2011-4-16 21:29 | 显示全部楼层
回复 yiyiyicz 的帖子

不好意思,有时候用在帖子里面贴代码的时候,有丢失的情况,记得上次改过一回,可能丢失了。现在已经改过来啦,呵呵。
回复

使用道具 举报

发表于 2011-4-16 21:31 | 显示全部楼层
非常感谢
对于跟着学的,方便点
回复

使用道具 举报

 楼主| 发表于 2011-4-16 21:33 | 显示全部楼层
回复 yiyiyicz 的帖子

嘿嘿,有时候写完帖子就很晚啦,检查也不细心,应该谢谢您才是啊。
回复

使用道具 举报

发表于 2017-10-3 14:31 | 显示全部楼层
学习了,感谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 07:23 , Processed in 0.150163 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表