如何排序文件,然后填充ListBox?

时间:2012-09-06 10:01:09

标签: excel vba listbox

此代码使用特定文件夹的文件名

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

但我想要一个排序列表 如何先对文件进行排序,然后填充ListBox btw排序列表框是(据我所知)一个很长的过程。

1 个答案:

答案 0 :(得分:1)

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