看到这个标题,相信读者肯定非常不屑的任务我在故弄玄虚,客官莫急,我说说你听听,肯定会有新故事。

字典对象是VBA中常用的对象之一,对于这种这种对象通常用两种绑定方式:前期绑定和后期绑定。
前期绑定需要在VBE中先引用相关扩展库,前期绑定的优势在于书写代码时可以智能提升相关属性和方法。
后期绑定使用CreateObject函数创建相关对象,后期绑定的优势在于,代码发布给用户后,用户无需引用相关扩展库,就可以直接运行代码。

两个方法各有利弊,没有优劣之分,通常在对象使用时是相同的,但是也有例外,今天要讲的就是字典对象在前期绑定和后期绑定两种方式中的不同表现。


示例1:后期绑定 - For Each遍历Keys

Sub DEMO1()Dim dic As ObjectSet dic = CreateObject("scripting.dictionary")For i = 1 To 3dic(i) = iNextFor Each d In dic.Keys:Debug.Print d, dic(d)Next
End Sub

【代码解析】
第3行代码使用CreateObject创建字典对象。
第4~6行代码循环添加字典键值。
第7~9行代码循环遍历字典对象。
第7行代码使用For Each循环遍历字典对象的Keys集合。
第8行代码中d为字典对象的键,dic(d)为字典对象对应的值。


示例2:后期绑定 - For遍历Keys,Items

Sub DEMO2()Dim dic As ObjectSet dic = CreateObject("scripting.dictionary")For i = 1 To 3dic(i) = iNextFor i = 0 To dic.Count - 1Debug.Print dic.Keys(i), dic.Items(i) '运行时错误451Next i
End Sub

【代码解析】
第7~9行代码与示例略有不同。
第7行代码中dic.Count返回值为字典对象中键值对的个数。
第8行代码使用索引值引用集合中的对象,这也是常用方法之一,但是此处会出现运行时错误451。


示例3:前期绑定 - For遍历Keys,Items
运行示例代码前需要引用“Microsoft Scripting Runtime”扩展库。

Sub DEMO3()Dim dic As Scripting.DictionarySet dic = CreateObject("scripting.dictionary")For i = 1 To 3dic(i) = iNextFor i = 0 To dic.Count - 1Debug.Print dic.Keys(i), dic.Items(i)Next i
End Sub

此代码完全可以正常运行。


示例4:后期绑定 - For遍历Keys,Items

Sub DEMO4()Dim dic As ObjectSet dic = CreateObject("scripting.dictionary")For i = 1 To 3dic(i) = iNextFor i = 0 To dic.Count - 1Debug.Print dic.Keys()(i), dic.Items()(i)Next i
End Sub

【代码解析】
后期绑定也可以使用For循环,只是和通常的写法略有不同,第8行代码可以正常运行。


今天讲解就都这里,看似不起眼的小知识,如果大家遇到的话,可能会花费很多时间去解决代码错误,希望对大家有帮助。

VBA遍历字典对象中独门秘籍相关推荐

  1. python如何遍历字典对象

    在 Python 中,我们可以使用以下两种方式来遍历字典对象: 使用 for 循环和 items() 方法 例如: my_dict = {'a': 1, 'b': 2, 'c': 3} for key ...

  2. 遍历聚合对象中的元素——迭代器模式(二)

    2 迭代器模式概述 在软件开发中,我们经常需要使用聚合对象来存储一系列数据.聚合对象拥有两个职责:一是存储数据:二是遍历数据.从依赖性来看,前者是聚合对象的基本职责:而后者既是可变化的,又是可分离的. ...

  3. 遍历聚合对象中的元素——迭代器模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/9992005 20世纪80年代,那时我家有一台"古老的"电视机,牌子我忘 ...

  4. JS 遍历JSON对象中的键值对

    对象:一组无序属性的集合,属性的值可以是任意的类型: json也是对象,数据都是成对的,也就是键值对: json实际上就是一组格式化后的字符串数据. 遍历JSON对象中的数据,可通过for-in循环实 ...

  5. java如何遍历字典_Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. 遍历聚合对象中的元素——迭代器模式(四)

    4 使用内部类实现迭代器 在迭代器模式结构图中,我们可以看到具体迭代器类和具体聚合类之间存在双重关系,其中一个关系为关联关系,在具体迭代器中需要维持一个对具体聚合对象的引用,该关联关系的目的是访问存储 ...

  7. python列表中的字典怎么遍历,如何遍历字典列表中的嵌套字典?

    对Python还是新手,需要一些帮助.我找到了一些在字典列表中迭代的答案,但没有找到在字典列表中嵌套字典的答案.在 以下是字典列表中单个字典的大致结构[{ 'a':'1', 'b':'2', 'c': ...

  8. 在word中使用vba遍历Range对象的Characters

    环境:win7 64位,vs2010,word2010 c#源码: try { MSWord.Range rFind = rangeFind.Parent as MSWord.Range; for ( ...

  9. Java如何遍历获取对象中的所有属性和值

    当我们需要对对象的所有值进行遍历的时候,依次进行get.set方法非常的麻烦,这个时候我们就会用到对象属性和值的遍历,应用代码如下 // voucher是目标对象 try{//通过getDeclare ...

最新文章

  1. R语言创建频数表和列联表
  2. 预写式日志(Write-Ahead Logging (WAL))
  3. Selenium + Python操作IE 速度很慢的解决办法
  4. LeetCode 121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)
  5. java当前时间转化毫秒_Java学习笔记-时间相关类
  6. TCP的状态转换及生产问题实操
  7. 【算法竞赛学习】资金流入流出预测-挑战Baseline_数据探索与分析1
  8. [007] 详解 .NET 程序集
  9. 数据结构之数组模拟栈
  10. 1bit和1byte_1byte等于( )bit_学小易找答案
  11. 从PHPer到Gopher要经历的一些转变
  12. 国科微电子:芯片将是国内企业下一个发力点
  13. [知识库:python-tornado]异步调用中的上下文控制Tornado stack context
  14. IPSec之security acl
  15. 图像入门——2. 数字图像发展历史与图像处理概述
  16. 架构师的主要职责是什么?
  17. 【C++】-- STL容器适配器之priority_queue
  18. 阿里云网站备案基础知识-什么是网站备案
  19. c++builder 6.0中OnCliked= fun实现的原理
  20. 为什么sqlserver创建存储过程成功,却找不到这个存储过程呢

热门文章

  1. Portapack应用开发教程(十一) 加入内置麦克风
  2. linux 查看网络流量来源_linux中查看网卡流量六种方法
  3. 【matlab】拟合直线的方法
  4. 二叉树的五种遍历方式
  5. 网络工程师成长日记138-前途迷茫和年龄无关
  6. 【vs】vs编译爆出大量莫名其妙错误的解决方法
  7. 2013年IT行业薪资待遇
  8. 查看电脑连接的WiFi密码的两种方法
  9. Android -- GridLayoutManager
  10. mybatis实战:一、mybatis入门(配置、一些问题的解决)