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

【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.xdnf.cn/news/8648.html

相关文章:

  • 【笔记】如何解决GitHub报错403
  • [创业之路-377]:企业战略管理案例分析-战略制定/设计-市场洞察“五看”:看宏观之社会发展趋势:数字化、智能化、个性化的趋势对初创公司的战略机会
  • 品鉴JS的魅力之防抖与节流【JS】
  • 英语写作中“随着……的出现”with the advent of 的用法
  • 03-工具篇-SSH远程登录ubuntu系统
  • 同为科技 智能PDU产品选型介绍 EN10/I801CI
  • Elasticsearch实操案例
  • Linux Shell编程(九)
  • 贪心介绍 LeetCode 455.分发饼干 LeetCode 376. 摆动序列 LeetCode 53. 最大子序和
  • C# 异步方法中缺少 `await` 运算符的隐患与解决方案
  • Vue框架1(vue搭建方式1,vue指令,vue实例生命周期)
  • 卷积神经网络优化与应用实践:参数设置、泛化能力提升及多领域应用解析
  • Vue 3 路由传参使用指南
  • 视频监控联网系统GB28181协议中设备状态信息报送流程详解以及查询失败常见原因
  • uni-app学习笔记十--vu3 计算属性computed
  • 鸿蒙UI开发——上拉抽屉的更新与事件回调
  • Android Studio 连接夜神模拟器 自动断开的问题
  • 基于AI生成测试用例的处理过程
  • 海外IP代理在跨境电商选品、运营、风控的实战应用解析
  • ARM笔记-ARM伪指令及编程基础
  • Python:从脚本语言到工业级应用的传奇进化
  • 生成图片验证码
  • Ubuntu安装1Panel可视化管理服务器及青龙面板及其依赖安装教程
  • 再论自然数全加和-3
  • 进程信号(下)【Linux操作系统】
  • 心有灵犀数
  • PHP学习笔记(九)
  • 从零开始构建一个区块链应用:技术解析与实践指南
  • JS 中判断 null、undefined 与 NaN 的权威方法及场景实践
  • RabbitMQ 应用