2012-09-06 66 views
0

此代碼填充一個ListBox與特定的文件夾如何對文件進行排序然後填充ListBox?

Dim DIRECTORY As String 
DIRECTORY = Dir(myPath & "\*.xlsx", vbNormal) 
Do Until DIRECTORY = "" 
ListBox1.AddItem DIRECTORY 
DIRECTORY = Dir() 
Loop 

的文件名,但我希望有一個排序列表。
我怎樣才能先排序文件,然後填充列表框。
btw排序列表框是(據我所知)一個很長的過程。

回答

1

A ListBox沒有內置排序功能。你將需要推出自己的。

其基本思路是將列表數據放入數組中,對數組進行排序,然後將數據放回列表中。排序VBA數組有很多很好的參考。

除非您有大量的文件,否則簡單的排序可能就足夠了。試試這個

Sub SortListBox(oLb As MSForms.ListBox) 

Dim vItems As Variant 
Dim i As Long, j As Long 
Dim vTemp As Variant 

'Put the items in a variant array 
vItems = oLb.List 

' Sort 
For i = 0 To UBound(vItems, 1) - 1 
    For j = i + 1 To UBound(vItems, 1) 
     If vItems(i, 0) > vItems(j, 0) Then 
      vTemp = vItems(i, 0) 
      vItems(i, 0) = vItems(j, 0) 
      vItems(j, 0) = vTemp 
     End If 
    Next 
Next 

'Clear the listbox 
oLb.Clear 

'Add the sorted array back to the listbox 
For i = 0 To UBound(vItems, 1) 
    oLb.AddItem vItems(i, 0) 
Next 

End Sub 
相關問題