Class VBA:字典-只能检索最后一个条目

Class VBA:字典-只能检索最后一个条目,class,vba,excel,dictionary,storage,Class,Vba,Excel,Dictionary,Storage,这可能是一个新手的错误,我没有意识到一些我没有改变的设置。无论如何,我正在尝试使用Dictionary来存储我创建的类的实例 类cls\u consunt只是一个细节容器 Public枚举为字符串 公开发送日期为日期 作为字符串的公共承运人 作为字符串的公共服务 作为整数的公共项目 作为整数的公共权重 单一公共成本 公共附加费类型为字符串 下面是我如何将细节存储到类中,然后存储到字典中 函数getOverload\u标记(givenTag作为字符串,givenCol作为字符串,ByRef di

这可能是一个新手的错误,我没有意识到一些我没有改变的设置。无论如何,我正在尝试使用Dictionary来存储我创建的类的实例

cls\u consunt
只是一个细节容器

Public枚举为字符串
公开发送日期为日期
作为字符串的公共承运人
作为字符串的公共服务
作为整数的公共项目
作为整数的公共权重
单一公共成本
公共附加费类型为字符串
下面是我如何将细节存储到类中,然后存储到字典中

函数getOverload\u标记(givenTag作为字符串,givenCol作为字符串,ByRef dicStore作为字典,ByRef counter作为整数)`
作为整数的Dim tagLen
Dim conNum,续为字符串
Dim CLSSURCHARGE新cls_包含的详细信息
Dim发货日期,承运人为字符串
尺寸项目,权重为整数
单程票的价格
范围(givenCol)。选择
tagLen=Len(给定标记)
执行While(ActiveCell.Value“”)
conNum=Mid(ActiveCell.Value,1,Len(ActiveCell.Value)-1)
conTag=Mid(ActiveCell.Value,Len(ActiveCell.Value)-tagLen+1,Len(ActiveCell.Value))
如果(conTag=givenTag),则“删除:原始行和调整行都包含行”
DispatchDate=ActiveCell.Offset(0,-2).Value
items=ActiveCell.Offset(0,10).Value
权重=ActiveCell.Offset(0,11).Value
cost=ActiveCell.Offset(0,12).Value
clssChargeDetails.ContinentEnumber=conNum
clssChargeDetails.DispatchDate=发货日期
clssChargeDetails.carrier=承运人
clssChargeDetails.items=项目
clssChargeDetails.weight=重量
clssChargeDetails.cost=成本
clssChargeDetails.surchargeType=givenTag
dicStore.添加conNum、CLSSURCHARGE详细信息
givenCtr=givenCtr+1
ActiveCell.EntireRow.Delete
其他的
ActiveCell.Offset(1,0)。选择
如果结束
环
端函数
这就是我试图从字典中找出内涵的方法

函数显示附加费(wrkShtName作为字符串,ByRef dicList作为字典)
'删除现有工作表
Dim wrkSht As工作表
出错时继续下一步
设置wrkSht=图纸(wrkShtName)
错误转到0
如果没有,那就什么都不是了
工作表(wrkShtName)。删除
如果结束
Worksheets.Add(在:=Worksheets(Worksheets.Count))之后)。Name=wrkShtName
填充列标题
范围(“A2”)。选择
如cls_所示,Dim getCon
Set getCon=新的cls\u含义
Dim vPtr作为变型
作为整数的Dim ptrDic
对于dicList.Keys中的每个vPtr
设置getCon=dicList.Item(vPtr)
ActiveCell.Value=getCon.enumber
ActiveCell.Offset(0,1).Value=getCon.DispatchDate
ActiveCell.Offset(0,2).Value=getCon.carrier
ActiveCell.Offset(0,12).Value=getCon.items
ActiveCell.Offset(0,13).Value=getCon.weight
ActiveCell.Offset(0,15).Value=getCon.cost
ActiveCell.Offset(0,16).Value=getCon.surchargeType
设置getCon=Nothing
ActiveCell.Offset(1,0)。选择
下一个vPtr
端函数
我可以看到
dicList
确实包含不同的详细信息,
getCon
只获取字典中的最后一个条目


任何帮助都会很棒

为了避免在循环中重复使用和添加相同的引用,当您需要一个新实例(在
If(conTag=givenTag)
之后)时,只需请求一个:

Set clsSurchargeDetails = New cls_Connote

这是真的!非常感谢你!