当前位置:首页 > 数码 >

三级下拉菜单制作过程(3级下拉菜单制作方法)

来源:原点资讯(m.360kss.com)时间:2024-04-29 00:23:36作者:YD166手机阅读>>

大家好,今日我们继续讲解VBA数组与字典解决方案,今日的内容是第56讲,利用字典的嵌套,完成三级下拉菜单的制作。

在第54讲中我讲了利用字典的嵌套,完成二级下拉菜单的制作,很多朋友来信反馈说不过瘾,可是三级下拉菜单自己却调试不出来.今日我就给大家讲解一下,其实这和二级菜单的制作是类似的,但是需要读者充分理解字典嵌套的含义,也就是说ITEM值可以是字典,要充分理解这时字典的意义,在大脑中模拟这个过程。

实例,如下数据,我要建立一个自定义的窗体,实现省、市、县三级菜单的互动相应,

三级下拉菜单制作过程,3级下拉菜单制作方法(1)

首先我们要建立一个窗体:

三级下拉菜单制作过程,3级下拉菜单制作方法(2)

下面看我给出的代码:

Private Sub ComboBox1_Change()

ComboBox2.Clear

'二级下拉框对应的是第一级字典的键值为键的字典

If ComboBox1.Value <> "" Then ComboBox2.List = mydic(ComboBox1.Value).keys

End Sub

Private Sub ComboBox2_Change()

ComboBox3.Clear

'二级下拉框对应的是第一级字典的键值为键的字典

If ComboBox2.Value <> "" Then ComboBox3.List = mydic(ComboBox1.Value)(ComboBox2.Value).keys

End Sub

Private Sub UserForm_Activate() '第56讲 利用字典的嵌套完成三级级下拉菜单的制作

'将数据装入数组

myarr = Range("a1").CurrentRegion.Value

Set mydic = CreateObject("Scripting.Dictionary")

For i = 2 To UBound(myarr)

strF = myarr(i, 1)

strS = myarr(i, 2)

strT = myarr(i, 3)

If Not mydic.exists(strF) Then

'建立嵌套字典,第一重字典的键对应的键值为字典

Set mydicTemp = CreateObject("Scripting.Dictionary")

Set mydic(strF) = mydicTemp

End If

If Not mydic(strF).exists(strS) Then

Set mydicTemp2 = CreateObject("Scripting.Dictionary")

Set mydic(strF)(strS) = mydicTemp2

End If

mydic(strF)(strS)(strT) = ""

Next i

'一级下拉框对应的是第一级字典的键

ComboBox1.List = mydic.keys

End Sub

Sub mynzsz_56() '第56讲 利用字典的嵌套,完成三级下拉菜单的制作

UserForm2.Show

End Sub

代码截图:

三级下拉菜单制作过程,3级下拉菜单制作方法(3)

代码解析:1 上述过程实现了三级菜单的响应,在"省"的菜单中实现省一级名称菜单,在"市"一级菜单中出现对应于"省"的市级菜单,在点击"县"时会出现对应于"市"名称的县级菜单。

2 '将数据装入数组

myarr = Range("a1").CurrentRegion.Value

上述代码将所有备用数据放到数组中

3. For i = 2 To UBound(myarr)

strF = myarr(i, 1)

strS = myarr(i, 2)

strT = myarr(i, 3)

上述代码先建立了一个FOR NEXT的循环 ,提取每一行的数据

4 If Not mydic.exists(strF) Then

'建立嵌套字典,第一重字典的键对应的键值为字典

Set mydicTemp = CreateObject("Scripting.Dictionary")

Set mydic(strF) = mydicTemp

End If

上述代码将第一级数据放到字典中作为键,对应的键值建立字典对象

5 If Not mydic(strF).exists(strS) Then

Set mydicTemp2 = CreateObject("Scripting.Dictionary")

Set mydic(strF)(strS) = mydicTemp2

End If

上述代码将第二级数据放到字典中作为键,对应的键值建立字典对象

6 mydic(strF)(strS)(strT) = ""

Next i

上述代码完善第二级数据键值对应的字典,放入键,键值为空即可.

7 '一级下拉框对应的是第一级字典的键

ComboBox1.List = mydic.keys

上述代码给一级菜单赋值、

8 Private Sub ComboBox1_Change()

ComboBox2.Clear

'二级下拉框对应的是第一级字典的键值为键的字典

If ComboBox1.Value <> "" Then ComboBox2.List = mydic(ComboBox1.Value).keys

End Sub

上述代码给二级菜单赋值

9 Private Sub ComboBox2_Change()

ComboBox3.Clear

'二级下拉框对应的是第一级字典的键值为键的字典

If ComboBox2.Value <> "" Then ComboBox3.List = mydic(ComboBox1.Value)(ComboBox2.Value).keys

End Sub

上述代码给三级菜单赋值

代码的运行:

三级下拉菜单制作过程,3级下拉菜单制作方法(4)

三级下拉菜单制作过程,3级下拉菜单制作方法(5)

大家可以看到,应用字典实现下拉三级菜单的过程,非常的简单。

今日内容回向:

1 如何实现三级下拉菜单的响应?思路是怎么样的?

2 要理解字典ITEM值是字典后的赋值方法。

,

栏目热文

三级下拉菜单怎么做(三级下拉菜单制作全过程)

三级下拉菜单怎么做(三级下拉菜单制作全过程)

之前跟大家分享过多级下拉的制作方法,最近有粉丝反映,制作的下拉菜单新增数据无法实现自动更新,有新增的数据还需要再制作一次...

2024-04-29 00:45:29查看全文 >>

制作一二三级下拉菜单(多条件下拉菜单制作)

制作一二三级下拉菜单(多条件下拉菜单制作)

使用excel名称管理器可以创建一个上级菜单选项值作为名称,下级菜单选项值作为名称数值的名称,利用excel的数据有效性...

2024-04-29 00:50:15查看全文 >>

制作下拉二级菜单(二级下拉菜单制作过程)

制作下拉二级菜单(二级下拉菜单制作过程)

哈喽大家好! 小E为同学们准备了Excel高效插件安装包, 获取直接关注公种号【秋叶Excel】回复【头条】即可~我们知...

2024-04-29 00:34:02查看全文 >>

一吻定情电影末尾插曲(一吻定情电影版2019插曲)

一吻定情电影末尾插曲(一吻定情电影版2019插曲)

时光网讯“由《我的少女时代》导演陈玉珊执导,王大陆、林允主演的爱情电影《一吻定情》正在热映中,累计票房1.3亿。今日,电...

2024-04-29 00:36:38查看全文 >>

一吻定情电影里所有歌(一吻定情台湾版的插曲)

一吻定情电影里所有歌(一吻定情台湾版的插曲)

人家说:伤心的人别听慢歌?但有时候分手失恋想要疗伤,就是得要好好痛过、伤过、哭过,才能真正达到抒发情绪的功效,让自己真正...

2024-04-29 00:40:43查看全文 >>

26字母用中文代替(26字母用汉字代替小写)

26字母用中文代替(26字母用汉字代替小写)

a o e i u ü b p m f……认识汉字之前,首先要认识的是汉语拼音,因为只有认识了汉语拼音,才知道这个字怎么...

2024-04-29 00:37:07查看全文 >>

英语26个字母翻译(英文26个字母翻译成中文怎么写)

英语26个字母翻译(英文26个字母翻译成中文怎么写)

英语26字母的有这些含义,你知道吗?在英语学习路上,大家一起抱团加油哦!,...

2024-04-29 00:33:23查看全文 >>

英文字母的排序表(26个英文字母排序规则)

英文字母的排序表(26个英文字母排序规则)

1)书写的规格(1)应按照字母的笔顺和字母在三格中应占的位置书写。(2)每个字母都应稍向右倾斜,约为5°,斜度要一致。 ...

2024-04-29 01:02:14查看全文 >>

洗菜池下水道堵塞怎么办(洗菜池下水道大管堵了如何处理)

洗菜池下水道堵塞怎么办(洗菜池下水道大管堵了如何处理)

我们家你们家里的洗菜盆,在长期使用一段时间,下水不清理,都可能会出现下水堵塞现象。大部分人会想到花钱找百帮是用疏通器疏通...

2024-04-29 00:55:34查看全文 >>

文档排行