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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Ivan
07/05/2007 - 11:55 | Informe spam
hola Hector, muchas gracias de nuevo

[creo que] este caso es 'tan parecido'... que bien podria llegar a
colacion la siguiente conversacion



tienes razon, y de hecho, en otro paso posterior, que se encargaria de
traspasar los registros del 2º listbox a un listado sin duplicados, ese
seguia siendo mi planteamiento (+o-) Aunque he de reconocer que, entre que
llevaba tiempo enfrascado en otras 'chuches' y tenia este tema un poco
abandonado (mi reconciliacion con los 'FA' me ha hecho retomarlo), y que, ni
mi memoria, ni mi archivo, tienen la milesima capacidad que los tuyos, no
estaba seguro de no haber incluido ya la consulta en otro tema.

aunque en este cso en concreto se trata sobre todo de descartar que pudiera
existir alguna expresion tipo (AVISO para navegantes: esto que pongo no
tiene nada que ver con la realidad, es tan solo un ej-ficcion para ilustrar
lo que comento)

With Listbox2
.List(.ListCount-1) =
.Listbox1.List(.Listbox1.List(n,0),.Listbox1.List(n,.Listbox1.ColumnCount-1))
end with

digamos que por emular un poco a la relacion List/Range. Per por lo que
parece esto no existe

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



y ahora espero poder sacarles bastante mas partido

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



bueno, aunque se trata de otro archivo, nacido de una ayuda en el foro, el
planteamiento es basicamente el mismo con la excepcion del uso de un listbox
(de ahi la consulta) en vez de un combo como paso inicial.

lo dicho, muchas gracias de nuevo y hasta pronto
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida