当前位置: 首页 > article >正文

【VBA 字典的引用和调用方法】

如何引用字典对象。在VBA中,字典不是内置的,所以需要引用Microsoft Scripting Runtime库。

在 VBA 中使用 Dictionary(字典)对象可以方便地存储键值对(Key-Item)数据,以下是引用方法和常用参数介绍:


1. 引用字典对象

接下来是关于创建字典实例的两种方法:前期绑定和后期绑定。前期绑定有智能提示,但需要设置引用;后期绑定则更灵活,但可能牺牲一些便利性。

VBA 中的字典需要引用 Microsoft Scripting Runtime 库:

  1. 打开 VBA 编辑器(按 Alt + F11)。
  2. 点击菜单栏的 工具引用
  3. 勾选 Microsoft Scripting Runtime,点击确定。

如果不想引用库,也可以通过 后期绑定 创建字典:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

2. 字典的属性和方法

(1) 常用属性
属性描述
.Count返回字典中的键值对数量
.Key(key)获取或设置某个键的名称(可用于修改键名)
.Item(key)获取或设置某个键对应的值
.CompareMode设置键的比较模式(如是否区分大小写)
(2) 常用方法
方法描述参数说明
.Add(key, item)添加键值对key: 唯一键名;item: 对应的值
.Exists(key)检查键是否存在返回 Boolean 类型
.Keys()返回所有键的数组无参数
.Items()返回所有值的数组无参数
.Remove(key)删除指定键值对需提供存在的键名
.RemoveAll()清空字典无参数

3. 示例代码

用户可能的实际应用场景包括数据处理、去重、快速查找等。例如,使用字典来统计唯一值,或是快速检查某个键是否存在。可以给出几个示例,比如统计单词出现次数,或者合并数据。

(1) 基础用法
Sub DictionaryExample()Dim dict As New Scripting.Dictionarydict.CompareMode = TextCompare  ' 不区分大小写' 添加键值对dict.Add "Name", "Alice"dict.Add "Age", 25' 检查键是否存在If dict.Exists("Name") ThenMsgBox dict.Item("Name")  ' 输出: AliceEnd If' 修改值dict.Item("Age") = 26' 遍历所有键值对Dim key As VariantFor Each key In dict.KeysDebug.Print key & ": " & dict.Item(key)Next key' 删除指定键dict.Remove "Name"
End Sub
(2) 统计唯一值
Sub UniqueValues()Dim dataArr As VariantdataArr = Array("Apple", "Banana", "Apple", "Orange")Dim dict As New Scripting.DictionaryFor Each item In dataArrIf Not dict.Exists(item) Thendict.Add item, 1Elsedict.Item(item) = dict.Item(item) + 1End IfNext' 输出结果For Each key In dict.KeysDebug.Print key & ": " & dict.Item(key) & "次"Next
End Sub
' 输出:
' Apple: 2次
' Banana: 1次
' Orange: 1次

4. 注意事项

  • 唯一性:键名必须唯一,重复添加会报错(使用前需检查 .Exists(key))。
  • 默认比较模式:默认区分大小写,可通过 CompareMode 修改。
    • vbBinaryCompare(0):区分大小写(默认)
    • vbTextCompare(1):不区分大小写
  • 性能优势:字典的查询效率高(近似 O(1)),适合大数据处理。

通过灵活使用字典,可以高效处理数据分组、去重、快速查找等场景。

http://www.lryc.cn/news/2385685.html

相关文章:

  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的管理与运营策略研究
  • 储能电站:风光储一体化能源中心数字孪生
  • iOS 直播特殊礼物特效实现方案(Swift实现,超详细!)
  • 9. 现代循环神经网络
  • 视频太大?用魔影工厂压缩并转MP4,画质不打折!
  • Python中tqdm进度条工具和enumerate函数的使用详解
  • 最宽温度范围文本格式PT1000分度表-200~850度及PT1000铂电阻温度传感器计算公式
  • 基于Netty架构的充电桩系统设计:服务器运维如何更好保障稳定性?
  • 操作系统学习笔记第1章 操作系统概述(灰灰题库
  • 后端开发实习生-抖音生活服务
  • 机器学习算法-sklearn源起
  • Keepalived 在不同场景下的高可用方案设计与最佳实践
  • 注册并创建一个微信小程序
  • CentOS 10:启动telnet服务
  • 计算机网络——每一层的用到的设备及其作用
  • OpenLayers 加载鹰眼控件
  • Eigen与OpenCV矩阵操作全面对比:最大值、最小值、平均值
  • 安全基础与协议分析
  • 【Web前端】JavaScript入门与基础(一)
  • 第一课:医学影像研究的科学思维与问题提出
  • 前端大文件上传性能优化实战:分片上传分析与实战
  • 数据的获取与读取篇---常见的数据格式JSON
  • 【python代码】一些小实验
  • Linux服务器配置深度学习环境(Pytorch+Anaconda极简版)
  • Vue-创建应用/挂载应用/根组件模版-.vue单文件/应用配置
  • 超低延迟音视频直播技术的未来发展与创新
  • 虚拟文件(VFS)
  • Java 内存模型(JMM)深度解析:理解多线程内存可见性问题
  • 转移dp简单数学数论
  • 【大模型面试每日一题】Day 27:自注意力机制中Q/K/V矩阵的作用与缩放因子原理