traspasar filas de varias columnas entre 2 listbox

07/05/2007 - 04:21 por Ivan | Informe spam
hola de nuevo,

siguiendo con los ListBox, tengo dos listboxes multiselect con 6 columnas
entre los que traspaso registros. Hasta ahora lo estoy haciendo, cn este
codigo (+o-):

Private Sub CommandButton6_Click()
Dim nSel As Long, nCol As Byte
With ListBox1
If .ListCount = 0 Then Exit Sub
For nSel = 0 To .ListCount - 1
If .Selected(nSel) Then
ListBox2.AddItem .List(nSel)
For nCol = 1 To .ColumnCount - 1
With ListBox2
.List(.ListCount - 1, nCol) = ListBox1.List(nSel, nCol)
End With
Next
.Selected(nSel) = False
End If
Next
End With
End Sub

parece funcionar bien, pero me temo que cuando se trate de 'muchos'
registros no sea especialmente rapido.

¿hay alguna forma de traspasar el registro completo sin tener que usar el 2º
bucle? algo parecid a .List = range("cf:cf").value para los rangos, pero que
tome el contenido de todos los campos del listbox1 como si fuera una matriz
para asignarselo al list del 2º?

bueno, mas que nada es una cuestion de aprendizaje, pues supongo que la
forma actual me valdria, combinada con la utilizacion de hojas/filtros en
los casos de demasiados registros, pero a lo mejor hay una forma sencilla de
hacerlo

un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Héctor Miguel
07/05/2007 - 05:52 | Informe spam
hola, Ivan !

[creo que] este caso es 'tan parecido'... que bien podria llegar a colacion la siguiente conversacion:
-> http://tinyurl.com/ywwgkn

segun parece, el 'truco' [basicamente] sigue siendo el uso de hojas/rangos ocultos y autofiltros/filtros avanzados ;)

comentas [si hubiera] algun detalle mas 'particularizado' bajo algun nuevo 'entorno' de uso ?
saludos,
hector.

__ la consulta original __
siguiendo con los ListBox, tengo dos listboxes multiselect con 6 columnas entre los que traspaso registros.
Hasta ahora lo estoy haciendo, cn este codigo (+o-):



[... sigue codigo parecido al del enlace de consulta anterior ...] :D

parece funcionar bien, pero me temo que cuando se trate de 'muchos' registros no sea especialmente rapido.
hay alguna forma de traspasar el registro completo sin tener que usar el 2º bucle?
algo parecid a .List = range("cf:cf").value para los rangos, pero que tome el contenido de todos los campos del listbox1
como si fuera una matriz para asignarselo al list del 2º?
bueno, mas que nada es una cuestion de aprendizaje, pues supongo que la forma actual me valdria
combinada con la utilizacion de hojas/filtros en los casos de demasiados registros, pero a lo mejor hay una forma sencilla de hacerlo

Preguntas similares