2016-03-22 246 views
1

我已經從字面上努力了大約8個小時,今天試圖讓這個工作,似乎無法解決我出錯的地方。有條件地添加到列表框

我有listbox1,並希望它填充超過14天的帳號。

列A持有的賬戶號碼 J列既有日期

這裏是我使用至今這是好心提供給我的代碼,我已經一整天沒有成功

Private Sub UserForm_Initialize() 
     Dim I As Integer 
    Dim maxRow As Integer 

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

我還包含了一個鏈接到我的文檔,所以你可以看到,如果它的任何其他編碼,可能導致它無法正常工作。

預先感謝您

Click here to download my document

+1

您不能將範圍添加到這樣一個列表框。如果你想要A#的值,那麼你需要指定你想要的範圍的值。 – asp8811

+1

除了@ asp8811提到的你可能想要'昏暗'所有變量,儘可能使用'.Value2',改變'DateDiff'的日期,因爲我認爲'Now'大於'J中的任何值'列和**停止**分發Excel工作簿與密碼保護宏。如果沒有先選擇審查代碼的選擇,任何人都不允許在他們的計算機上運行外部代碼。最後,你可能想從你的VBA代碼中刪除密碼。似乎有一個管理員密碼='測試'。 – Ralph

+0

我把所有的評論都留在板上 - 不幸的是,這對我來說都是陌生的,所以我不知道我在做什麼,所以不知道我給他們發送了密碼保護的道歉,甚至沒有意識到我做了什麼。 關於你的解決方案,不幸的是我不知道如何去做你推薦的東西。 –

回答

1

也許這會爲你工作:

Private Sub UserForm_Initialize() 

Dim I As Long 
Dim maxRow As Long 

ListBox1.Clear 

With Worksheets("Sheet1") 
    maxRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    For I = 1 To maxRow 
     If IsDate(.Range("J" & I).Value) Then 
      If Now() - .Range("J" & I).Value2 > 14 Then 
       Reporting.ListBox1.AddItem .Range("A" & I).Value2 
      End If 
     End If 
    Next I 
End With 

End Sub 

enter image description here

+0

謝謝你的時間,這真的很感激 - 我跑這個代碼,沒有錯誤彈出,但沒有列出在列表框中 –

+0

它應該採取帳戶/日期的表的名稱是什麼? (「J」&I) – Ralph

+0

我剛更改了代碼以反映您的工作表名稱。此外,我調整了代碼,根據「A」列中有多少個帳戶自動檢測最後一行。 – Ralph