gromit 发表于 2006-7-30 17:21:53

集合类无缘无故清空

你好
在我编写的一个应用程序中,我有一个集合类。在一个子和下面的子之间,集合从应该有成员变成没有成员——这不应该发生!中间没有任何代码对集合做任何事情。烦人的是应用程序曾经工作过,然后我做了一些更改,但没有。我可以回去逐行比较更改后的子文件,因为幸运的是zip文件中确实有一个旧版本,但在最初的细读中,我没有发现任何可能导致这种情况发生的东西。
任何关于这种行为的可能原因的建议,需要探索的东西,都会非常感激,因为现在这让我很困惑。
谢谢
乔恩
**** Hidden Message *****

MickD 发表于 2006-7-30 17:36:29

我没有使用vba,但集合是静态的(共享的)吗?
另外,如果你从一个子到另一个子,也许你的类超出了范围并被摧毁了??

mmelone 发表于 2006-7-30 17:39:18


在类中还是在外部模块中?如果external是从一个sub传递到另一个sub的类实例,那么它是成员变量(并且可能在其中一个sub中声明为局部变量)吗,它是全局变量吗...
另外,您是否在任何地方授予对该类的外部访问权限,例如-
Public Function GetCol () as Collection
    Set GetCol = myCollection
End Function

Public Property Get NewEnum() As IUnknown
    Set NewEnum = myCollection.
End Property等。
没有尸体很难进行验尸(张贴代码)。

mmelone 发表于 2006-7-31 12:03:53

我很确定这与你存储集合类的变量的范围有关。请密切注意该变量何时被初始化,何时被销毁。

gromit 发表于 2006-7-31 12:06:43

特别要注意的是,如果为集合类定义了一个全局变量,并且在sub或function中声明了一个同名的变量,那么第二个(局部)变量将用于该sub或function中的所有内容,并在sub或function完成时被销毁。

gromit 发表于 2006-8-4 15:55:39

谢谢你的建议。问题解决了——我成功地声明了集合两次;一个是普通模块中的公共行(这是我想要的,所以它可以被所有的应用程序访问,另一个是类模块中的私有行——这是令人讨厌的行,一旦删除它,一切都会正常工作。再次感谢你的帮助。
乔恩

gromit 发表于 2006-8-5 09:52:38

很高兴你把它解决了,我毫不怀疑你的名字,聪明的家伙,格罗米特是。
页: [1]
查看完整版本: 集合类无缘无故清空