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
如果您对特定代码有疑问,请将其添加到您的问题中。
许多来源,例如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
如果您对特定代码有疑问,请将其添加到您的问题中。