Buenas. Tengo una aplicación (no creada por mi) en la cual, uno de los ListBox ha de mostrarse por orden alfabético.. Sé que la opción más fácil es la de modificar la propiedad Sorted para el Listbox. El tema es que haga lo que haga, no funciona.
Os pego un par de pantallazos para que veias el tema :
(https://s24.postimg.org/hb46lunh1/listbox1.jpg)
(https://s30.postimg.org/40q7p4mr5/listbox2.jpg)
Como veis, he probado a cambiarlo en cuadro de propiedades y tambien en el código pero nada. Decir que tengo (más bien tenía, pero siempre a nivel bastante básico) algo de conocimientos de Vb pero hace muchísimo que no lo toco y ahora acabo de entrar en una nueva empresa y las estoy pasando algo canutas. Asi que, por favor si pudierais echarme una mano os lo agradecería inmensamente. Por si fuera de ayuda, tambien os pego el código del formulario principal.
Private Sub BuscaTXT_Change()
Dim tomoño As String, conto As Integer
List1.Clear
tomoño = Len(BuscaTXT.Text)
'If tomoño <> "" Then
For Bucle = 0 To (PlantillasLST.ListCount - 1)
If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
List1.List(conto) = PlantillasLST.List(Bucle)
conto = conto + 1
End If
Next Bucle
'Else
'For Bucle = 0 To (PlantillasLST.ListCount - 1)
' List1.List(Bucle) = PlantillasLST.List(Bucle)
'Next Bucle
'End If
End Sub
Private Sub CodigoLST_Click()
Call AxustarLSTs(CodigoLST.ListIndex)
Call PasarValor(CodigoLST.ListIndex)
End Sub
Private Sub ControlTMP_Timer()
Estado = True
If SOFsTXT.Text = "" Then Estado = False
If SEtiquetaTXT.Text = "" Then Estado = False
If Estado = True Then FuncionCMD(1).Enabled = True Else FuncionCMD(1).Enabled = False
End Sub
Private Sub DescripcionLST_Click()
Call AxustarLSTs(DescripcionLST.ListIndex)
Call PasarValor(DescripcionLST.ListIndex)
End Sub
Private Sub FicheirosLST_Click()
Call AxustarLSTs(FicheirosLST.ListIndex)
Call PasarValor(FicheirosLST.ListIndex)
End Sub
Private Sub Form_Load()
Intro = Chr(13) & Chr(10)
Call CargarFicheiro("Config", App.Path & "\config.cfg")
Call CargarOFs
Call LeerOFs
Call LeerPlantillas
Seguro = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub FuncionCMD_Click(Index As Integer)
Select Case Index
Case 0:
Call CargarOFs
Call LeerOFs
Case 1:
Call EnviarOF(SSeriesTXT.Text & SOFsTXT.Text, SSeriesTXT.Text & Intro & SOFsTXT.Text & Intro & SDescripcionTXT.Text & Intro & SLoteTXT.Text & Intro & SPesoTXT.Text & Intro & ScodigoTXT.Text & Intro & SSacoTXT.Text & Intro & SLineaTXT.Text & Intro & SEtiquetaTXT.Text & Intro & SCantidadeTXT.Text & Intro & SenvaseTXT.Text & Intro & SGranelTXT.Text & Intro)
Case 2:
If FicheirosLST.ListIndex <> -1 Then
Call BorrarFicheiro(FicheirosLST.List(FicheirosLST.ListIndex))
End If
Case 3: Call LeerPlantillas
Case 4: SEtiquetaTXT.Text = "-": SSacoTXT.Text = "N"
'Case 5:
'Call EnviarOF(Right("0" & Second(Time), 2) & Right("000000" & Minute(Time), 6), Right("0" & Second(Time), 2) & Intro & Right("000000" & Minute(Time), 6) & Intro & "PEIXE FRESCO" & Intro & "L4632" & Intro & "40KG" & Intro & "45687" & Intro & "S" & Intro & "1" & Intro & SEtiquetaTXT.Text & Intro)
End Select
End Sub
Private Sub LineaLST_Click()
Call AxustarLSTs(LineaLST.ListIndex)
Call PasarValor(LineaLST.ListIndex)
End Sub
Private Sub List1_Click()
SEtiquetaTXT.Text = List1.Text
List1.Sorted = True
End Sub
Private Sub LoteLST_Click()
Call AxustarLSTs(LoteLST.ListIndex)
Call PasarValor(LoteLST.ListIndex)
End Sub
Private Sub MNUConfigurar_Click()
ConfigFRM.Visible = True
End Sub
Private Sub MNUPechar_Click()
End
End Sub
Private Sub OFsLST_Click()
Call AxustarLSTs(OFsLST.ListIndex)
Call PasarValor(OFsLST.ListIndex)
End Sub
Private Sub PesoLST_Click()
Call AxustarLSTs(PesoLST.ListIndex)
Call PasarValor(PesoLST.ListIndex)
End Sub
Private Sub PlantillasLST_Click()
SEtiquetaTXT.Text = PlantillasLST.Text
SSacoTXT.Text = "S"
End Sub
Private Sub SacoLST_Click()
Call AxustarLSTs(SacoLST.ListIndex)
Call PasarValor(SacoLST.ListIndex)
End Sub
Private Sub SeriesLST_Click()
Call AxustarLSTs(SeriesLST.ListIndex)
Call PasarValor(SeriesLST.ListIndex)
End Sub
Muchas gracias y perdonad si la pregunta es muy tonta pero estoy bastante ofuscado. Graciñas de nuevo.
No puedes establecer SORTED del Listbox en tiempo de ejecución.
CitarPrivate Sub List1_Click()
SEtiquetaTXT.Text = List1.Text
List1.Sorted = True
End Sub
Se debe establecer desde las propiedades del objeto.
Abría que ver que tipo de ordenación quieres.
En este caso si lo quisieras de menor a mayor
sorted no te sirve, ya que el listbox te lo ordena de la siguiente manera:
1
12
2
25
4
45
y debería ser así:
1
2
4
12
25
45
Para los números basta con poner ceros a la izquierda:
Private Sub Form_Load()
Dim patata(5) As String
patata(0) = "05"
patata(1) = "25"
patata(2) = "03"
patata(3) = "35"
patata(4) = "04"
patata(5) = "40"
For Each n In patata
List1.AddItem n
Next
End Sub
Pero no uses LISTList1.List(Index) = (patata(Index))
usa
AddItemFíjate:
Dim patata(5) As String
patata(0) = "05"
patata(1) = "25"
patata(2) = "03"
patata(3) = "35"
patata(4) = "04"
patata(5) = "40"
For Index = 0 To UBound(patata) - 1
List1.List(Index) = (patata(Index))
Next
Si lo haces así los elementos no quedarán ordenados, ni siquiera poniendo un cero a la izquierda.
Así que tienes dos razones por la cual no se te ordena. Una es que como ordena alfabéticamente si usas números debes poner ceros a la izquierda, según la longitud del número. Si manejas tres cifras deberías poner los números del modo --> 001, 002 , ... , 025, 099, ..., 120
La otra razón es que usas,
"List1.List(índice)=....", en lugar de
List1.AddItem.
CitarFor Bucle = 0 To (PlantillasLST.ListCount - 1)
If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
List1.List(conto) = PlantillasLST.List(Bucle)
List1.AddItem (PlantillasLST.List(Bucle))
conto = conto + 1
End If
Next Bucle
Para otro tipo de ordenación especial tendrás que hacer algún tipo de algoritmo de ordenación y luego en ese orden meterlo en el listBox con sorted en False
Buenos dias, muchas gracias por contestar. Agradezco mucho las aclaraciones, en realidad solo quiero que el listbox me muestre el contenido ALFABÉTICAMENTE... en ese caso tendría con poner el sorted en sitio adecuado, ¿valdría?.. En cualquier caso me apunto lo de los numeros pues seguramente me sea últil en el futuro... ;-)
A ver pongo el List1.Sorted = True al principio del código, despues de definir variables y cuando doy a compilar me sale "error de compilacion no se puede asignar a propiedad de solo lectura".. pero si lo cambio a Listbox.Sorted = True no me da dicho error y si que me deja compilar, pero no sé si me funciona o no.. ¿A que se debe esto? ¿Es por que hay que definir el objeto como propiedad general o como?. Gracias de nuevo.
Cita de: Arthaios en 9 Enero 2017, 09:48 AM
A ver pongo el List1.Sorted = True al principio del código, despues de definir variables y cuando doy a compilar me sale "error de compilacion no se puede asignar a propiedad de solo lectura".. pero si lo cambio a Listbox.Sorted = True no me da dicho error y si que me deja compilar, pero no sé si me funciona o no.. ¿A que se debe esto? ¿Es por que hay que definir el objeto como propiedad general o como?. Gracias de nuevo.
A veces me enrollo mucho en mis respuestas y no quedan claras. La razón ya te la he comentado es por usar
List1.List() en lugar de
AddItem para llenar el ListBox.
Si usas la propiedad LIST, cada elemento queda asignado en un determinado lugar del ListBox y éste ignora el sorted. Si usas AddItem, aplicará el sorted.
Además te he puesto ejemplo para que veas como en un caso si ordena y en otro no.
Te vuelvo a poner donde debes corregir.
Citar
For Bucle = 0 To (PlantillasLST.ListCount - 1)
If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
List1.List(conto) = PlantillasLST.List(Bucle)
List1.AddItem (PlantillasLST.List(Bucle))
conto = conto + 1
End If
Next Bucle
En este caso el Sorted se puede aplicar a control ListBox de nombre
List1
. El otro ListBox que se llama
PlantillasLST no veo en el código donde lo cargas pero si también lo quieres poder ordenar usa
AddItem cuando lo llenes, ya que no dices cual de los dos quieres ordenar.
Te pongo de nuevo varios ejemplos para que veas como en un caso se ordena y en otro no aunque tenga la propiedad Sorted activada
- Crea dos ListBox
...- Con List1.Sorted= False
...- Con List2.Sorted = True
EJEMPLO1En este ejemplo al usar la propiedad LIST,
el List2 NO queda ordenado aunque Sorted esté en True.
'//Debes cambiar las propiedades de...
'//List1 con Sorted = False
'//List2 con Sorted = True
List1.AddItem ("Patata")
List1.AddItem ("Zanahoria")
List1.AddItem ("Guisante")
List1.AddItem ("Limón")
For Index = 0 To List1.ListCount - 1
List2.List(Index) = (List1.List(Index))
Next
EJEMPLO2En este ejemplo,
el List2 SÍ queda ordenado porque usas la propiedad AddItem para llenarlo'//Debes cambiar las propiedades de...
'//List1 con Sorted = False
'//List2 con Sorted = True
List1.AddItem ("patata")
List1.AddItem ("Zanahoria")
List1.AddItem ("Guisante")
List1.AddItem ("Limón")
For Index = 0 To List1.ListCount - 1
List2.AddItem (List1.List(Index))
Next
Um.. Gracias de nuevo. Voy a probar a ver. En principio solo quiero que el List1 me muestre los resultados alfabéticamente y YA. He puesto tambien el Sorted de PlantillasLST en True tambien. Con poner lo de AddItem, ¿dices que ya valdría? ¿no haría falta definir el True en el código? ¿solo con ponerlo en la opciones como True ya vale?. Muchas gracias, me estais ayudando mucho. ;)
Cita de: Arthaios en 9 Enero 2017, 11:21 AM
¿dices que ya valdría? ¿no haría falta definir el True en el código? ¿solo con ponerlo en la opciones como True ya vale?. Muchas gracias, me estais ayudando mucho. ;)
Hombre, en el código ya te dice que
es una propiedad de solo lectura cuando lo ejecutas y no te deja. Hay que establecerlo en las propiedades del objeto.
La razón por la cual no se ordena el listbox usando la propiedad list no tengo ni idea de por qué. Parece como si al hacerlo así fijaras el lugar del elemento en el la lista y no se aplica la ordenación. Así que para que funcione la ordenación hay que usar
AddItem.
Si te digo la verdad yo tampoco lo sabía, ha sido a base de probar que he comprobado que al usar la propiedad ListBox.List no ordena y usando AddItem si lo hace, como comprobarás aplicando los ejemplos, no hay más.
Ya para rematar la faena pondré otro ejemplo más simple
Así NO ordena con la propiedad Sorted en TRUE
List1.List(0) = "Patata"
List1.List(1) = "Zanahoria"
List1.List(2) = "Guisante"
List1.List(3) = "Limón"
Resultado
Patata
Zanahoria
Guistante
Limón
Así SÍ ordena con la propiedad Sorted en TRUE
List1.AddItem "Patata"
List1.AddItem "Zanahoria"
List1.AddItem "Guisante"
List1.AddItem "Limón"
Resultado
Guistante
Limón
Patata
Zanahoria
Vale, a ver uso, AddItem. Lo que he hecho es:
If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
'List1.List(conto) = PlantillasLST.List(Bucle)
'conto = conto + 1
List1.AddItem (PlantillasLST.List(Bucle))
End If
Y poner Sorted = True en el List1 y para el PlantillasLST.List
Pero sigue sin ir!! no sé que pasa!! alguna idea?¿
Los valores que quiero que ordene el Listbox son nombres de peces alfabéticamente..
Para que os hagais una idea, os pongo una captura: el listbox va enlazado a otros campos..¿puede ser esta la razón de que no lo ordene?.. no se muy bien que hacer..
(https://s27.postimg.org/kwpbqlxwz/cap5.jpg)
Gracias por vuestras ayudas y comentarios.
No me los ordena para nada, arriba tienes el código del formulario que trabaja con el listbox. Hay otro formulario pero no tiene relevancia para este listbox (no aparece de ninguna manera en ese formulario). Lo único que se me ocurre es que tenga que hacerse algo en el módulo de funciones que si aparece el listbox, pero no tengo muy claro lo que hace. Os pego el código y subrayo (esta casi al final) la parte del código que pueda ser relevante. La pregunta es: esta claro que por lo que sea el sorted no funciona, ¿no hay manera de intentar ordenar el listbox de alguna otra manera?. Graciñas.
Public Contador As Integer, Comproba As String, Bucle As Long, Intro As String
Public Letra As String, UltimoValor As String, Ficheiro2
Public TextoFixoAplicador As String, NLiñas As String
Public Function CargarOFs()
Dim Tamaño As Integer, ManexoSistema, ManexoFicheiros, Un
Call ReiniciarLSTs
Tamaño = Len(ConfigFRM.ConfigTXT(0).Text): Contador = 0
On Error Resume Next
Set ManexoSistema = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set ManexoFicheiros = ManexoSistema.GetFolder(ConfigFRM.ConfigTXT(0).Text)
For Each Un In ManexoFicheiros.Files
Un = Right(Un, Len(Un) - Tamaño)
If Right(Un, 3) = ".ok" Or Right(Un, 3) = ".OK" Or Right(Un, 3) = ".Ok" Or Right(Un, 3) = ".oK" Then
Un = Left(Un, Len(Un) - 3)
PrincipalFRM.FicheirosLST.List(Contador) = Un
Contador = Contador + 1
End If
Next
End Function
Public Function CargarFicheiro(Tipo As String, Ficheiro As String)
Contador = 0
Comproba = Dir(Ficheiro)
Select Case Comproba
Case ""
Case Else
Open Ficheiro For Input Access Read As #1
Do While Not EOF(1)
Letra = Input(1, #1)
Select Case Letra
Case Chr(13): Contador = Contador + 1
Case Chr(10)
Case Else:
Select Case Tipo
Case "Config": ConfigFRM.ConfigTXT(Contador).Text = ConfigFRM.ConfigTXT(Contador).Text & Letra
End Select
End Select
Loop
Close #1
End Select
End Function
Public Function GardarConfig()
Dim Configurar As String
For Bucle = 0 To (ConfigFRM.ConfigTXT.Count - 1)
Configurar = Configurar & ConfigFRM.ConfigTXT(Bucle).Text & Intro
Next Bucle
Open App.Path & "\config.cfg" For Output Access Write As #1
Print #1, Configurar
Close #1
End Function
Public Function LeerOFs()
For Bucle = 0 To (PrincipalFRM.FicheirosLST.ListCount - 1)
Contador = 0
Open ConfigFRM.ConfigTXT(0).Text & PrincipalFRM.FicheirosLST.List(Bucle) & ".ok" For Input Access Read As #1
Do While Not EOF(1)
Letra = Input(1, #1)
Select Case Letra
Case Chr(13)
Case Chr(10)
Case "|": Contador = Contador + 1
Case Else
Select Case Contador
Case 0: PrincipalFRM.CodigoLST.List(Bucle) = PrincipalFRM.CodigoLST.List(Bucle) & Letra
Case 1: PrincipalFRM.DescripcionLST.List(Bucle) = PrincipalFRM.DescripcionLST.List(Bucle) & Letra
Case 2: PrincipalFRM.LoteLST.List(Bucle) = PrincipalFRM.LoteLST.List(Bucle) & Letra
Case 3: PrincipalFRM.PesoLST.List(Bucle) = PrincipalFRM.PesoLST.List(Bucle) & Letra
Case 4: PrincipalFRM.LineaLST.List(Bucle) = PrincipalFRM.LineaLST.List(Bucle) & Letra
Case 5: PrincipalFRM.SacoLST.List(Bucle) = PrincipalFRM.SacoLST.List(Bucle) & Letra
Case 6: PrincipalFRM.SeriesLST.List(Bucle) = PrincipalFRM.SeriesLST.List(Bucle) & Letra
Case 7: PrincipalFRM.OFsLST.List(Bucle) = PrincipalFRM.OFsLST.List(Bucle) & Letra
Case 8:
On Error Resume Next
PrincipalFRM.CantLST.List(Bucle) = PrincipalFRM.CantLST.List(Bucle) & Letra
Case 9:
On Error Resume Next
PrincipalFRM.EnvaseLST.List(Bucle) = PrincipalFRM.EnvaseLST.List(Bucle) & Letra
Case 10:
On Error Resume Next
PrincipalFRM.GranelLST.List(Bucle) = PrincipalFRM.GranelLST.List(Bucle) & Letra
End Select
End Select
Loop
Close #1
Next Bucle
End Function
Public Function ReiniciarLSTs()
PrincipalFRM.LineaLST.Clear
PrincipalFRM.LoteLST.Clear
PrincipalFRM.CodigoLST.Clear
PrincipalFRM.OFsLST.Clear
PrincipalFRM.DescripcionLST.Clear
PrincipalFRM.FicheirosLST.Clear
PrincipalFRM.PesoLST.Clear
PrincipalFRM.SacoLST.Clear
PrincipalFRM.SeriesLST.Clear
On Error Resume Next
PrincipalFRM.GranelLST.Clear
On Error Resume Next
PrincipalFRM.EnvaseLST.Clear
On Error Resume Next
PrincipalFRM.CantLST.Clear
End Function
Public Function PasarValor(Numero As Integer)
With PrincipalFRM
.SLineaTXT.Text = .LineaLST.List(Numero)
.SLoteTXT.Text = .LoteLST.List(Numero)
.ScodigoTXT.Text = .CodigoLST.List(Numero)
.SOFsTXT.Text = .OFsLST.List(Numero)
.SDescripcionTXT.Text = .DescripcionLST.List(Numero)
.SPesoTXT.Text = .PesoLST.List(Numero)
.SSacoTXT.Text = .SacoLST.List(Numero)
.SSeriesTXT.Text = .SeriesLST.List(Numero)
On Error Resume Next
.SCantidadeTXT.Text = .CantLST.List(Numero)
On Error Resume Next
.SenvaseTXT.Text = .EnvaseLST.List(Numero)
On Error Resume Next
.SGranelTXT.Text = .GranelLST.List(Numero)
End With
End Function
Public Function AxustarLSTs(Numero As Integer)
With PrincipalFRM
.FicheirosLST.Selected(Numero) = True
.LineaLST.Selected(Numero) = True
.LoteLST.Selected(Numero) = True
.CodigoLST.Selected(Numero) = True
.OFsLST.Selected(Numero) = True
.DescripcionLST.Selected(Numero) = True
.PesoLST.Selected(Numero) = True
.SacoLST.Selected(Numero) = True
.SeriesLST.Selected(Numero) = True
On Error Resume Next
.CantLST.Selected(Numero) = True
On Error Resume Next
.EnvaseLST.Selected(Numero) = True
On Error Resume Next
.GranelLST.Selected(Numero) = True
End With
End Function
Public Function BorrarSeleccions()
Dim Boclo As Integer
With PrincipalFRM
For Boclo = 0 To (.FicheirosLST.ListCount - 1)
.FicheirosLST.Selected(Boclo) = False
.LineaLST.Selected(Boclo) = False
.LoteLST.Selected(Boclo) = False
.CodigoLST.Selected(Boclo) = False
.OFsLST.Selected(Boclo) = False
.DescripcionLST.Selected(Boclo) = False
.PesoLST.Selected(Boclo) = False
.SacoLST.Selected(Boclo) = False
.SeriesLST.Selected(Boclo) = False
On Error Resume Next
.CantLST.Selected(Boclo) = False
On Error Resume Next
.EnvaseLST.Selected(Boclo) = False
On Error Resume Next
.GranelLST.Selected(Boclo) = False
Next Boclo
End With
End Function
Public Function ReiniciarEnvio()
With PrincipalFRM
.SLineaTXT.Text = ""
.SLoteTXT.Text = ""
.ScodigoTXT.Text = ""
.SOFsTXT.Text = ""
.SDescripcionTXT.Text = ""
.SPesoTXT.Text = ""
.SSacoTXT.Text = ""
.SSeriesTXT.Text = ""
On Error Resume Next
.SCantidadeTXT.Text = ""
On Error Resume Next
.SenvaseTXT.Text = ""
On Error Resume Next
.SGranelTXT.Text = ""
End With
End Function
Public Function LeerPlantillas()
Dim Tamaño As Integer, ManexoSistema, ManexoFicheiros, Un
Tamaño = Len(ConfigFRM.ConfigTXT(2).Text): Contador = 0
Set ManexoSistema = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set ManexoFicheiros = ManexoSistema.GetFolder(ConfigFRM.ConfigTXT(2).Text)
If Err.Number <> 0 Then
MsgBox ("Erro grave de configuración leendo as plantillas")
Err.Clear
Exit Function
End If
[b][u]For Each Un In ManexoFicheiros.Files
Un = Right(Un, Len(Un) - Tamaño)
If Right(Un, 4) = ".lbe" Or Right(Un, 4) = ".LBE" Or Right(Un, 4) = ".Lbe" Or Right(Un, 4) = ".lbE" Then
Un = Left(Un, Len(Un) - 4)
PrincipalFRM.PlantillasLST.List(Contador) = Un
PrincipalFRM.List1.List(Contador) = Un
Contador = Contador + 1
End If[/u][/b]
Next
End Function
Public Function BorrarFicheiro(NomeFicheiro As String)
Ficheiro2 = ConfigFRM.ConfigTXT(0).Text & NomeFicheiro & ".ok"
Comproba = Dir(Ficheiro2)
Select Case Comproba
Case ""
MsgBox ("Non se puido borrar o ficheiro da orde de fabricación")
Case Else
Kill Ficheiro2
End Select
Call CargarOFs
Call LeerOFs
Call ReiniciarEnvio
End Function
Public Function EnviarOF(NomeOF As String, Contido As String)
Ficheiro = ConfigFRM.ConfigTXT(1).Text & NomeOF & ".ord"
Open Ficheiro For Output Access Write As #1
Print #1, Contido
Close #1
Call BorrarFicheiro(NomeOF)
Call ReiniciarLSTs
Call CargarOFs
Call LeerOFs
End Function
Vale creo que he dado en un punto clave, el list1 depende directamente del campo/función SEtiquetaTxt y PlantillasLST (que tambien es un listbox que esta bajo el cuadrito de Listbox1) . Tal y como lo entiendo el texto de List1 viene de el PlantillaLST y este a su vez, de SEtiquetaTxt.. ¿puede tener algo que ver o estoy dando palos de ciego?
Cita de: Arthaios en 10 Enero 2017, 12:20 PM
Vale creo que he dado en un punto clave, el list1 depende directamente del campo/función SEtiquetaTxt y PlantillasLST (que tambien es un listbox que esta bajo el cuadrito de Listbox1) . Tal y como lo entiendo el texto de List1 viene de el PlantillaLST y este a su vez, de SEtiquetaTxt.. ¿puede tener algo que ver o estoy dando palos de ciego?
Para aclarar, cual es el listbox que quieres ordenar porque veo muchos y además sigues usando la propiedad list, incluso en
PlantillasLST .
Es simple, como pongo en el ejemplo si usas list no ordena si usas Additem si.
Nota:
Deberías usar e código GeShi de el Hacker.net para que el código se vea más claro, Selecciona Visual Basic y entre |Code=vb| y |/code| pones el código.
Si el tener que usar AddItem te obliga a reconfigurar todo el código, se me ocurre que hagas una cosa.
Sea cual sea el ListBox que quieras ordenar puedes meter la lista que quieras ordenar en un Array. Luego lismpias el listBox, mediante List1.Clear y luego lo llenas usando List1.AddItem()
Parece que ya está solucionado. Muchas gracias a todos, de verdad. Un saludo.