我几乎从不将值放入字典中。我只用钥匙。别担心。没有数据不占用内存。
这些是您的选择。
来自 .NET(尽量避免这些,因为已经存在 COM 开销 - .NET 开销也只是复制了 COM 功能)
•ArrayList——没有固定大小的数组类。您可以继续向其中添加项目。
•Hashtable——这个类类似于 Scripting.Dictionary 类。您可以添加项目并按键查找。
•队列——这是一个先进先出 (FIFO) 集合。您将项目推入,然后在稍后以相同的顺序读出它们。
•堆栈——先进后出 (FILO) 集合。您将项目压入堆栈,然后以相反的顺序将它们弹出。
•SortedList——与 Hashtable 类似,但当您遍历项目时,它们总是按键排序。
见https://msdn.microsoft.com/en-us/library/aa719110(v=vs.71).aspx
COM 对象
你有 VBScript 的 Scripting.Runtime 的 Dictionary(vbscript 可以粘贴到 VBA 中)
'This dedups
Set Dict = CreateObject("Scripting.Dictionary")
On Error Resume Next
Dict.Add "Key1", "Data"
Dict.Add "Key2", "Data"
Dict.Add "Key3", "Data"
If Err.Number <> 0 then
If LCase(Arg(1)) = "l" then
Dict.Remove Line
Dict.Add Line, ""
End If
End If
For Each thing in Dict.Keys()
Msgbox thing
Next
然后是ADO Recordset,可以从文件中保存和加载。
'This sorts and filters
Set rs = CreateObject("ADODB.Recordset")
With rs
.Fields.Append "SortKey", 4
.Fields.Append "Txt", 201, 5000
.Open
.AddNew
.Fields("SortKey").value = 1
.Fields("Txt").value = "Line1"
.UpDate
.AddNew
.Fields("SortKey").value = 2
.Fields("Txt").value = "Line2"
.UpDate
.AddNew
.Fields("SortKey").value = 3
.Fields("Txt").value = "Line3"
.UpDate
'Sorting
.Sort = "SortKey ASC"
'Filtering
.filter = "Sortkey < 3"
'Writing it out
Do While not .EOF
MsgBox .Fields("Txt").Value
.MoveNext
Loop