2016-03-22 22 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に加えて、すべての変数を 'Dim'したい場合は可能な限り' .Value2'を使い、 'DateDiff'の日付を変更してください。' Now'は 'J '列と**停止**パスワードで保護されたマクロでExcelワークブックを配布します。コードを最初にレビューするオプションなしに、誰も自分のコンピュータで外部コードを実行することを許可することは決してありません。最後に、VBAコードからパスワードを削除することができます。管理パスワード= 'test'があるようです。 – 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

アカウント/日付を取るべきシートの名前は何ですか? – Ralph

+0

シートはSheet1と呼ばれていますが、私はこれを試しましたが、仕事はしませんでした:シート( "シート1") –

関連する問題