ここでは私のコードです:VBAの動的リストボックス
Private Sub UserForm_Initialize()
Dim MyFolder As String
Dim MyFile As String
Dim j As Integer
Dim Funds(1000)
CD_Date = Cells(1, 4)
Range("A2").Select
i = 1
Do
Funds(i) = UCase(ActiveCell.Value)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Value = ""
MyFolder = "C:\windows\"
r = 0
For k = 1 To i - 1
MyFile = Dir$(MyFolder & "*" & Funds(k) & "*")
Do While MyFile <> ""
datka = FileDateTime(MyFolder & MyFile)
If Format(datka, "yymmdd") = Format(CD_Date, "yymmdd") Then
With UserForm1.ListBox1
.AddItem
.List(r, 0) = Funds(k)
.List(r, 1) = MyFile
r = r + 1
End With
End If
MyFile = Dir$
Loop
Next k
Range("A2").Select
End Sub
コード完璧に動作しますが、私は前の日または現在のためにCD_Date
を移動すると、それが動的に変更されません - 2.それは、常に入力された日付の項目を追加してのみ最初の実行のために。セルの日付を変更すると、常に最初の初期化からリストが返されます。ファイルを閉じて別の日付のたびに再度開くとリセットされます。 CD_Date
を変更した後、または誰かがフォルダにファイルを追加した後に、動的に満たされるコードを変更することは可能ですか?私は閉鎖を避けたいだけ実際のデータを取得するために何度もマクロを開く:(
申し訳ありませんが、うまくいきませんでした。 '.ListCount'の最初の部分を空にすると、最後に置くと追加された各項目が削除され、' Listbox'は常に空になります。 –
@DominikRuczajewski .ListCountに基づくループは、ListBoxに項目がある場合にのみ実行されます。私の答えに加えたことを見て、これを試してください。 – Carrosive
'Listプロパティを設定できませんでした。 2番目のループのプロパティ配列インデックスが無効です。 –