2016-03-21 2 views
0

У меня есть данные Excel, как в образце показано ниже и 3 ListBoxesУсловно добавление элементов управления Excel ListBox

Пример моей таблицы:

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

Мой вопрос: В моей ListBox2 я хотел бы только показать, что в столбцах а только тогда, когда 14 дней прошло дни в столбце B.

у меня есть этот код, но не могу заставить его работать

 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 

ответ

0

В связи с вопросом о условном заполнении ListBox2: ваш фрагмент кода не реализует эту часть. Вы можете добавить Items из столбца «A» в соответствии с значением DateTime в столбце «B», как показано в следующем фрагменте кода VBA, используя функцию DateDiff, чтобы проверить указанное вами условие (прошло 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 

Надежда это может помочь.

+0

Благодарим вас за вопрос Alex - Quick, где именно я должен разместить этот код? Заранее спасибо –

+0

Вы можете добавить его к тому же Sub, показанному в фрагменте кода, или просто вызвать этот Sub из этого фрагмента кода, например. Вызовите AddItemsToListbox2(). Пожалуйста, отметьте ответ, если вы удовлетворены решением. С уважением, –

+0

К сожалению, это не сработало. Мои даты a сохранены в J, поэтому я изменил значение B на J, но ничего не отображается в списке. Какие-либо предложения? Заранее спасибо –

Смежные вопросы