打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
来自【Excel完美论坛】
正在加载...

佛山小老鼠

昨天 08:57

楼主

第57节类模块基础【2016年6月16日Vba编程高级班上课笔记】

第57节类模块基础【2016年6月16日Vba编程高级班上课笔记】


课件
听课学员出勤截图


讲课内容
Option Explicit
'类模块
'插入和删除类模块
'类模块有三步曲
'第一步曲:创建类模块
'第二步曲:类的实例化,类模块本身不能用
'要实例化才能用,怎样实例化,定义一下就可以了
'第三步曲:归类
'Sub TestA()
'    Dim 橙子 As New 水果 '我们引用外部对象,前期绑定也是这样
'    橙子.
'End Sub
'类最大的一个特点,就是共享,团队合作
Sub TestB()
    Dim 李子 As New 水果
    李子.去重 = Selection
End Sub
Sub TestC()
    Dim 苹果 As New 水果
    苹果.去重 = Selection
End Sub
Sub TestD()
    Dim 香蕉 As New 水果, arr1, arr2(), x
    arr1 = Range('A1:A9')
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For x = 2 To UBound(arr1)
  香蕉.算 = arr1(x, 1)
  arr2(x - 1, 1) = 香蕉.算
    Next x
    [b2].Resize(UBound(arr1), 1) = arr2
End Sub
Option Explicit
Dim Cj 'Public Cj'同有必要用public,因为外面没有用
''通过模块级变量Cj让let和get产生联系
''Property Let 颜色(x%) '可写属性'Let后面括号一定要有参数
''
''End Property
''Property Get 形状() 'get后面括号一定可无可有参数
''    '可读的属性
''End Property
'''在类模块里叫做属性过程名称
'''在普通模块里叫做对象的属性
''Sub 吃() '吃是方法
''
''End Sub
''Function 称重量() '称重量是函数
''
''End Function
'Property Let 去重(Rg As Range) 'Rg是从普通模块里传递过来的
''是指等号后面部分
'    Dim Dic, arr1, ar
'    arr1 = Rg '因为字典优先装入对象,所以要到一下,先装数组
'    Set Dic = CreateObject('Scripting.Dictionary')
'    For Each ar In arr1
'  If ar <> '' Then
'    Dic(ar) = ''
'  End If
'    Next ar
'    Rg.Clear
'    If UBound(arr1, 1) = 1 Then
'  Rg(1).Resize(1, Dic.Count) = Dic.keys
'    Else
'  Rg(1).Resize(Dic.Count, 1) = Application.Transpose(Dic.keys)
'    End If
'End Property
'Property Let 算(x As Variant)
'    If x < 60 Then
'  Cj = '不及格'
'    ElseIf x < 70 Then
'  Cj = '及格'
'  ElseIf x < 80 Then
'  Cj = '良好'
'    Else
'  Cj = '优秀'
'    End If
'End Property
'Property Get 算()
'    算 = Cj
'End Property
''当我们学会类模块之后,let用sub
''get我们就用function代替


立即关注
9

全部回复

只看楼主 倒序排列

李斯特 2楼

Option Explicit
'Sub test()
'    Dim my As New 我的代码
'
'End Sub
Sub testb()
    Dim 李子 As New 水果
   李子.去重 = Selection
End Sub
Sub tsetd()
    Dim 香蕉 As New 水果
    Dim arr1, arr2(), x
    arr1 = Range('a1:a9')
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For x = 2 To UBound(arr1)
  香蕉.算 = arr1(x, 1)
  arr2(x - 1, 1) = 香蕉.算
    Next x
    [b2].Resize(UBound(arr1), 1) = arr2
End Sub
Property Let 去重(Rg As Range) 'Rg是从普通模块里传递过来的
'是指等号后面部分
    Dim Dic, arr1, ar
    arr1 = Rg '因为字典优先装入对象,所以要到一下,先装数组
    Set Dic = CreateObject('Scripting.Dictionary')
    For Each ar In arr1
  Dic(ar) = ''
    Next ar
    Rg.Clear
    Rg(1).Resize(Dic.Count, 1) = Application.Transpose(Dic.keys)
End Property
Property Let 算(x As Variant)
    If x < 60 Then
  cj = '不及格'
    ElseIf x < 70 Then
  cj = '及格'
    ElseIf x < 80 Then
  cj = '良好'
    ElseIf x < 90 Then
  cj = '优秀'
    End If
End Property
Property Get 算()
    算 = cj
End Property

昨天 21:56

qingqingcaoj 3楼

Option Explicit
'类模块
'插入和删除类模块
'类模块有三步曲
'第一步曲:创建类模块
'第二步曲:类的实例化,类模块本身不能用
'要实例化才能用,怎样实例化,定义一下就可以了
'第三步曲:归类
'Sub TestA()
'    Dim 橙子 As New 水果 '我们引用外部对象,前期绑定也是这样
'    橙子.
'End Sub
'类最大的一个特点,就是共享,团队合作
Sub TestB()
    Dim 李子 As New 水果
    李子.去重 = Selection
End Sub
Sub TestC()
    Dim 苹果 As New 水果
    苹果.去重 = Selection
End Sub
Sub TestD()
    Dim 香蕉 As New 水果, arr1, arr2(), x
    arr1 = Range('A1:A9')
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For x = 2 To UBound(arr1)
  香蕉.算 = arr1(x, 1)
  arr2(x - 1, 1) = 香蕉.算
    Next x
    [b2].Resize(UBound(arr1), 1) = arr2
End Sub
Option Explicit
Dim Cj 'Public Cj'同有必要用public,因为外面没有用
''通过模块级变量Cj让let和get产生联系
''Property Let 颜色(x%) '可写属性'Let后面括号一定要有参数
''
''End Property
''Property Get 形状() 'get后面括号一定可无可有参数
''    '可读的属性
''End Property
'''在类模块里叫做属性过程名称
'''在普通模块里叫做对象的属性
''Sub 吃() '吃是方法
''
''End Sub
''Function 称重量() '称重量是函数
''
''End Function
'Property Let 去重(Rg As Range) 'Rg是从普通模块里传递过来的
''是指等号后面部分
'    Dim Dic, arr1, ar
'    arr1 = Rg '因为字典优先装入对象,所以要到一下,先装数组
'    Set Dic = CreateObject('Scripting.Dictionary')
'    For Each ar In arr1
'  If ar <> '' Then
'    Dic(ar) = ''
'  End If
'    Next ar
'    Rg.Clear
'    If UBound(arr1, 1) = 1 Then
'  Rg(1).Resize(1, Dic.Count) = Dic.keys
'    Else
'  Rg(1).Resize(Dic.Count, 1) = Application.Transpose(Dic.keys)
'    End If
'End Property
'Property Let 算(x As Variant)
'    If x < 60 Then
'  Cj = '不及格'
'    ElseIf x < 70 Then
'  Cj = '及格'
'  ElseIf x < 80 Then
'  Cj = '良好'
'    Else
'  Cj = '优秀'
'    End If
'End Property
'Property Get 算()
'    算 = Cj
'End Property
''当我们学会类模块之后,let用sub
''get我们就用function代替


Property Let 算(x As Variant)
    If x < 60 Then
  Cj = '不及格'
    ElseIf x < 70 Then
  Cj = '及格'
    ElseIf x < 80 Then
  Cj = '良好'
    Else
  Cj = '优秀'
    End If
End Property


Property Get 结果()
    结果 = Cj
End Property

昨天 22:04

火烧云 4楼

Option Explicit
'类模块
'插入和删除类模块
'类模块有三步曲
'第一步曲:创建类模块
'第二步曲:类的实例化,类模块本身不能用
'要实例化才能用,怎样实例化,定义一下就可以了
'第三步曲:归类
'Sub TestA()
'    Dim 橙子 As New 水果 '我们引用外部对象,前期绑定也是这样
'    橙子.
'End Sub
'类最大的一个特点,就是共享,团队合作
Sub TestB()
    Dim 李子 As New 水果
    李子.去重 = Selection
End Sub
Sub TestC()
    Dim 苹果 As New 水果
    苹果.去重 = Selection
End Sub
Sub TestD()
    Dim 香蕉 As New 水果, arr1, arr2(), x
    arr1 = Range('A1:A9')
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For x = 2 To UBound(arr1)
  香蕉.算 = arr1(x, 1)
  arr2(x - 1, 1) = 香蕉.算
    Next x
    [b2].Resize(UBound(arr1), 1) = arr2
End Sub
Option Explicit
Dim Cj 'Public Cj'同有必要用public,因为外面没有用
''通过模块级变量Cj让let和get产生联系
''Property Let 颜色(x%) '可写属性'Let后面括号一定要有参数
''
''End Property
''Property Get 形状() 'get后面括号一定可无可有参数
''    '可读的属性
''End Property
'''在类模块里叫做属性过程名称
'''在普通模块里叫做对象的属性
''Sub 吃() '吃是方法
''
''End Sub
''Function 称重量() '称重量是函数
''
''End Function
'Property Let 去重(Rg As Range) 'Rg是从普通模块里传递过来的
''是指等号后面部分
'Rg As Range表示你选择的区域
'    Dim Dic, arr1, ar
'    arr1 = Rg '因为字典优先装入对象,所以要到一下,先装数组
'    Set Dic = CreateObject('Scripting.Dictionary')
'    For Each ar In arr1
'  If ar <> '' Then
'    Dic(ar) = ''
'  End If
'    Next ar
'    Rg.Clear
'    If UBound(arr1, 1) = 1 Then
'  Rg(1).Resize(1, Dic.Count) = Dic.keys
'Rg (1)表示左上角第一个单元格
'    Else
'  Rg(1).Resize(Dic.Count, 1) = Application.Transpose(Dic.keys)
'    End If
'End Property
'Property Let 算(x As Variant)
'    If x < 60 Then
'  Cj = '不及格'
'    ElseIf x < 70 Then
'  Cj = '及格'
'  ElseIf x < 80 Then
'  Cj = '良好'
'    Else
'  Cj = '优秀'
'    End If
'End Property
'Property Get 算()
'    算 = Cj
'End Property
''当我们学会类模块之后,let用sub
''get我们就用function代替


Property Let 算(x As Variant)
    If x < 60 Then
  Cj = '不及格'
    ElseIf x < 70 Then
  Cj = '及格'
    ElseIf x < 80 Then
  Cj = '良好'
    Else
  Cj = '优秀'
    End If
End Property


Property Get 结果()
    结果 = Cj
End Property

昨天 22:06

家庭主簿 5楼

'类模块
'插入和删除类模块
'类模块有三步曲
'第一步曲:创建类模块
'第二步曲:类的实例化,类模块本身不能用
'要实例化才能用,怎样实例化,定义一下就可以了
'第三步曲:归类
'Sub TestA()
'    Dim 橙子 As New 水果 '我们引用外部对象,前期绑定也是这样
'    橙子.
'End Sub
'类最大的一个特点,就是共享,团队合作
Sub TestB()
    Dim 李子 As New 水果
    李子.去重 = Selection
End Sub
Sub TestC()
    Dim 苹果 As New 水果
    苹果.去重 = Selection
End Sub
Sub TestD()
    Dim 香蕉 As New 水果, arr1, arr2(), x
    arr1 = Range('A1:A9')
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For x = 2 To UBound(arr1)
  香蕉.算 = arr1(x, 1)
  arr2(x - 1, 1) = 香蕉.算
    Next x
    [b2].Resize(UBound(arr1), 1) = arr2
End Sub
Option Explicit
Dim Cj 'Public Cj'同有必要用public,因为外面没有用
''通过模块级变量Cj让let和get产生联系
''Property Let 颜色(x%) '可写属性'Let后面括号一定要有参数
''
''End Property
''Property Get 形状() 'get后面括号一定可无可有参数
''    '可读的属性
''End Property
'''在类模块里叫做属性过程名称
'''在普通模块里叫做对象的属性
''Sub 吃() '吃是方法
''
''End Sub
''Function 称重量() '称重量是函数
''
''End Function
'Property Let 去重(Rg As Range) 'Rg是从普通模块里传递过来的
''是指等号后面部分
'    Dim Dic, arr1, ar
'    arr1 = Rg '因为字典优先装入对象,所以要到一下,先装数组
'    Set Dic = CreateObject('Scripting.Dictionary')
'    For Each ar In arr1
'  If ar <> '' Then
'    Dic(ar) = ''
'  End If
'    Next ar
'    Rg.Clear
'    If UBound(arr1, 1) = 1 Then
'  Rg(1).Resize(1, Dic.Count) = Dic.keys
'    Else
'  Rg(1).Resize(Dic.Count, 1) = Application.Transpose(Dic.keys)
'    End If
'End Property
'Property Let 算(x As Variant)
'    If x < 60 Then
'  Cj = '不及格'
'    ElseIf x < 70 Then
'  Cj = '及格'
'  ElseIf x < 80 Then
'  Cj = '良好'
'    Else
'  Cj = '优秀'
'    End If
'End Property
'Property Get 算()
'    算 = Cj
'End Property
''当我们学会类模块之后,let用sub
''get我们就用function代替


Property Let 算(x As Variant)
    If x < 60 Then
  Cj = '不及格'
    ElseIf x < 70 Then
  Cj = '及格'
    ElseIf x < 80 Then
  Cj = '良好'
    Else
  Cj = '优秀'
    End If
End Property


Property Get 结果()
    结果 = Cj

昨天 22:08

正在加载...
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA类模块封装
VBA基础——循环语句
VBA中字典的几种“撸”法..至于怎么“撸”?当然是看着以下的内容一起“撸”!(二)
字典去重复
数据有效性序列在EXCEL中的使用(二级下拉菜单 多级下拉菜单)
ExcelVBA参数化自动压缩文件可多文件及多文件夹混合压缩
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服