【问题标题】:Combo Box that searches 2 columns in a table and filters all rows that match either column在表中搜索 2 列并过滤与任一列匹配的所有行的组合框
【发布时间】:2023-01-15 09:06:34
【问题描述】:

请耐心等待,我是使用 excel 的 VBA 的新手,尽管我有一些使用它进行访问的经验。我正在尝试创建一个组合框并使用 VBA 如果组合框选择与两列中的任何一个匹配,我希望该框过滤我的表。基本上我有一个项目表。每个项目都有一个负责人和一个次要人员分配给它。我希望能够从组合框中选择一个名称(或者如果有更好的方法)并显示该名称关联的所有项目。

我创建了一个组合框,其目标范围位于单独的选项卡上。除此之外,我不知道自动过滤功能是如何工作的。

【问题讨论】:

  • 新的并且已经在要求不可能的事情。 AutoFilter做不到。当然,还有其他的可能性。您为什么不分享您尝试过的代码,以便我们可以在此基础上进行构建?此外,添加一些相关的示例数据作为文本和屏幕截图,以便我们更好地了解数据所在的位置。另外,如果您想复制数据或只是查看数据,请分享。在后一种情况下,您基本上可以遍历行并选择 1.) 通过将唯一值写入数组,在具有唯一值(如果有的话)的列上使用 Autofilter。或 2.) 只是隐藏不需要的行。

标签: excel vba datatable combobox autofilter


【解决方案1】:

我相信我想出了如何实现这一点,尽管对如何改进它的想法持开放态度。我创建了一个隐藏列,用于连接我要过滤的 2 列。然后我创建了一个列表框和 2 个复选框来选择我想要过滤的名称以及出现在第一列、第二列或任一列中的该名称的某种组合。我将代码添加到子列表框或任一复选框中的任何更改。

有没有办法在列表框中选择多个名字,这样我就可以过滤多个人。不过,我确实看到我会如何在串联列中遇到问题。

Dim NameSelect As String

On Error Resume Next

NameSelect = NameList.Value

If PrimaryCheck = False And SecondaryCheck = False Then
    Sheets("Weekly Update").ListObjects("tblPipeline").AutoFilter.ShowAllData
    Exit Sub
ElseIf PrimaryCheck = True And SecondaryCheck = False Then
    Sheets("Weekly Update").ListObjects("tblPipeline").AutoFilter.ShowAllData
    Sheets("Weekly Update").ListObjects("tblPipeline").Range.AutoFilter Field:=11, Criteria1:="*" & NameSelect & "*"
    ActiveWindow.ScrollRow = 1
    Exit Sub
ElseIf PrimaryCheck = False And SecondaryCheck = True Then
    Sheets("Weekly Update").ListObjects("tblPipeline").AutoFilter.ShowAllData
    Sheets("Weekly Update").ListObjects("tblPipeline").Range.AutoFilter Field:=12, Criteria1:="*" & NameSelect & "*"
    ActiveWindow.ScrollRow = 1
    Exit Sub
ElseIf PrimaryCheck = True And SecondaryCheck = True Then
    Sheets("Weekly Update").ListObjects("tblPipeline").AutoFilter.ShowAllData
    Sheets("Weekly Update").ListObjects("tblPipeline").Range.AutoFilter Field:=13, Criteria1:="*" & NameSelect & "*"
    ActiveWindow.ScrollRow = 1
    Exit Sub
End If

On Error GoTo 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多