Excel怎样创建一、二、三级联动下拉菜单

修法布施得聪明智慧 , 多分享让生活更美好 。 上次分享了《Excel筛选后怎样快速用颜色分隔数字区间标示》 , 介绍了Excel筛选后快速用颜色分隔数字区间标示处理方法 , 使用筛选菜单 , 有无办法处理数据象筛选一样三级菜单联动呢?通过下面实例分享处理方法 。 1Excel筛选后如何快速用颜色分隔数字区间标示

Excel怎样创建一、二、三级联动下拉菜单

文章插图

需要这些哦
Microsoft Office Excel 2007
Excel VBA
处置方式/
1起首打开Microsoft Office Excel 2007 , 新建文档并保留文件名《Excel如何建立一、二、三级联动下拉菜单 .xlsm》(演示文件 , 下面代码复制到能运行宏的工作簿都可以)如图 。
Excel怎样创建一、二、三级联动下拉菜单

文章插图

2在“Sheet2”表建立数据如下 。
Excel怎样创建一、二、三级联动下拉菜单

文章插图

3鼠标移到当前工作表标签栏“Sheet1”表(需要在哪表计较在哪表) , 右键 , 弹出快捷菜单 , 如下图 。
Excel怎样创建一、二、三级联动下拉菜单

文章插图

4在快捷菜单找到【查看代码】并单击 , 打开VBE(宏)编纂界面 , 如下图 。
Excel怎样创建一、二、三级联动下拉菜单

文章插图

5在右边代码框中复制下面代码到该框中 , 如下图:
Private Sub Worksheet_Change(ByVal Target As Range)
    '2020-10-8 22:38:36
    If Target.Column = 1 Then
        Target(1).Offset(0, 1).Resize(1, 2).ClearContents
    If
    If Target.Column = 2 Then
        Target(1).Offset(0, 1).ClearContents
    If
Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '2020-10-8 22:45:12
    Dim i As Integer, mb(), m As String, d As Object, c As Long
    If Target.Column > 3 Then Exit Sub
    On Error Resume Next
    Set d = CreateObject("Scripting.Dictionary")
    With d
        mb = Worksheets("Sheet2").Range("A2").Resize(Worksheets("Sheet2").UsedRange.Rows.Count - 1, 3).Value
        c = Target.Column
        If c = 1 Then
            For i = 1 To UBound(mb, 1)
                .Add CStr(mb(i, 1)), ""
            Next
            m = Join(.keys, ",")
            With Target(1).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=m
            With
        ElseIf c = 2 Then
            For i = 1 To UBound(mb, 1)
                If Target(1).Offset(0, -1) = mb(i, 1) Then
                    .Add CStr(mb(i, 2)), ""
                If
            Next
            m = Join(.keys, ",")
            With Target(1).Validation
                .Delete

推荐阅读