ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: ning84

字典能记载Range的数据特性。

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-14 15:44 | 显示全部楼层
aman1516 发表于 2022-12-14 15:28
只是好奇楼主知道 "字典能记载Range的数据特性" 后有什么好的、特殊的应用?

VBA中字典数据的排序-Excel VBA程序开发-ExcelHome技术论坛 -  https://club.excelhome.net/thread-1102706-2-1.html

学习这个贴子后,扩展学习到Dictionary能记载Range数据特性。


  1. Sub del()
  2.     Dim Rng As Range, ii, jj
  3.     Dim Tmp, Str, Arr, Arr1
  4.     Dim Dict As Dictionary
  5.         Set Dict = New Dictionary
  6.     For Each Rng In Sheet1.Range("A1:A10")
  7.         Set Dict(Rng.Value) = Rng
  8.     Next Rng
  9.     With Dict
  10.          Arr1 = .Items
  11.          Arr = .Keys
  12.          For ii = 0 To .Count - 1
  13.              Set Rng = .Items(ii)
  14.              'Debug.Print Rng.Address, Rng
  15.          Next ii
  16.          ''
  17.     End With
  18.     Set Dict = DictionarySortOfRange(Dict)
  19.     Stop
  20.     With Dict
  21.          For ii = 0 To .Count - 1
  22.               Set Rng = .Items(ii)
  23.               Debug.Print Rng.Address, Rng.Value, .Keys(ii)
  24.          Next ii
  25.     End With
  26. End Sub
  27. Function DictionarySortOfRange(Dict As Dictionary)
  28.     ''
  29.     Dim Arr, ii, jj, Tmp
  30.     Dim Rng As Range
  31.     With Dict
  32.          Arr = .Keys
  33.          For ii = 0 To .Count - 1
  34.              Set Rng = .Items(ii)
  35.              'Debug.Print Rng.Address, Rng
  36.          Next ii
  37.          ''
  38.          For ii = 1 To .Count '- 1
  39.              For jj = 1 To .Count - 1
  40.                  'Debug.Print Dict(Arr(ii)), Dict(Arr(jj))
  41.                  If Dict(Arr(ii - 1)) > Dict(Arr(jj - 1)) Then
  42.                       Set Tmp = Dict(Arr(ii - 1))
  43.                       Set Dict(Arr(ii - 1)) = Dict(Arr(jj - 1))
  44.                       Set Dict(Arr(jj - 1)) = Tmp
  45.                  End If
  46.              Next jj
  47.          Next ii
  48.     End With
  49.     Set DictionarySortOfRange = Dict
  50. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-14 16:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
进一步理解Dictionary,深入体会Items和keys的用法。

Dictionary 对象 | Microsoft Learn  https://learn.microsoft.com/zh-c ... p/dictionary-object

方法
方法        说明
Add        将新的键/项对添加到 Dictionary 对象。
Exists        返回一个布尔值,该值指示 字典 对象中是否存在指定的键。
Items        返回 Dictionary 对象中所有项的数组。
Keys        返回 Dictionary 对象中所有键的数组。
Remove        从 Dictionary 对象中删除一个指定的键/项对。
RemoveAll        删除 Dictionary 对象中的所有键/项对。
属性
属性        说明
CompareMode        设置或返回比较模式,以比较 Dictionary 对象中的键。
Count        返回 Dictionary 对象中的键/项对数。
项目        设置或返回 Dictionary 对象中项的值。
注册表项        为 Dictionary 对象中的现有键值设置新的键值。
**************************
项目很好理解应该是dictionary.items
注册表项应该是dictionar.keys
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 08:47 , Processed in 0.030038 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表