因此,我在这里使用了一些代码,在这里我使用了一个字典来填充在自定义类中作为属性保存的两个不同字典。我这样做是为了提高效率。VBA:字典内存问题?填充字典,.removeall,填充问题
注意:通过对每个要设置的属性使用字典,我有解决此问题的解决方法,但这不是非常有效。
所以大致这里是我的代码:
for iKey = 1 to class.maxnumber ' 8
dTempDict.add iKey, cdbl(24) ' enforce to 24 for calcs later
next iKey
Set class.dict1 = dTempDict ' commit to class.dict1
dTempDict.removeall 'wipe temp dictionary
for iKey = 1 to class.maxnumber ' 8
dTempDict.add iKey, "word" ' something other than 24 to test
next iKey
Set class.dict2 = dTempDict
所以上面的正常工作。然后我尝试循环并打印class.dict1的键,没有任何问题。然后,当我尝试将值分配给预先声明的dbl时,我陷入了困境。然后,我通过像这样每个键循环在不同的子类通过按地址:
dim dTempDict as scripting.dictionary
Set dTempDict = class.dict1
for each iKey in dTempDict
msgbox typename(dTempDict.Item(iKey))
next iKey
这带回来的结果......“字符串” ...混乱。然后我改变了我的值持有人到一个字符串,它的工作。我已经在类中检查了我的访问器,并且它们不会循环回错误的字典属性,因此即使我将它们分配给第二个,甚至执行.removeall,第二个字典的值也会填充到第一个字典中。
任何想法?
如上所述,对class.dict1和class.dict2使用不同的temp字典,它们被分配正确,但仍然令人困惑。