小伙伴们大家好,昨天分享了一个用自定义函数制作的可以根据输入内容自动更新的下拉菜单。
今天分享另外一种更加便捷的下拉列表,输入关键字后自动弹出列表,无需再点击下拉箭头。具体效果参见动图:
从效果演示可以发现:
① 输入关键字后,下拉菜单中的项目会自动更新,列出只包含关键字的项目;
② 不输入内容时,按Backspace键,列表显示所有项目供选择;
③ 鼠标选中单元格后自动进入录入状态,列表始终显示在活动单元格的右侧。
那么这个效果是如何实现的呢?跟我一起操练起来吧!
步骤一:调用开发工具选项卡 很多小伙伴的工具栏中没有 [开发工具] 选项卡,所以操作之前我们先来学习如何调用 [开发工具] 选项卡。 步骤非常简单:文件 → 选项 → 自定义功能区 → 勾选[开发工具],具体操作参见动图演示: 经过如上设置,[开发工具] 选项卡就会出现在功能区中。 步骤二:添加文本框控件 有了 [开发工具] 选项卡,我们就可以在里面找到相应的控件,首先要插入的是文本框控件,具体操作参见动图演示:文本框控件默认的名称为:TextBox.1,这个名称会出现在后面的代码中,非常重要。
步骤三:添加列表框控件 列表框控件添加的方法同文本框控件,如下图所示: 列表框控件默认的名称为: ListBox.1 步骤四:添加工作表 SelectionChange 事件 工作表事件是指在工作表中进行的某项操作所触发的一系列动作。 SelectionChange事件是指在工作表中选择某个单元格时触发的一系列动作,这些动作需要我们用代码来规定。 例如: 当单击某个单元格时,设置文本框控件的宽度,高度,位置,字体大小,字号,以及列表框控件的相应属性等,代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) With TextBox1 If Target.Count = 1 Then If Target.Column = 3 Then .Visible = True .Height = Target.Height .Width = Target.Width .Top = Target.Top .Left = Target.Left .Activate .Value = "" .FontSize = 10 .FontName = "微软雅黑" ListBox1.Visible = False ListBox1.Top = Target.Top ListBox1.Left = Target.Left + Target.Width ListBox1.Width = Target.Width ListBox1.Clear Else .Visible = False ListBox1.Visible = False End If End If End WithEnd Sub
代码的添加方法:
代码应该写在文本框控件所在的工作表中,我们的文本框控件被绘制在 [效果演示] 工作表中,具体操作参见动图演示:
步骤五:添加列表框控件的 Click 事件
列表框控件的Click事件是指单击列表框时触发的一系列动作。
这里代码的作用是单击列表框时将选择的内容写入单元格中,并且隐藏列表框控件和文本框控件,代码如下:
Private Sub ListBox1_Click() ActiveCell = ListBox1.Value ListBox1.Visible = False TextBox1.Visible = FalseEnd Sub
代码添加在列表框控件所在的工作表,即 [效果演示] 工作表中,方法同上,不再赘述。
步骤六:添加文本框控件的 KeyUp 事件
文本框控件的KeyUp事件是指在文本框控件中键入内容时触发的一系列动作。
例如:
根据在文本框控件中输入的内容在商品清单表中查找符合要求的项目添加到列表框控件中,代码如下:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim cell As Range, rng As Range With ListBox1 Set cell = Sheets("商品清单").[a2:a40] .Visible = True .Clear For Each rng In cell If InStr(rng, TextBox1.Value) Then .AddItem rng.Value .Font.Size = 10 .Font.Name = "微软雅黑" .Height = .Font.Size * .ListCount + 30 Next End WithEnd Sub
商品清单表如下图所示:包含所有需要在列表中显示的项目
代码中的清单范围设定为[a2:a40],如果范围有变可以尝试自行修改。
代码的细节部分由于篇幅有限,不能做具体讲解,感兴趣的小伙伴可以加入网易云课堂《揭秘Excel真相》课程的VBA篇章进行深入学习和交流。
步骤七:取消设计模式
所有代码都粘贴到VBE编辑器后,最关键的一个步骤是取消设计模式。具体操作参见动图演示:
取消设计模式后,原本凌乱摆放的文本框控件和列表框控件就会在代码的作用下就位,接着我们就可以测试一下菜单是否可以正常使用啦!
步骤八:保存为启动宏的工作簿
由于工作簿中包含代码,为了确保下次打开工作簿时还能继续使用,请将工作簿另存为启动宏的工作簿,如下图所示: 如果不保存成这种格式会怎样?下次打开后代码就丢失了,还要重新导入,不怕麻烦的小伙伴可以尝试一下。 今天的分享就到这里,你都学会了?光看不练假把式,不断的练习才能促进知识的内化, 我们下期再见! 更多Excel技能,欢迎您加入布衣公子网易云课堂《揭秘Excel真相》课程。PPT课程地址:http://t.cn/Rm4oVdo
Excel课程地址:http://t.cn/Rm4oCLR
关联阅读:
能根据输入内容自动更新的下拉菜单你用过吗?|Excel126
新、老、离职员工名单只要刷新一下就能轻松获取|Excel125
如此不规则的数据是该好好整治整治了!|Excel124
批注操作,游刃有余,批量导出 So Easy!|Excel123
打开这篇文章之前,无法想象条件格式能带给我们什么惊喜|Excel122
送一个提取不重复值的函数给您|Excel121
逆天啦!Excel居然能按颜色统计|Excel120
别不信,学会这几个函数能帮你省下一天的时间!|Excel119
结构大反转简直逆天,PQ超乎你的想象|Excel118
对筛选结果按条件计数,这招很冷但管用!|Excel117
仪表板可视化速成大法,3分钟就能搞定!|Excel116
还在用Excel做数据分析报告吗?PowerBI已经被众星捧月|Excel115
……
更多技能分享请您后台回复「目录」查看
福利关键词:70、PNG、地图、姜饼人、图标、样机、手、试看、试听、封面、封底、排版、图表、目录页、过渡页、标题栏,后台回复有惊喜哦!
布衣公子《揭秘Excel真相》课程原价299
前5000人惠顾仅需199元
单击了解>>《揭秘EXCEL真相》课程详情
▼