美文网首页
excel vba级联

excel vba级联

作者: lvlvforever | 来源:发表于2017-07-21 23:58 被阅读50次

    1 选择省 然后可以选择对应的城市
    完成后的最终效果如下:


    最终效果

    首先建立如下表格


    建立初始表格
    然后选择菜单-公式-名称管理器,建立两个一级条目 建立两个一级条目

    然后选择A6单元格,选择菜单-数据-数据验证的第一个选项,允许处选择序列,来源处注意。

    数据有效性

    现在省份可以选择了


    选择省份

    在选中B6单元格,选择菜单-数据-数据验证的第一个选项,允许处选择序列,来源处注意。

    选择城市

    大功告成!

    基本的级联

    发现个问题,选择苏州后城市一栏还是河北的城市,也就是需要清空下城市,这时就得用vba了。
    在下方的sheet1处右击,选择查看代码...

    查看代码

    这时弹出VBE编辑窗口,输入下面这段代码

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$6" Then Range("$B$6").ClearContents
    End Sub
    

    当用户更改工作表中的单元格,或外部链接引起单元格的更改时产生触发上面代码。
    当用户切换的是A6单元格的内容,则会将B6的内容清空。
    效果如下

    切换时清空城市

    现在还有一种特殊需求,即当选择的是河北时,城市处需要变灰,而且不可编辑,不可选择;当省份是江苏时,可以正常选择。
    最终代码如下

    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = [b6].Address Then Cancel = True
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$6" Then Range("$B$6").ClearContents
    If [a6] = "河北" Then
        Cells(6, 2).Interior.ColorIndex = 15
        Else
        Cells(6, 2).Interior.ColorIndex = 0
    End If
    End Sub
    

    第一段代码是禁止了B6单元格的双击事件
    第二段是如果选择的是河北则B6单元格颜色置灰
    同时需要重新设置名称选择器,编辑名称管理器内的河北,改成如下所示,点击确定

    修改名称管理器

    最终效果如图:

    最终效果

    相关文章

      网友评论

          本文标题:excel vba级联

          本文链接:https://www.haomeiwen.com/subject/kprykxtx.html