我正在使用2个字典对象,声明为公共bc我需要它们在每个子对象之外保留我使用它们,但由于某种原因它们在我加载之前自动填充。有没有人看到这种行为?
Public itmsSpot As Dictionary, itmsFwd As Dictionary
Public sub runReport()
Set itmsSpot = New Dictionary
Set itmsFwd = New Dictionary
GenData
End Sub
Public Sub GenData
...
GenData循环遍历我的工作簿中的工作表,并根据工作表中的数据填充itmsSpot和/或itmsFwds,但由于某种原因,只要在它开始循环之前进入GenData,它就会在一个或两个中添加值通过表格。
我在调用GenData之前尝试过Set itmsSpot = Nothing
,但它并没有完全解决问题。即使我清除了工作表中的数据,它似乎也是从我上次运行它时自动填充的。有关为什么会发生这种情况的任何想法?
谢谢!
答案 0 :(得分:2)
如果已实例化并填充公共字典,则无需再次实例化第二次运行。将dict设置为新的dict并不是清除键和项目的正确方法。请改用.RemoveAll。
Public itmsSpot As Dictionary, itmsFwd As Dictionary
Public sub runReport()
if itmsSpot is nothing then Set itmsSpot = New Dictionary
if itmsFwd is nothing then Set itmsFwd = New Dictionary
itmsSpot.removeall
itmsFwd.removeall
'set comparemode on empty dict if binary compare (default) is not desired
itmsSpot.comparemode = vbtextcompare
itmsFwd.comparemode = vbtextcompare
GenData
End Sub
Public Sub GenData
...