我尝试使用组合框中的值和名称列表作为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
正如大家们所看到的,我将我的组合框中的值复制到一个单元格,然后使用此值作为标准,但它不起作用,因为它显示了所有的我的数据库中的名称,而不是我搜索过的名称。您可以看到以下示例:
表格:
答案 0 :(得分:1)
您的CriteriaRange
需要同时包含列标题和值。根据您的代码,我添加了标题" Nome"在X4
。您的条件范围是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
答案 1 :(得分:0)
您已经给出了过滤而不是列的值。你需要有一个单元格,它在X4中保存值为Nome,并且你的标准范围为X4:X5