Excel精英培训网

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

[已解决][求助]这样就溢出啦????

[复制链接]
发表于 2011-4-15 09:36 | 显示全部楼层 |阅读模式
本帖最后由 wbzxz 于 2011-4-15 09:38 编辑

今天在学习类模块过程中,无意中碰到了溢出错误。
代码如下:

类模块代码

  1. Option Explicit

  2. Property Set prRng(trRange As Range)
  3.     Set prRng = trRange
  4. End Property
复制代码

标准模块代码

  1. Sub test()
  2.     Dim myClass As Class1
  3.     Set myClass = New Class1
  4.     Set myClass.prRng = Range("C1:D4")
  5. End Sub
复制代码

问题很明显,是Property Set 过程写错啦,但是我很想知道为什么会溢出呢,老师能给指点一下吗?

(我用F8调试,竟然发现,一直在执行Property Set 过程的)


溢出错误.rar (8.56 KB, 下载次数: 2)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-4-15 09:54 | 显示全部楼层    本楼为最佳答案   
Property Set prRng(trRange As Range)
    Set prRng = trRange
End Property

死循环!
当执行Set prRng = trRange时,会再次执行Property Set prRng过程,然后再执行Set prRng = trRange,然后再执行Property Set prRng过程。。。。以此类推
回复

使用道具 举报

发表于 2011-4-15 09:58 | 显示全部楼层
一般是这样的
  1. Option Explicit
  2. Private rng As Range
  3. '赋值
  4. Property Set prRng(trRange As Range)
  5.     Set rng = trRange
  6. End Property
  7. '访问属性
  8. Property Get prRng()
  9.     Set prRng = rng
  10. End Property
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-4-15 09:58 | 显示全部楼层
哈哈,嘿嘿,知道啦,amule老师,原来在在Property Set过程中执行Set prRng=trRange,也会触发Property Set prRng过程啊。
原来死循环啦,最后就累死啦。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 05:45 , Processed in 0.380850 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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