首页 > 解决方案 > 带过滤器的数据验证

问题描述

我知道如何创建一个组合框来模拟基于范围列表的数据验证单元格,具有根据您输入的内容过滤下拉列表的能力。这在功能上类似于 Excel 表中的列过滤有效,如果我开始输入“tor”,它将立即过滤预览窗口中仅包含字符串“tor”的项目。

但是,我正在尝试创建一个报告,其中每一行都需要相同的下拉菜单,理想情况下,我希望做的是让每一行都有这个单元格,您可以在其中单击下拉菜单,开始输入,然后列表将缩小。但是,我意识到组合框是一个独特的对象,它不能像复制和插入带有数据验证字段的行那样简单地复制。

有没有一种方法可以轻松复制这种下拉列表,其中列表预览根据输入到单元格中的内容(通过 vba 或纯数据验证)进行过滤?简而言之,是否可以像下面的代码一样轻松复制和粘贴具有过滤预览功能的下拉菜单,就像一行中的简单数据验证单元格一样?

这里是我的组合框代码供参考,在表 DVTest 上列出范围 A2:A791:

Sub ComboBox1_Populate(Optional fltr As String)
ComboBox1.List = 
Filter(Application.Transpose(Worksheets("DVTest").Range("A2:A791" & 
SymbolCount).Value), fltr)
End Sub

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal 
Shift As Integer)
Call ComboBox1_Populate(ComboBox1.Text)
End Sub

Private Sub UserForm_Initialize()
Call ComboBox1_Populate
End Sub

谢谢!

标签: excelvba

解决方案


推荐阅读