Excel VBA窗体组合框ComboBox多级下拉联动终极解决方案 无限级别逐级加载 类模块通用组件

2021年10月13日12:53:23Excel VBA窗体组合框ComboBox多级下拉联动终极解决方案 无限级别逐级加载 类模块通用组件已关闭评论 71 views
微信公众号 【EXCEL880】 QQ群【165159540】
课程咨询 加我微信EXCEL880B试学网址http://v.excel880.com

一直以来,对于学习ExcelVBA的同学,窗体下拉列表多级联动都是个难题,我在教程里也讲了2级和3级联动的一般实现方法,但是对于初学者或者中级水平以下的同学来说还是难度偏大,难以自己灵活应用,特别是当一个窗体有多组多级列表的时候,简直就是噩梦,当然当出现5级联动,6级联动乃至更多级别的时候,基本就是地狱级别的难度,鉴于此,我特别开发了本模块,VBA窗体多级下拉通用组件,实现了多级下拉无限级别通用,单个窗体中多组不同列表可分别使用,调用 简单,即使是刚入么的新手也能学会使用,本组件主要功能如下

视频说明: https://www.bilibili.com/video/BV1FL411G7kP/

  • 轻松实现2级下拉联动,3级下拉联动,4级下拉联动,5级下拉联动,6级下拉联动,实际是无限级别
  • 高度组件化实现,用户无需关心细节,导入类模块后,只需几行代码调用即可实现下拉联动
  • 单个窗体和多个窗体里单组级联菜单,以及多组级联菜单可任意多组同时使用,互不干扰
  • 高级逐级加载算法,4万行4级省市区县数据1秒加载完成,下拉选择切换无卡顿丝般顺滑

使用方法

  1. 打开你需要使用多级列表的案例,准备好窗体及数据,窗体中画好准备应用多级列表的组合框,组合框命名无要求,可自行决定
  2. 打开我的演示案例,找到2个类模块clsMLevelCombox和clsNode880,在左侧工程管理器中,鼠标选中类模块不动,拖动到你的目标工程即可
  3. 然后在目标窗体中,添加以下代码
    Dim WithEvents 级联菜单1 As clsMLevelCombox
    Sub 级联菜单初始化()
        Set 级联菜单1 = New clsMLevelCombox
        级联菜单1.Init [省市区!A2:C2841], ComboBox1, ComboBox2, ComboBox3
        ''级联菜单1.Init 级联列表数据源, 1级组合框,2级组合框,3级组合框....
    End Sub
    
    Private Sub UserForm_Initialize()
        级联菜单初始化
    End Sub
    
    Private Sub 级联菜单1_Changed(NodePath As Variant, Row As Variant) '点击切换数据事件
      MsgBox NodePath & ": 原数据行号是" & Row
    End Sub
    
  4. 实际工程中,根据需要在 级联菜单1.Init 参数中,改变参数即可, 更多级数列表框,只需要后面依次增加组合框控件参数即可
  5. 多组同时启用的写法 直接参考组件案例即可
    Dim WithEvents 级联菜单1 As clsMLevelCombox
    Dim WithEvents 级联菜单2 As clsMLevelCombox
    Sub 级联菜单初始化()
        Set 级联菜单1 = New clsMLevelCombox
        级联菜单1.Init [数据!B2:G143], ComboBox1, ComboBox2, ComboBox3, _
                              ComboBox4, ComboBox5, ComboBox6
         Set 级联菜单2 = New clsMLevelCombox
        级联菜单2.Init [行政区!A2:D46195], ComboBox7, ComboBox8, _
                              ComboBox9, ComboBox10
    End Sub
    
    Private Sub 级联菜单1_Changed(NodePath As Variant, Row As Variant)
        Label13.Caption = NodePath & ": 原数据行号是" & Row
    End Sub
    Private Sub 级联菜单2_Changed(NodePath As Variant, Row As Variant)
       Label13.Caption = NodePath & ": 原数据行号是" & Row
    End Sub
    '//// 以上是标准示范代码
    Private Sub UserForm_Initialize()
        级联菜单初始化
    End Sub
  6. 本组件为Excel880 VIP学员专享 已购买课程的同学请到教学群直接下载即可
  7. 课程购买链接 https://item.taobao.com/item.htm?id=597656284129
  8. 【你们百度3天 不如我随口一句】
    买教程即可加入本人永久答疑群
    398元套餐包含VBA175例+函数408例+120期直播回放
    再送VBA代码助手VIP+880网站VIP(专享本站所有资源)
    买教程即可加入本人永久答疑群
    https://item.taobao.com/item.htm?id=597656284129
    本人作品集http://excel880.com/blog/archives/category/zpj/

    VBA代码助手 降低一半学习门槛
    视频说明https://www.bilibili.com/video/BV1D64y1X7fR