首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

案例分享:关于二级菜单的问题解决方法

本文重点:

-- 定义名称的快捷方式(不是快捷键)

-- 二级菜单中的BUG问题:选好了二级菜单,返回再选择一级菜单,二级菜单不会发生变化,连个提醒都没有!

先来看第一个问题:

之前在给大家介绍二级菜单的时候,是为了讲解清楚如何去构建数据源,如何去使用快捷键来进行定义名称,这里忽略了一个更快捷的方式,就是名称框。如果你需要定义的名称太多,一列一列的去操作进行定义,势必效率非常感人。

先来看看名称框在哪里?

箭头所指的位置就是名称框了,没定义名称的时候显示的是鼠标当前定位的单元格位置:

当然,如果你已经定义了名称,就是这样:

而且名称旁边的下拉箭头,你可以点一下看看,是不是可以找到其他定义的名称。如何迅速的给上图中的两列数据定义名称呢?

首先全选:

当然四川下面有两个空白的单元格,是不能入选的,所以用F5调出定位条件,选择常量,确定之后就可以了。

选择完成之后,在公式菜单栏中找到:

首行就是我们要定义的名称,直接点击确定。就这么简单,当然,这个肯定不包含首行在内了,刚才选中首行只是为了用个名字而已,通过定义名称的对话框我们就可以看到:

再来看第二个问题:之前有讲过用条件格式来解决这个问题,这里再分享一个用VB来解决的方法,不会不要紧,知道怎么搬来用,会改就行。先看效果:

只要一级菜单变了,或者说只要你动了一级菜单,哪怕你第二次还是选的同样的一级菜单,二级菜单中的内容就会被清空。

用ALT+F11打开VB编辑器,双击左侧的SHEET1,直接在空白区域输入:

代码:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "E1" Then

Target.Offset(1, 0) = ""

End If

End Sub

解释一个地方(你借鉴之后需要自己手动改动的地方):

E1代表的是一级菜单所在的单元格,那么Target.Offset(1,0)表示的就是以E1单元格为起点,往下移动一行,这第一个参数中1是代表往下移动一行,0代表原地不动,负数就代表往上移动多少行,第二个参数0代表的是列数,正数代表往右,0代表不动,负数代表往左。

明白了这个你就可以拿去后根据你单元格的位置进行变化了。

VB不要怕,这么多的资源,看懂一点,会改一下,拿来就是你自己的了,这个不香么?

好了,如果本文对你有帮助,请分享给有需要的朋友或你的朋友圈,让大家一起交流学习,共同进步。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200716A0NG3000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券