下面的代码是列表框的过滤器。每次当我以用户格式在文本框中输入内容时,都会搜索所有包含文本框内的字母和经过编译的结果将被写入我的列表框中的字母
可悲的是,它仅适用于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