具有动态过滤器文本框和多个列结果的列表框,用于通过过滤器找到的匹配

时间:2018-10-13 18:23:17

标签: excel vba

下面的代码是列表框的过滤器。每次当我以用户格式在文本框中输入内容时,都会搜索所有包含文本框内的字母和经过编译的结果将被写入我的列表框中的字母

可悲的是,它仅适用于1列。它只给我我用于搜索的列。我想成为更多专栏。该列表有9列。我该怎么写,以便每个位置都能得到8栏,这些栏会随着我在文本框中的搜索而编译?

该代码适用于1列,但没有问题,但是如果我将列数更改为2并添加第二列,则它适用于第一个字母,使用第二个字母,我总是会出现运行时错误381 ,该列表将再过滤一次,但第2列中没有结果...仅显示过滤结果

几乎没有帮助,该用户表单带有代码+一些测试列表:

https://drive.google.com/open?id=1OIVg_HgMH9FpH_8H2OXuGsJzoIO4bsAp

Private Sub ListName_Change()

Dim i As Long
Dim arrList As Variant

'ListAvaillabe = Listbox; E1G = sheet name; ListName = textbox as filter

Me.ListAvaillabe.Clear
'I tried first only to make it with 2 columns, it doesn't work
ListAvaillabe.ColumnCount = 2
If E1G.Range("C" & E1G.Rows.Count).End(xlUp).row > 1 And Trim(Me.ListName.Value) <> vbNullString Then
arrList = E1G.Range("C2:C" & E1G.Range("C" & E1G.Rows.Count).End(xlUp).row).Value2
For i = LBound(arrList) To UBound(arrList)
    If InStr(1, arrList(i, 1), Trim(Me.ListName.Value), vbTextCompare) Then
        Me.ListAvaillabe.AddItem arrList(i, 1)
         'below should be me rest of code for other columns
        'If E1G.Cells(i, 2).Value <> vbNullString Then ListAvaillabe.List(i - 1, 2) = E1G.Cells(i, 3).Value
    End If
Next i
End If
If Me.ListAvaillabe.ListCount = 1 Then Me.ListAvaillabe.Selected(0) = True

End Sub

1 个答案:

答案 0 :(得分:0)

那是和我其他问题一样的问题。现在固定 Error 381 populating listbox from a sheet table