首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scripting.Dictionary的清洁初始化

Scripting.Dictionary的清洁初始化
EN

Stack Overflow用户
提问于 2014-01-09 16:26:37
回答 2查看 3.4K关注 0票数 2

我在一个名为ProcessBook的应用程序中使用VBA,并希望在字典中存储一些静态信息。

我试图干净地初始化这个字典,而不需要调用一个单独的过程,但是我尝试的所有方法似乎都不是人们所期望的。

到目前为止,我尝试过的是:

代码语言:javascript
复制
Dim myDict As New Dictionary(Of String, String) (("key1", "item1"), ("key2", "item2"))
Dim myDict As Variant
Set myDict = New Dictionary( ("key1", "item1"), ("key2", "item2") )

从根本上说是一堆涉及到这种形式的猜测。

到目前为止,我能做的最好的事情是:

代码语言:javascript
复制
With myDict
.add "key1", "item1"
.add "key2", "item2"
End With

但是当它不在例行公事中的时候,它会对我吠叫,我想避免它。

我相信{}语法中的(类型,类型)超出了VBA6.5

有人知道在VBA6.5中初始化scripting.dictionary的一些干净的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-09 16:39:20

你的意思大概是VBA?如果是这样,则无法在例程之外操作/初始化对象实例。

唯一的方法是将它封装在一个类(cDict)中,并使用constuctor:

代码语言:javascript
复制
Private mDict As Scripting.Dictionary

Private Sub Class_Initialize()
    Set mDict = New Scripting.Dictionary
    With mDict
        .Add "key1", "item1"
        .Add "key2", "item2"
    End With
End Sub

Public Property Get Dict() As Scripting.Dictionary
    Set Dict = mDict
End Property

然后在客户端模块;

代码语言:javascript
复制
Private Dict As New cDict

Sub foo()
    MsgBox Dict.Dict.Item("key1")
    Dict.Dict.Add "key3", "item3"
    MsgBox Dict.Dict.Item("key3")
End Sub

(Of type与VB.Net泛型相关)

票数 1
EN

Stack Overflow用户

发布于 2014-01-09 16:59:11

VBA实际上是一种过程语言,而不是面向对象的语言,所以答案是使用过程。怎么做..。

代码语言:javascript
复制
Option Explicit
Option Compare Text

Sub test()
    Dim dic As New Scripting.Dictionary
    Add dic, Array("Darren", 123, "Alex", 321)
    MsgBox dic.Count
End Sub

Public Sub Add(dic As Dictionary, values As Variant)
    If Not IsArray(values) Then
        Err.Raise -1, "Add", "Values must be varient Array"
    ElseIf UBound(values) Mod 2 = 0 Then
        Err.Raise -1, "Add", "Even number of values required"
    End If
    Dim iQ As Long
    For iQ = 0 To UBound(values) Step 2
        dic.Add values(iQ), values(iQ + 1)
    Next
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21025756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档