从TextBox过滤ListBox的值

时间:2018-02-14 08:21:27

标签: excel-vba vba excel

我有一个问题,我认为很容易解决,但由于某些原因我没有找到它。我在网上找到很多例子,但由于某种原因没有工作(显示的值只有一列...)

我有一个带有两个页面的Multiplage的Userform,我想在第二页的Listbox2上显示值与TextBox2和Sheet中的B列匹配。

我希望在第1页导航记录时如果您选择第2页显示在Listbox2中的6个列来自工作表(C:H),但仅适用于TextBox2值与工作表中的B列匹配的那些。

如果我没有包含过滤行,则此代码有效,但是向我显示存储的所有数据,如果我在代码中包含过滤行,它会向我显示任何内容。

Private Sub MultiPage1_Change()
If Me.MultiPage1.Value = 1 Then ' If you select second page show at listBox2 the values match with TextBox2
      rng = Sheets("Page1").Cells(2, 1).CurrentRegion.Offset(1).Resize(, 8).Value
   With ListBox2
    .List = rng
    .ColumnCount = UBound(rng, 2)
    For i = .ListCount - 1 To 0 Step -1 ' If I delete code form hereListbox2 show all the values, if maintain it show me anything
     If .List(i, X) <> TextBox2.Value Then .RemoveItem (i)
    Next
  End With
End If
End Sub

我希望你有任何建议,非常感谢:)

1 个答案:

答案 0 :(得分:0)

我猜你想要部分匹配的值。你做的是根据完全匹配过滤。所以,我认为这对你有用:

If Not .List(i, X) Like "*" & TextBox2.Value & "*" Then .RemoveItem (i)

If Not TextBox2.Value Like "*" & .List(i, X) & "*" Then .RemoveItem (i)

由于您提供的细节很少,因此只能猜测。

另外,如果那不起作用,我仍然认为Like运算符可以解决您的问题,您应该考虑使用它 - &gt; Reference article:)