vba:使用组合框值作为自动筛选器标准

问题描述 投票:0回答:2

我正在尝试使用组合框中的值和名称列表作为AutoFilter的条件,然后将结果从我的数据库(BASE_ACOMPANHAMENTOS)复制到我的结果表(BUSCA)。我的组合框名称是busca_lista,这是我到目前为止所尝试的:

Private Sub OKBUSCA_Click()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim lstrw As Long

Set ws = Sheets("BASE_ACOMPANHAMENTOS")
Set ws1 = Sheets("BUSCA")

lstrw = ws.Cells(Rows.Count, 2).End(xlUp).Row

ws1.Range("C12:H100").Clear
ws1.Range("X5").Value = busca_lista.Value

ws.Range("A1:F" & lstrw).AdvancedFilter Action:= _
        xlFilterCopy, CriteriaRange:=ws1.Range("X5"), CopyToRange:=ws1.Range("C11:H11"), Unique:=False

End Sub

你们可以看到,我正在将我的组合框中的值复制到一个单元格,然后使用此值作为标准,但它不起作用,因为它显示了我的数据库中的所有名称,而不是我的名字我找了。您可以看到以下示例:

表格:

enter image description here

我的数据库:enter image description here

结果:enter image description here

excel vba excel-vba
2个回答
1
投票

您的CriteriaRange需要包括列标题和值。根据您的代码,我在X4中添加了标题“Nome”。您的标准范围是X4:X5

Private Sub OKBUSCA_Click()

    Dim ws As Worksheet
    Dim ws1 As Worksheet
    Dim lstrw As Long

    Set ws = Sheets("BASE_ACOMPANHAMENTOS")
    Set ws1 = Sheets("BUSCA")

    lstrw = ws.Cells(Rows.Count, 2).End(xlUp).Row

    ws1.Range("C12:H100").Clear
    ws1.Range("X4").Value = "Nome"
    ws1.Range("X5").Value = busca_lista.Value

    ws.Range("A1:F" & lstrw).AdvancedFilter Action:= _
        xlFilterCopy, CriteriaRange:=ws1.Range("X4:X5"), CopyToRange:=ws1.Range("C11:H11"), Unique:=False

End Sub

0
投票

您已经给出了过滤而不是列的值。你需要有一个单元格,它在X4中也包含值Nome,并且你的标准范围为X4:X5

© www.soinside.com 2019 - 2024. All rights reserved.