暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Excel实战技巧108:动态重置关联的下拉列表

完美Excel 2021-08-06
265

学习Excel技术,关注微信公众号:

excelperfect


本文主要讲解如何使用少量的VBA代码重置Excel中相关联的下拉列表。

 

在相互关联的数据验证(即“数据有效性”)列表中常见的问题是:当更改第一个数据验证的值时,与其相关联的数据验证的值会一直保留,直到你激活其下拉列表。这可能会产生误导。

 

下面将介绍如何在第一个下拉列表中的值发生变化时自动重置与其关联列表的值,这里使用ExcelVBA执行此操作,使用了工作表对象的Change事件过程。

 

注意,默认的工作表事件过程是SelectionChange事件,每次更改活动单元格时都会触发该事件。在这种情况下,最好使用工作表对象的Change事件并确保它仅在特定单元格的值发生更改时运行,而不是每次更改任何单元格值时都触发该事件过程。

 

如下图1所示,我们创建了一个级联列表,当单元格C2中选择不同的分类时,在单元格C6中会出现不同的下拉列表项。例如,在单元格C2中选择“水果”,单元格C6中将显示相关的水果名称,可以从中选择水果名。

1

 

然而,当我们改变单元格C2中的分类选择时,单元格C6中显示的内容并不会作出相应的改变(如下图2所示),你必须将光标移到单元格C6中重新进行选择。

2

 

现在,我们想要在单元格C2中的值更改时,在单元格C6中显示“请选择”,每次单元格C2中的内容更改时,单元格C6中的内容都会被重置。

 

打开VBE,在左侧“工程资源管理器”中,双击数据验证所在的工作表名,在右侧代码窗口顶部,左侧下拉列表选择“Worksheet”,右侧下拉列表选择“Change”,如下图3所示。

3

 

输入如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$C$2" Then

       Range("C6").Value = "请选择..."

    End If

End Sub

 

至此,当更改单元格C2中的选择项时,单元格C6中的内容将更新为“请选择”,如下图4所示。

4

 

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论