通过两个文本框搜索多列列表框,删除与两个文本框都不匹配的项目

时间:2019-10-30 15:14:33

标签: vba date search listbox

我是StackOverflow的新手,也是VBA的新手。我需要有关正在使用的用户表单的帮助。该用户窗体具有用于搜索数据列表的textbox1,并填充到工作良好的listbox3中。在listbox4中,一旦MouseUp在listbox1的任何结果上,它将测试结果从另一个工作表填充到listbox4,这也很好。

我的问题是我现在试图向第6列中输入的开始日期“ textbox2”和结束日期“ textbox3”中添加一个函数,以将它们插入到介于textbox2和textbox3中的日期之间的RemoveItems中。 Listbox4有9列。我现在拥有的代码可以正常工作,但不能正常工作。 Listbox4的第6列将显示日期为10/14/2019,并且如果我搜索也在日期列表中的textbox2“ 10/4/2019”&textbox3“ 10/11/2019”,它将删除所有项目除了10/14/2019和9/9/9999并显示所有应显示的10/4/2019和10/11/2019。

如果我搜索textbox2“ 10/11/2019”和textbox3“ 10/14/2019”,它将删除9/9/9999以外的所有项目,并显示所有10/11/2019&10/14/2019一样应该。第一次搜索时,我不应该将10/14/2019和9/9/9999留在列表中。当我搜索textbox2“ 11/8/2018”和textbox3“ 10/4/2019”等不同的年份时,它似乎也不喜欢。我尝试格式化日期,尝试查看整数日期值。我尝试了其他我根本无法使用的代码,例如比较操作数/条件1 /条件2。我尝试了许多其他选项,但是下面的代码是我最接近使其起作用的代码。

运行代码删除项目之前的日期

enter image description here

运行代码后的日期

enter image description here

查看第6列并删除与textbox2和textbox3不匹配的项目的代码。


Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Dim i As Long
With Me.ListBox4
    For i = Me.ListBox4.ListCount - 1 To 0 Step -1
        If Not .Column(6, i) >= CDate(Me.TextBox2.value) And (.Column(6, i) <= CDate(Me.TextBox3.value) Then
            Me.ListBox4.RemoveItem (i)
        End If
            Next i
        End With

   Me.TextBox2.SetFocus
End Sub

0 个答案:

没有答案