Hay forma, lo que debes hacer es según el orden que desees, y a través de un For recorrer TODOS los Items del FileListBox e indicarle si es una por extensión lo mandé al primer lugar y así sucesivamente, sino has entendido, dime que extensiones quieres, y el orden, que te preparo algo para que lo puedas realizar...
Por ejemplo... quiero ordenar extensiones bat, exe, cfg y zip. En orden inverso al de alfabéticamente. Gracias.
Te comento que dentro del mismo FileListBox, no se pueden ordenar, ¿el motivo? La propiedad para listarlos es de sólo lectura, y no es posible hacerlo, dado esto te hice un ejemplo llevándolo a un listbox, ya ordenados, hay te va lo que necesitas: Nota: todos los procedimientos en el mismo formulario
Primero que nada Option Explicit Option Compare Text Dim ListExe(2500) As String Dim ListBat(2500) As String Dim ListZip(2500) As String Dim ListCfg(2500) As String Lo de 2500 es por poner algo, queda a tu criterio Necesitaras, un DriveListBox(drvUnidad), un DirListBox(dirCarpetas), FileListBox(fleArchivos), ListBox (listOrdenados), CommandButton(cmdOrdenar)
Public Sub VaciaLista(unaLista() As String) Dim x As Integer Dim Fin As Integer Fin = 2500 For x = 0 To Fin If unaLista(x) = "" Then Exit Sub unaLista(x) = "" Next x End Sub Private Sub dirCarpetas_Change() fleArchivos.Path = dirCarpetas.Path End Sub Private Sub drvUnidad_Change() dirCarpetas.Path = drvUnidad.Drive End Sub Private Sub cmdOrdenar_Click() Dim Formato As String * 4 Dim x As Integer, i As Integer, s As Integer Dim ArchivosTotales As Integer If fleArchivos.ListCount = 0 Then Exit Sub ArchivosTotales = fleArchivos.ListCount - 1 VaciaLista ListExe VaciaLista ListBat VaciaLista ListZip VaciaLista ListCfg For i = 0 To ArchivosTotales Formato = Trim(Right(fleArchivos.List(i), 4)) If Formato = ".zip" Then For x = 0 To 2500 If ListZip(x) = "" Then ListZip(x) = fleArchivos.List(i) Exit For End If Next x End If If Formato = ".exe" Then For x = 0 To 2500 If ListExe(x) = "" Then ListExe(x) = fleArchivos.List(i) Exit For End If Next x End If If Formato = ".cfg" Then For x = 0 To 2500 If ListCfg(x) = "" Then ListCfg(x) = fleArchivos.List(i) Exit For End If Next x End If If Formato = ".bat" Then For x = 0 To 2500 If ListBat(x) = "" Then ListBat(x) = fleArchivos.List(i) Exit For End If Next x End If Next i listOrdenados.Clear For s = 0 To 2500 If ListZip(s) = "" Then Exit For listOrdenados.AddItem ListZip(s) Next s s = 0 For s = 0 To 2500 If ListExe(s) = "" Then Exit For listOrdenados.AddItem ListExe(s) Next s s = 0 For s = 0 To 2500 If ListCfg(s) = "" Then Exit For listOrdenados.AddItem ListCfg(s) Next s s = 0 For s = 0 To 2500 If ListBat(s) = "" Then Exit For listOrdenados.AddItem ListBat(s) Next s End Sub Lamento el error de haberte dicho que si, y luego te diga que no, ya sabía que NO se podía, sólo que me entrevere y dije algo erróneo, espero sepas disculparme, sino, está bien, cualquier duda con esto la planteas,