Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数组VBA中访问字典_Vba_Excel - Fatal编程技术网

在数组VBA中访问字典

在数组VBA中访问字典,vba,excel,Vba,Excel,当字典位于数组中时,我想使用键“first”访问字典值“西瓜”。我相信这是将字典插入数组的正确方法。我已经尝试了所有我能想到的语法组合,但在任何地方都找不到当字典位于数组中时如何访问字典的答案 Function dictTest() As Object Dim m_info As Dictionary Set m_info = New Dictionary m_info.Add "first", "watermelon" Set dictTest = m_info

当字典位于数组中时,我想使用键“first”访问字典值“西瓜”。我相信这是将字典插入数组的正确方法。我已经尝试了所有我能想到的语法组合,但在任何地方都找不到当字典位于数组中时如何访问字典的答案

Function dictTest() As Object
    Dim m_info As Dictionary
    Set m_info = New Dictionary
    m_info.Add "first", "watermelon"
    Set dictTest = m_info
End Function

Sub checker()
    Dim x(1 to 1) As Object
    Set x(1) = dictTest
End Sub

这应该适合您:

Function dictTest() As Object
    Dim m_info As Object
    Set m_info = CreateObject("Scripting.Dictionary")
    m_info.Add "first", "watermelon"
    Set dictTest = m_info
End Function

Sub checker()
    Dim x(1 To 1) As Object
    Set x(1) = dictTest
    MsgBox x(1)("first")
End Sub

你到底有什么问题?你试过哪些不起作用的?编辑上面的内容,我想在字典位于数组中时访问它。就语法而言,我不知道如何在字典位于数组中时访问它。这就是我需要帮助的地方。看泰格拉瓦塔的回答@约瑟夫(等)-这里有一个很好的参考:。。。当你为链接添加书签时,也可以为这个链接添加书签(来自同一网站):。(我通常避免对主要目的是销售书籍的网站进行编码,但这一次是例外,因为网站内容非常全面,组织良好,包含了所有涉及VBA收藏和/或词典的常见任务的示例。)@ashleedawg喜欢第一个链接,这就是我对词典的兴趣所在。我不相信这规定了数组的行为,但肯定是很棒的ref.Perfect。我在谷歌上搜索了一下stack,找不到确切的答案。非常感谢。您能否说明使用
CreateObject(“Scripting.Dictionary”)
与我声明和设置对象的方式不同的好处,因为我的语法不使用it@JosephErickson这完全取决于你使用的机器。为了便于移植,我们使用上面提到的后期绑定,因为有些机器没有相同的“引用”。这两种方法都有效,但是像您在问题中那样使用早期绑定意味着您需要检查正确的引用first@JosephEricksonMarcucciboy2是正确的,这只是早期绑定和后期绑定的区别。我个人更喜欢后期绑定,因为它与不同类型的系统和MS Office版本具有更高的兼容性。有关差异的简要描述,请参见此处:@Marcucciboy2,但选择引用的不是“机器”,而是项目。项目引用始终与VBA项目一起保存(如果您稍微玩弄了VBIDE API,则保存在
VBProject.references
集合中)。延迟绑定脚本运行时总是毫无用处的,因为1)自1998年左右以来,它在每个Windows box上的版本都完全相同(并且不会很快更新),2)无论是否延迟绑定,如果在没有库的机器(例如MacOS)上执行,它都会爆炸。