VBA 字典数据类型

VBA dictionary data type

许多来源,例如https://support.microsoft.com/en-us/kb/187234,声称字典的键可以是字符串以外的多种数据类型。但是,当我尝试将整数和日期作为键时,它失败了。有人可以解释一下吗?

我尝试了下面@Tim Williams 的回答,它有效。我之前的是

Private Sub trial()
Dim dict As New Dictionary

dt = 1
'vols.marketDate = Date
dict.Add dt, 4 'vols
c = dict(dt)
End Sub

与@Tim Williams 相比,我定义字典的方式是否有所不同?


我问题的第二部分与字典的值有关。我 运行 以下 VBA 代码,试图使用用户定义的结构作为字典的值,并遇到错误消息:

Public Type volSurface
    marketDate As Date
End Type


Private Sub trial()
Dim dict As New Dictionary, vols As volSurface

dt = 1
vol.marketDate = Date
dict.Add dt, vols
c = dict(dt)
End Sub

这是否意味着我不能将结构用作字典中的值,或者我做错了什么?如果是后一种情况,我该如何补救?

这里没问题:

Sub Tester()

    Dim d, k
    Set d = CreateObject("scripting.dictionary")
    d.Add 1, 1
    d.Add "a", 2
    d.Add #1/2/1978#, 3
    d.Add CDbl(66), 4
    d.Add CSng(99), 5
    d.Add True, 6

    For Each k In d.keys
        Debug.Print TypeName(k), k, d(k)
    Next k

End Sub

输出:

Integer        1             1 
String        a              2 
Date          1/2/1978       3 
Double         66            4 
Single         99            5 
Boolean       True           6 

如果您对特定代码有疑问,请将其添加到您的问题中。