网站不兼容怎么办,论坛用wordpress,苏州高新区建设局网站管网,郑州网站的建设大家好#xff0c;今日我们继续讲解VBA数组与字典解决方案#xff0c;今日讲解第51讲#xff1a;对字典嵌套的理解及二级下拉菜单的制作.在讲字典的时候,我反复说明,字典看视非常简单,由于它具有直达性可以省略去我们大量的循环查找代码,所以使用起来要特别留意很多用法和常…大家好今日我们继续讲解VBA数组与字典解决方案今日讲解第51讲对字典嵌套的理解及二级下拉菜单的制作.在讲字典的时候,我反复说明,字典看视非常简单,由于它具有直达性可以省略去我们大量的循环查找代码,所以使用起来要特别留意很多用法和常规思路是不一致的,对于字典的理解1键key、键值或者较项item 是非常重要的key 一定是字符串具有唯一性item 可以为任何类型的数据.2keys 和items 是一维数组他们的开始是从0开始到count-1结束。3再次理解字典的直达性对于给定的键可以直接得出键值不必循环查找. 今日我们利用字典的嵌套完成一个两级下拉菜单的制作大家要认真理解如下面的数据 我要在一级菜单中实现A列的数值在二级下拉菜单中实现对应于A列的B列的值下面看我给出的代码Private Sub ComboBox1_Change() ComboBox2.Clear 二级下拉框对应的是第一级字典的键值为键的字典 ComboBox2.List mydic(ComboBox1.Value).keysEnd SubPrivate Sub UserForm_Activate() 第51讲 字典的嵌套的理解及二级下拉菜单的制作 将数据装入数组 myarr Range(a1).CurrentRegion.Value Set mydic CreateObject(Scripting.Dictionary) For i 2 To UBound(myarr) strF myarr(i, 1) strS myarr(i, 2) If Not mydic.Exists(strF) Then 建立嵌套字典第一重字典的键对应的键值为字典 Set mydicTemp CreateObject(Scripting.Dictionary) 注意下面的两种写法 Set mydic.Item(strF) mydicTemp Set mydic(strF) mydicTemp End If 注意下面的两种写法嵌套字典的字典的键记入键值为空 mydic.Item(strF).Item(strS) mydic(strF)(strS) Next i 一级下拉框对应的是第一级字典的键 ComboBox1.List mydic.keysEnd Sub代码截图代码讲解1 上述代码利用了字典的嵌套解决了两级下拉菜单的制作问题在利用前要先加上一个窗体2 将数据装入数组myarr Range(a1).CurrentRegion.Value 上述代码将源数据写入数组中备用3 Set mydic CreateObject(Scripting.Dictionary) 上述代码定义外层的字典.4 For i 2 To UBound(myarr) strF myarr(i, 1) strS myarr(i, 2) If Not mydic.Exists(strF) Then 建立嵌套字典第一重字典的键对应的键值为字典 Set mydicTemp CreateObject(Scripting.Dictionary) 注意下面的两种写法 Set mydic.Item(strF) mydicTemp Set mydic(strF) mydicTemp End If 注意下面的两种写法嵌套字典的字典的键记入键值为空 mydic.Item(strF).Item(strS) mydic(strF)(strS) Next i上述代码中利用FOR NEXT在数组中建立循环,当Not mydic.Exists(strF),将数据存入字典,键是strF ,键值是一个字典:mydicTemp,如果能够找到外层字典的键,那么将建立内层字典的,即: mydic(strF)(strS) ,此处大家要好好理解一下.5 一级下拉框对应的是第一级字典的键ComboBox1.List mydic.keys上述代码实现的是在ComboBox1中建立一级下拉菜单,是外层字典的键6 ComboBox2.Clear 二级下拉框对应的是第一级字典的键值为键的字典 ComboBox2.List mydic(ComboBox1.Value).keys上述代码实现的是在ComboBox2中建立二级下拉菜单,是内层字典的键下面看看代码的运行:今日内容回向:1 如何利用字典实现控件的下拉菜单?2 对于字典的嵌套是否理解呢?3 对于字典的特点是否掌握了?