Buenos Dias,
Tengo un codigo que filtra data de 12 columnas desde una hoja a un listbox, loq ue deseo saber es que si hay alguna forma de pasar la misma cantidad a otro listbox de otro user form. tengo entendido que maximo sse puede es 10 columnas, indague y me dijeron que se puede con un array. ¿me podrian ayudar con este problema?
Adjunto mi archivo.
Saludos,
Jesus
Adjunto | Tamaño |
---|---|
![]() | 92.36 KB |
Un array en Excel también es un rango de celdas, así que puedes copiar los datos a unas celdas y luego utilizarlas como origen del listbox.
Mira estos otros temas del foro con problemas parecidos:
Listbox con más de 10 columnas http://www.necesitomas.com/listbox-mas-10-columnas
Listbox con 14 columnas http://www.necesitomas.com/listbox-14-columnas
------
Ya sé Excel, pero necesito más.
Estimado Paco Megia,
Ya habia revisado esos links antes de hace rmi pregunta, sin embargo eso es para filtrar de una hoja 12 hata 14 columnas si lo tengo, mi tema es que quiero hacer una facturacion el cual luego filtrar la data de 14 o 12 columnas a un listbox, este se copie o desagregue en el mejor de los casos, los mismos items seleccionados en el previo listbox a otro listbox en otro user form, es posible hacerlo de la misma forma como si fuese una hoja?
Saludos,
Jesus
Copia los datos seleccionados a un rango auxiliar en una hoja y luego utiliza ese rango como origen de la lista.
Para esto tienes que valerte de la propiedad Selected del listbox
por ejemplo algo así
Private Sub CommandButton1_Click()
'www.necesitomas.com
Dim i, j, contador
Const Hoja_auxiliar = "Auxiliar"
Const rangoauxiliar = "A1"
contador = 0
' borramos el rango auxiliar
Worksheets(Hoja_auxiliar).Range(rangoauxiliar).CurrentRegion.Delete
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
For j = 1 To .ColumnCount
'escribimos en el rango auxiliar siguiendo la misma estructura de filas y columnas
Worksheets(Hoja_auxiliar).Range(rangoauxiliar).Offset(contador, j - 1) = .List(i, j - 1)
Next
contador = contador + 1
End If
Next
'redefinimos el origen de la lista de destino
Me.ListBox2.RowSource = Worksheets(Hoja_auxiliar).Range(rangoauxiliar).CurrentRegion.Address
End With
End Sub
Adjunto archivo de ejemplo
------
Ya sé Excel, pero necesito más.
Que tal Paco,
Si lo estoy revisando, te aviso cualquier otra duda, pero veo que ya esta solucionado. igual te aviso y o si no doy por solucionado el problema.
Gracias
Que tal Paco,
Ya he probado adherir ese codigo a mi sistema, sin embargo no puedo hacer que copie al otro listbox del otro userfrom, me sale error en esta sentencia:
Private Sub btnCopiar_Click()
Dim i, j, contador, miarray()
Const Hoja_auxiliar = "Auxiliar"
Const rangoauxiliar = "A1"
contador = 0
' borramos el rango auxiliar
Worksheets(Hoja_auxiliar).Range(rangoauxiliar).CurrentRegion.Delete
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
For j = 1 To .ColumnCount
'escribimos en el rango auxiliar siguiendo la misma estructura de filas y columnas
Worksheets(Hoja_auxiliar).Range(rangoauxiliar).Offset(contador, j - 1) = .List(i, j - 1) <----- aca me pinta de amarillo
Next
contador = contador + 1
End If
Next
'redefinimos el origen de la lista de destino
Me.ListBox1.RowSource = Worksheets(Hoja_auxiliar).Range(rangoauxiliar).CurrentRegion.Address
End With
End Sub
Saludos,
Gracias
¿Qué error?
Copia el mensaje de error o adjunta una captura de pantalla.
------
Ya sé Excel, pero necesito más.
Que tal Paco Megia,
Seguro piensas que tu codigo esta mal, no me refiero a eso tu codigo funciona perfectamente, si lo adhiero a otro listbox que esta en el mismo Formulario, sin embargo deseaba adherirlo a un listboxde otro userform, que al llamar al formulario principal este al filtrar la data que esta en una hoja de excel copiar un lisxbox y al selecionarlas las copie a otro listbox de otro Formulario.
Espero me haya hecho entender, ese error que te marco es porque no copia al otro listbox del otro userform.
Saludos,
Jesus
Mira a ver si te deja manipular el listbox indicando a qué formulario pertenece, me refiero que cuando estás trabajando con dos formularios distintos, desde el código de uno de ellos debes indicar la "ruta" completa hasta el segundo formulario para que etienda a qué te refieres
Userform1.ListBox1
ElOtroFormulario.ElOtroListBox
Cuando estás dentro del código de un formulario y te refieres a los controles de ese mismo formulario no hace falta poner el nombre del formulario, porque por defecto interpreta que se refiere a sí mismo. También puedes referirte al propio formulario con ME (así es como está en el ejemplo)
Me.ListBox1
Comprueba si con el nombre del formulario funciona.
------
Ya sé Excel, pero necesito más.
Hol intente lo que me comentaste pero no me sale, me puedes ayudar, mi número es +51 951358178 y mi correo es jeanpierrealmeyda@gmail.com
¿De verdad crees que te van a llamar a Perú sin ningún beneficio a cambio?
Por cierto, suerte con el spam en tu correo.
Un saludo
P.D. Seguro que si escribes por aquí lo que has hecho exactamente y por qué no te funciona exactamente, alguien te ayudaría.