作者:绿色风
分类:
时间:2022-08-18
浏览:89
楼主 fāi |
到ET来发展
- '点击 视图--> 立即窗口 和 本地窗口(CTRL + 9)
- Dim dic As New Dictionary
- Dim dic2 As New Dictionary
- Dim dic3 As New Dictionary
- Private Sub UserForm_Initialize()
- Dim i&, s
- s = Sheet1.[a1].CurrentRegion
- Application.ScreenUpdating = False
- For i = 1 To UBound(s)
- a = s(i, 1) & "": b = s(i, 2) & "": c = s(i, 3) & "": d = s(i, 4) & "" '& "" 数字也字符
- ab = s(i, 1) & s(i, 2): abc = s(i, 1) & s(i, 2) & s(i, 3)
- If dic.Exists(a) = False Then Set dic(a) = New Dictionary '相当于 if not dic.exists(a) then dic.add a ,且在对应的 item=new dictionary;即字典嵌套字典
- 'tk1 = dic.keys:tm1=dic.items 'tm1,可以看到dic.items树形结构
- dic(a)(b) = Empty 'dic(a)(b),dic(a)(new dictionary)中添加 b(即key值),new dictionary中b(key值)对应的item值=Empty
- 'tk11 = dic(a).keys '第二级的keys;dic(a).keys =查找dic(a)对应(b)[key值]的集合
- 'tm11 = dic(a).Items '第二级items;dic(a).items =dic(a)(b)的集合
- If dic2.Exists(ab) = False Then Set dic2(ab) = New Dictionary
- dic2(ab)(c) = c 'dic2(ab)(new dictionary)中添加key值 c,c对应的item值 =c
- 'Debug.Print dic2(ab)(c)
- If dic3.Exists(abc) = False Then Set dic3(abc) = New Dictionary
- dic3(abc)(d) = d
- 'dic3(abc)(d) = dic3(abc)(d) + 1 '显然,(1)dic3(abc)(new dictionary)中添加key值 d;(2)下一级(new dictionary) 中的对应item计数
- Next
- ComboBox1.List = dic.keys
- Application.ScreenUpdating = True
- '-----------------------字典嵌套小结-------------------
- '句一:Dim dic As New Dictionary
- '句二:If dic.Exists(a) = False Then Set dic(a) = New Dictionary'字典套字典
- '句三:dic(a)(b) = b
- '---为了易懂,补充如下句子解说
- '---Dim dic As New Dictionary
- '---dic(a) = Empty
- '这句dic(a) = Empty 完成了(1)向dic添加key值 a(不重复);(2)dic的item值为空
- '这句另一写法:If Not dic.Exists(a) Then dic.Add a, Empty
- '句三:dic(a)(b) = b'注释如下:
- 'dic(a)(b) = b,粗看:对应二级字典赋值
- '(b) 是二级字典的key值
- 'dic(a)(b)是二级字典的Item值
- 'dic(a)(b) = b' 是二级字典的Item=b'实际上,这样,二级字典上的keys=items
- '上式,完成了在dic(a)对应的新建字典(new dictionary)中:(1)添加Key值(b);(2)添加Item值b
- 'dic(a)(b) = dic(a)(b) + 1'二级字典添加Key值 b ;对应Item计数
- '---
- '返回dic keys|Items:
- '(1)dic.keys
- '(2)dic(a).keys
- '(3)dic(a).Items
- '------------------------by ET fāi-------------------------
- ''大家可以玩多层嵌套
- End Sub
- Private Sub ComboBox1_Click()
- ComboBox2.Clear
- ComboBox3.Clear
- ComboBox4.Clear
- ComboBox2.List = dic(ComboBox1.Text).keys
- End Sub
- Private Sub ComboBox2_Click()
- ComboBox3.Clear
- ComboBox4.Clear
- ComboBox3.List = dic2(ComboBox1.Text & ComboBox2.Text).Items
- '因: dic2(ab)(c) = c 隐含二级字典上的keys=items 故 上式可写成如下:
- 'ComboBox3.List = dic2(ComboBox1.Text & ComboBox2.Text).keys
- End Sub
- Private Sub ComboBox3_Click()
- ComboBox4.Clear
- ComboBox4.List = dic3(ComboBox1.Text & ComboBox2.Text & ComboBox3.Text).Items
- 'ComboBox4.List = dic3(ComboBox1.Text & ComboBox2.Text & ComboBox3.Text).keys
- End Sub
[字典嵌套]联动复合框应用(详解).rar |
2楼 开心萝卜 |
太复杂,看不懂,留个记号有点基础再来 |
3楼 lrlxxqxa |
注释很详细,收藏! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一