Excel精英培训网

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

[已解决]Property语句的问题

[复制链接]
发表于 2010-2-24 22:16 | 显示全部楼层 |阅读模式

VBA类模块从零入门实例2: http://www.excelpx.com/dispbbs.asp?BoardID=5&replyID=147307&id=28879&skin=0

象入门示例2介绍Property Get的作用一样,能否用很简单示例(比如,在原示例增加内容),来说明Property let和Property set的作用?

谢谢!

[此贴子已经被作者于2010-2-25 10:45:48编辑过]
最佳答案
2010-2-25 11:44

用兰版那个例子:

类模块代码:

Private 上底1 As Double
Private 下底1 As Double
Private 高1  As Double
Private Rng As Range '仅为演示用
Public Property Get 面积() As Double
 面积 = (上底1 + 下底1) * 高1 / 2
End Property
Public Property Let 上底(SD As Double)
    上底1 = SD
End Property
Public Property Let 下底(XD As Double)
    下底1 = XD
End Property
Public Property Let 高(GG As Double)
    高1 = GG
End Property
Public Property Set 范围(FW As Range)
    Set Rng = FW
End Property
Public Property Get 范围()
    范围 = Rng.Address
End Property

模块中代码:

Sub 梯形面积()
 Dim tx As New 梯形   '实例化一个类,即分创建名称叫tx的梯形类对象
 tx.高 = 10           '重新设置它的高度
 tx.上底 = 2          '重新设置它的上底
 tx.下底 = 3          '重新设置它的下底
 Set tx.范围 = Range("A1")
 MsgBox tx.面积       '计算它的面积
 MsgBox tx.范围
End Sub

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2010-2-25 10:47 | 显示全部楼层

浓缩为1个问题了[em04]

目的,是希望能知道另外2句的作用、效果,从示例中体会。谢谢!

回复

使用道具 举报

发表于 2010-2-25 11:44 | 显示全部楼层    本楼为最佳答案   

用兰版那个例子:

类模块代码:

Private 上底1 As Double
Private 下底1 As Double
Private 高1  As Double
Private Rng As Range '仅为演示用
Public Property Get 面积() As Double
 面积 = (上底1 + 下底1) * 高1 / 2
End Property
Public Property Let 上底(SD As Double)
    上底1 = SD
End Property
Public Property Let 下底(XD As Double)
    下底1 = XD
End Property
Public Property Let 高(GG As Double)
    高1 = GG
End Property
Public Property Set 范围(FW As Range)
    Set Rng = FW
End Property
Public Property Get 范围()
    范围 = Rng.Address
End Property

模块中代码:

Sub 梯形面积()
 Dim tx As New 梯形   '实例化一个类,即分创建名称叫tx的梯形类对象
 tx.高 = 10           '重新设置它的高度
 tx.上底 = 2          '重新设置它的上底
 tx.下底 = 3          '重新设置它的下底
 Set tx.范围 = Range("A1")
 MsgBox tx.面积       '计算它的面积
 MsgBox tx.范围
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-2-25 11:53 | 显示全部楼层

谢谢阿木!!

学习哇

[em04]
回复

使用道具 举报

发表于 2010-2-25 12:30 | 显示全部楼层

再举一个简单的例子吧,根据指定的颜色和单元格设置设置颜色L

模块中:

Sub tianchong()
  Dim myc As New myclass
  myc.颜色 = 3
  Set myc.设置颜色的单元格 = Range("c1")
  myc.设置颜色
End Sub

myclass类中:

Public yanse As Integer
Public myrg As Range
Public Property Let 颜色(A As Integer)
  yanse = A
End Property
Public Property Set 设置颜色的单元格(rn As Range)
 Set myrg = rn
End Property
Sub 设置颜色()
  myrg.Interior.ColorIndex = yanse
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-2-25 12:58 | 显示全部楼层

谢谢兰版!

这是兰版5楼示例的附件 J2qlDzoq.rar (10.29 KB, 下载次数: 1)

回复

使用道具 举报

发表于 2010-2-25 13:17 | 显示全部楼层

QUOTE:
以下是引用爱疯在2010-2-25 12:58:00的发言:

谢谢兰版!

这是兰版5楼示例的附件,不知我注释得合不合适?


Public
   Property
   Let 颜色(A As
   Integer)
    yanse = A    '传递形参A的值,给公共变量yanse
End
   Property
Public
   Property
   Set 设置颜色的单元格(rn As Range)
    Set myrg = rn    '传递形参rn的值,给公共变量myrg
End
   Property

运行后,我觉得这两部分效果都是重新赋值,黄色部分应该可以互换,结果却出错!我不明白,为什么不可以互换?

set 是设置的类的对象属性, let是设置非对象的值可写入属性,get是设置类的可读出属性,区别就是一个针对对象,一个针对值

回复

使用道具 举报

发表于 2010-2-25 13:19 | 显示全部楼层

就象下面的程序中就会出错

Sub dd()
 Dim k As Integer
 Set k = 100
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-2-25 13:29 | 显示全部楼层

噢,let是设置非对象的变量;set是设置对象的变量。

刚才没发现a的数据类型,与rn的数据类型,有这样的区别。

谢谢兰版!

[em25][em25]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 16:15 , Processed in 0.357388 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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