微信公众号(“大爱E人”)回复“清除”,免费下载附件。
❈
级联菜单,很多人可能陌生,但是关注我公众号的人肯定了解。级联菜单就是仿造电商网站,填物流地址时候,选中省,选市的时候只会呈现该省的所有市。但是,我们遇到了新需求,肿么办? ——eric
❈
背景
接到一位网友问题。
该网友可能是医院工作,看了我之前在优酷视频,学习了怎么做智联菜单。
(不会智联菜单的,请看我的公众号“免费-历史文章”,我就不鄙视了)。
他希望:“重选了前一下拉菜单时候,后一单元格已选内容自动清除”。
我之前在优酷中的视频没有讲怎么处理这种问题,当然,在视频里也不可能讲很多。
这个问题其实是一个需求,而且是一个有一定共性的合理需求。
譬如学校排课的时候,选中英语课,但是老师可能有很多,到底是彭老师、还是施老师、李老师,不能出错;同样文员排上班或者值班表、财务分析利润中心或者成本中心,也错不得。
如果错了,都是一错误终身的风陵渡口。
这么合理且实用的需求,解决方案很简单,详见如下。
方案
下拉列表、智联菜单不会的童鞋,请点击公众号中的“免费-历史文章”。
1. 做一个入住信息登记表
2.D列做下拉列表菜单
在D列做一个下拉列表,“数据”-“数据验证”/“数据有效性”。
命名title,数据源选择B7:B9。
做下拉列表,很简单。
下拉列表是excel的基础操作,不会的童鞋请翻我的历史记录或者加技术QQ群(281606780)提问。
3.E列做级联菜单
学会做传统下拉菜单,在下拉菜单的基础上,E列新建一个下拉菜单。
如把E2单元格把来源改为“=INDIRECT($D2)”。
这样就形成E列单元格下拉菜单数据来源为D列相应单元格选中的结果。
如上,做好一个具备级联菜单功能的表格。
再加上自动删除后续单元格功能即可。
4.D列重选E列自动清空
VBA输入如下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
'Target.Offset(0, 1).Validation.Delete
Target.Offset(0, 1).ClearContents
End If
End Sub
其中D列为第4列,所以代码中的column=4,如果是第5列重选,后一单元格自动清空,=5即可。
VBA不好或者不想学的童鞋,会改就行。
记住:
“=4”中的4修改为,你想改变单元格内容后触发后续单元格自动清空的单元格所在列。
效果如下:
后记
VBA这么伤脑的东西,不愿操心也行,会改能为我所用即可。
这么好的东西,全部上传分享到篇头的某度某盘中。
(毕竟某度没给我广告费,我就不提名字了)
不要爱我、感激我,只要转发、关注公众号就行。
“大爱E人”
网友评论