• 【Excel VBA和Python对照学习】创建字典


    Excel VBA和Python双语对照学习

    我们从小学习语文,都用过字典。查字典时可以从第一页开始,一页一页地往下找,直到找到为止。这样做明显效率低下,特别是字的位置比较靠后的时候。所以查字典时不这样做,而是根据目录直接跳到对应的页码查找关于字的解释。字典中要查的每个字是唯一的,每个字都有对应的解释说明。

    字典中每个元素由一个键值对组成,其中键相当于真实字典中的字,它在整个字典中作为字条是唯一的;值相当于字的解释说明。Python中有字典数据类型,Excel VBA中则需要引外部库创建字典对象。

    点这里看视频课程

    【Excel VBA】
    Excel VBA中没有字典数据类型,也无法直接创建字典对象,而需要通过引用第三方库创建字典对象并通过对该对象编程来实现字典相关的操作。
    在Excel VBA中创建字典对象有前期绑定与后期绑定两种方式。
    用后期绑定创建字典对象,首先创建一个Object类型的变量,然后用CreateObject函数创建字典对象并用该变量进行引用。使用类似下面的代码创建字典对象dicT。

    Dim dicT As Object
    Set dicT = CreateObject("Scripting.Dictionary")
    
    • 1
    • 2

    然后就可以使用字典对象的属性和方法进行编程,比如向字典对象添加键值对。示例文件的存放路径为Samples\ch08\Excel VBA\创建字典.xlsm。

    Sub Test()
      Dim dicT As Object
      Set dicT = CreateObject("Scripting.Dictionary")
      
      '向字典对象添加键值对
      dicT.Add "No001", "刘丹"
      dicT.Add "No002", "朱晓琳"
      dicT.Add "No003", "马忠"
      Debug.Print dicT.Count  '3,字典的长度,即键值对的个数
    End Sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    用前期绑定创建字典对象,需要按照下面的步骤进行操作:
     在Excel主界面的“开发工具”功能面板中单击“Visual Basic”按钮,打开Excel的VBA开发环境。
     在“工具”菜单中单击”引用”选项,打开“引用”对话框,如图所示。
    在这里插入图片描述
     在“可使用的引用”列表框中选择“Microsoft Scripting Runtime”核选框。
     单击“确定”按钮。
    添加相关库的引用后,使用类似下面的代码创建字典对象dicT。

    Dim dicT As Scripting.Dictionary
    Set dicT=New Scripting.Dictionary
    
    • 1
    • 2

    或者

    Dim dicT As New Scripting.Dictionary
    
    • 1

    然后就可以使用字典对象的属性和方法进行编程,比如向字典对象添加键值对。示例文件的存放路径为Samples\ch08\Excel VBA\创建字典.xlsm。

    Sub Test2()
      Dim dicT As Scripting.Dictionary
      Set dicT = New Scripting.Dictionary
      
    • 1
    • 2
    • 3
  • 相关阅读:
    【基于Cocos Creator 3.5的赛车游戏】8.引入触摸屏幕事件并简单的控制小车
    【多目标优化算法】多目标粘液霉菌算法(MOSMA)附Matlab代码
    Java程序员毕业N年系列----毕业二年
    多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)
    大厂面试题:【SpringBoot篇面试题:1-5题】
    Matlab基本语法(二)
    【智慧港口】NTP网络时间服务器助力数字化港口建设
    Slf4j + Logback日志框架
    电脑电源灯一闪一闪开不了机怎么办
    如何做好项目管理
  • 原文地址:https://blog.csdn.net/DataLab/article/details/127776175