我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!
平常我们在搜索引擎中输入内容时,下面就会弹出由输入内容引出的相关词条,如:
那在Excel里可以实现这种效果吗?
答案当然是“能”。
先来看下我做出来的效果:
上面的案例中用了两个控件,文本框和列表框。
具体思路:
1、创建一个文本框和一个列表框,列表框能根据文本框输入的内容自动把相关数据列出来。
代码如下:
Private Sub 输入_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim rng As Range, rngs As Range
Set rngs = Range("g2", [g2].End(xlDown))
提示框.Visible = 1
提示框.Clear
For Each rng In rngs
If InStr(rng, 输入.Value) Then 提示框.AddItem rng.Value
Next
End Sub
主要利用了文本框的KeyUp事件,rngs是所有数据存储的位置。
2、当点击A列任意单元格时,文本框能与单元格重合,列表框在单元格下面出现。
代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
输入.Visible = 1
提示框.Visible = 0
输入.Top = ActiveCell.Top
输入.Left = ActiveCell.Left
输入.Width = ActiveCell.Width
输入.Height = ActiveCell.Height
提示框.Top = ActiveCell(2, 1).Top
提示框.Left = ActiveCell(2, 1).Left
输入.Activate
输入.Value = ""
提示框.Clear
Target = 输入.Value
Else
输入.Visible = 0
提示框.Visible = 0
End If
End Sub
主要利用工作表的SelectionChange事件,当然这里要注意一些细节的处理:
1)、当点击A列任意单元格时,如果不输入内容,列表框是不弹出来的,只有键入内容才会弹出列表框。
2)、每次点到新的单元格时文本框中不会出现上次输入的内容。
3、列表框弹出来后,在其中选中想要输入的内容,双击,内容就会添加到单元格中,同时文本框和列表框隐藏。
代码如下:
Private Sub 提示框_Click()
ActiveCell = 提示框.Value
提示框.Visible = 0
输入.Visible = 0
End Sub
主要利用了列表框的Click事件。
当然,上面这种效果要找到适合的场景,如在某些查询时可以使用,但是,如果单纯录入数据,录入后点击A列数据点就会出现文本框,不好进行复制粘贴等操作,除非再通过代码把文本框去掉。
那有没有不需要文本框,只在单元格中输入就会出现如上的列表框提示呢?
当然有,比如:
我这里只用了工作表的SelectionChange事件和列表框的Click事件,代码就不展示了,如果把上个案例搞懂了,这个应该自己能做出来。
本节的分享就到这里,鹏哥祝大家每天都有进步。
聚米为谷
博学宏才
更多学习内容
手机端请扫描
电脑端请登录
www.mihong.top
![22400f8c94f87b30ce3362d26d4c648f.gif](https://img-blog.csdnimg.cn/img_convert/22400f8c94f87b30ce3362d26d4c648f.gif)