有条件地将项添加到Excel ListBox控件

时间:2016-03-21 21:30:14

标签: excel excel-vba datetime listbox datediff vba

我有Excel数据,如下面显示的示例和3个ListBoxes

我的电子表格示例:

 A          B         C
1423    21-03-16    John
2987    03-03-16    Steve

我的问题:在我的ListBox2中,我只想在B列中的日期过去14天后才显示A列中的内容。

我有这段代码,但无法正常工作

     Dim rngToSearch As Range
    Dim rngToFind As Range
    Dim valToFind As Variant
    Dim arrClearList()

    valToFind = TextBox1.Value
   With Worksheets("Data2")
        Set rngToSearch = .Columns("A")
    End With
    Set rngToFind = rngToSearch.Find(What:=valToFind, _
            LookIn:=xlFormulas, _
            LookAt:=xlWhole, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False)

    If Not rngToFind Is Nothing Then

       Call ClearList(Me.ListBox1)
   ListBox1.AddItem

        With ListBox1
            .List(.ListCount - 1, 0) = rngToFind.Value
            .List(.ListCount - 1, 1) = rngToFind.Offset(0, 1).Value
            .List(.ListCount - 1, 2) = rngToFind.Offset(0, 3).Value
            .List(.ListCount - 1, 3) = rngToFind.Offset(0, 4).Value
            .List(.ListCount - 1, 4) = rngToFind.Offset(0, 5).Value

        End With

1 个答案:

答案 0 :(得分:0)

关于有条件地填充ListBox2的问题,您有问题:您的代码段未实现该部分。您可以从列" A"添加Items。根据列中的DateTime值" B"如下面的VBA代码片段所示,使用DateDiff函数检查您指定的条件(自Column&#34中的日期值起经过14天; B")

Sub AddItemsToListbox2()
Dim I As Integer
Dim maxRow As Integer

maxRow = 100
ListBox2.Clear
For I = 1 To maxRow
    If (DateDiff("d", Now, Range("B" & I).Value) > 14) Then
        ListBox2.AddItem Range("A" & I)
    End If
Next I
End Sub

在下面显示的样本数据集上测试了解决方案(最后一项已添加到ListBox2):

A       B           C   
1423    3/21/2016   John
2987    3/3/2016    Steve
3345    4/28/2016   Anna

希望这可能会有所帮助。