ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 类的继承、封装 演示。 Dictionary 词典 的增强!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-7-13 20:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
山中老人 发表于 2020-7-13 20:14
先了解一下原版的词典Scripting.Dictionary吧!

论坛里有大量的介绍。知识树中搜索【字典】。

原字典很熟了,只是你的新方法和屬性,沒有事例不太懂應用的方向,因一向沒這樣用就有點抽像了
只知道你的sort很好用

TA的精华主题

TA的得分主题

发表于 2020-7-14 09:06 | 显示全部楼层

Nz报错。能否告知一下 microsoft Access 12.0 object library 引用文件名么,网上居然没收到。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-14 11:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
风筝那根线 发表于 2020-7-14 09:06
Nz报错。能否告知一下 microsoft Access 12.0 object library 引用文件名么,网上居然没收到。

要安装office 的 Access,
Nz函数就是处理Null值的函数。 不重要 你可以修改去掉。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-14 11:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
风筝那根线 发表于 2020-7-14 09:06
Nz报错。能否告知一下 microsoft Access 12.0 object library 引用文件名么,网上居然没收到。

Nz函数自己写也很简单!

Public Function Nz(Value, ValueIfNull)
    If VBA.IsNull(Value) Then
        Nz = ValueIfNull
    Else
        Nz = Value
    End If
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-14 12:00 | 显示全部楼层
chis3 发表于 2020-7-13 20:37
原字典很熟了,只是你的新方法和屬性,沒有事例不太懂應用的方向,因一向沒這樣用就有點抽像了
只知道你的s ...



DicCopy : 字典拷贝一份,我有一个字典,再给你一个同样的字典!
Clone:给DevelopDictionary造个双胞胎。
如果你要计算多种可能性的结果,这有必要。
例如:现在给你一堆零件,加工到某个步骤,下一步有几种拼装、加工方式,最后比较不同方式的结果。

AddDic:词典合并。没啥可说的吧!.........
两个词典合并到一起,相同的Key 原有的项目被新的项目值覆盖

StrSplit:
StrJoin:
用过 VBA.Split、VBA.Join 函数就能理解它。
你可以把字典的数据转换成一个字符串,存放到文本文件中,也可以反过来。用来保存程序运行的状态....
使用SQL,你需要经常将数值转换成“ UPDATE”的SET子句,这会用到。
Sub cs()
    Dim SQL As String, Dic As New DevelopDictionary
    Dic.Add "[ID]", 18
    Dic.Add "[Name]", "'张三'"
    Dic.Add "[SEX]", "'男'"
   
    SQL = "UPDATE [Tab1] SET " & Dic.StrJoin() & " WHERE [ID]=18"
    Debug.Print SQL
End Sub


Public Property Get Index(Key As Variant) As Long
字典原有的 Keys(i) 方法,用数组下标找Key,反过来 Index 用Key找数组下标。用来确定Key所在的位置,在关心数据存储顺序的时候很重要。

TA的精华主题

TA的得分主题

发表于 2020-7-14 14:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
山中老人 发表于 2020-7-14 12:00
DicCopy : 字典拷贝一份,我有一个字典,再给你一个同样的字典!
Clone:给DevelopDictionary造个 ...

clone 和 diccopy是不是一樣的,都是拷貝一份字典?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-14 14:34 | 显示全部楼层
chis3 发表于 2020-7-14 14:09
clone 和 diccopy是不是一樣的,都是拷貝一份字典?

不一样!
DicCopy  只是将DevelopDictionary中的内部字典复制出来。
Clone 是将整个DevelopDictionary实例,复制一份。(当然也包括其中的内部字典)

TA的精华主题

TA的得分主题

发表于 2020-7-14 15:15 | 显示全部楼层
贴主,多给些实例代码,看实例学习下

TA的精华主题

TA的得分主题

发表于 2020-7-14 16:17 | 显示全部楼层
山中老人 发表于 2020-7-14 12:00
DicCopy : 字典拷贝一份,我有一个字典,再给你一个同样的字典!
Clone:给DevelopDictionary造个 ...

index部份
為何只出現 -1?
不是key string嗎? 找不到key的位置

TA的精华主题

TA的得分主题

发表于 2020-7-14 16:56 | 显示全部楼层
dic.Sort True, False
排序原来要这样写,函数调用为什么不能加括号呢,好奇问一下。
dic.Sort(True, False) 这样写就提示我缺少=

用法挺多,还要慢慢学习啊。写法能学到好多。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 15:22 , Processed in 0.035730 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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