我正在对列表框进行实时过滤,并尝试向过滤器添加另一个文本框。
我有一个文本框StoreBox
。当我在C行中键入要搜索的数字时,它将从该行返回8列。我有工作。
但是我需要添加一个搜索日期。我需要能够分别或一起搜索商店编号和日期。因此,如果两者都在行中,它将返回...或者如果我只键入一个,它将返回一个标准。
所以Storebox
和DateBox
是我过滤的文本框。以下是我正在使用的代码,但我尝试过的所有方法均无效。我不能让第二个上班。
有人知道我如何更改代码以使其正常工作吗?
Private Sub StoreBox_Change()
Sheets("Data").Activate
Dim rw
Dim strText As String
strText = LCase(StoreBox.Text)
dateText = LCase(DateBox.Text)
Dim rng As Range
Set rng = Range("C9:C5000")
With ResultsBox
.RowSource = ""
.ColumnCount = 8
For Each rw In rng.Rows
If InStr(LCase(Cells(rw.Row, 3)), strText) Or InStr(LCase(Cells(rw.Row, 3)), strText) Then
.AddItem Cells(rw.Row, 1).Value
.List(ResultsBox.ListCount - 1, 0) = Cells(rw.Row, 2).Value
.List(ResultsBox.ListCount - 1, 1) = Cells(rw.Row, 3).Value
.List(ResultsBox.ListCount - 1, 2) = Cells(rw.Row, 4).Value
.List(ResultsBox.ListCount - 1, 3) = Cells(rw.Row, 5).Value
.List(ResultsBox.ListCount - 1, 4) = Cells(rw.Row, 6).Value
.List(ResultsBox.ListCount - 1, 5) = Cells(rw.Row, 7).Value
.List(ResultsBox.ListCount - 1, 7) = Cells(rw.Row, 9).Value
End If
答案 0 :(得分:0)
由于DateBox.Text
应该过滤第5列,因此这应该可以解决问题:
If InStr(LCase(Cells(rw.Row, 3)), strText) Or InStr(LCase(Cells(rw.Row, 5)), dateText) Then
相对于Instr
,我更愿意使用LCase()
的compare参数
If InStr(1, Cells(rw.Row, 3).Value, strText, vbTextCompare) Or InStr(1, Cells(rw.Row, 5).Value, dateText, vbTextCompare) Then