如下图所示,
当我们在百度搜索框中搜索关键字时,百度搜索框会自动列出含有关键字的搜索历史供下拉选择。
类似地,在excel中,也经常遇到类似的需求。希望在excel单元格中输入关键字后列出所有含有该关键字的相关列表供快速选择。
要实现上述功能,需要解决以下几个问题:所有的列表项需要集合在数组或者单元格区域中;
在要实现的单元格区域中触发Worksheet_SelectionChange事件;
在Worksheet_SelectionChange事件下可以弹出文本框控件用于输入关键字,每输入一个关键字,可以自动筛选列表项数组在列表框控件中列出筛选的结果数组;
在列表框控件中选择了要输入的列表项后,文本框控件和列表框控件能够隐藏。
其中文本框控件和列表框控件也可以用组合框控件代替。
接下来介绍代码的实现过程。
为了实现上述功能,可以先手动在要实现的工作表中插入一个文本框(默认的名称为TextBox1)和列表框(默认的名称为ListBox1)ActiveX控件,然后在该工作表代码窗口中输入如下的代码:
'定义一个公共的数组变量,用于存放所有列表框项目Public arrPrivate Sub Worksheet_SelectionChange(ByVal Target As Range) Dim oSP As Shape '所有列表项数组 arr = Array('张飞', '关羽', '刘备', '赵云', '诸葛亮', '水星', '张苞', '关平', '孙权', '孙坚', '孙策') '只选中