Jump to content

ListBox con más de 10 columnas en Excel VBA.


Recommended Posts

Ando Atrapado En Mi Proyecto De Control De Almacén en un pequeño error de que no puedo mostrar mas de diez columnas en mi listbox y no se como solucionar ese error lo deje comentado en el listBox programación dejo el archivo para ver si alguien me puede apoyar y pues si el archivo les sirve os dejo como obsequio :) 

INVENTARIO.xlsm

Edited by Danilo1026
Link to comment
Share on other sites

Cuando se inicia el formulario la propiedad Columncount la igualamos a la cantidad de columnas que queremos que nos aparezcan el el listbox.

Por defecto el método AddItem no admite más de 10 columnas pero aplicándole un pequeño truquillo admite todas las que queramos.

 

With Me.ListBox1

    .ColumnCount = 13

    .List = Range(Cells(1, 1), Cells(1, .ColumnCount)).Value

    .RemoveItem 0

End With

 

 

Partiendo de este código lo que hacemos es setear el listbox con las columnas que queramos, aunque no tengan ningún valor, por lo que mediante la línea:

    .ColumnCount = 13   asignamos la cantidad de columnas 

y mediante la línea

    .List = Range(Cells(1, 1), Cells(1, .ColumnCount)).Value   seteamos el listbox con la cantidad de columnas establecidas en la línea anterior.

Y por último con:

    .RemoveItem 0     borramos la primera fila del listbox con la que hemos seteado el mismo ya que una  vez seteado  no nos sirve para  en el listbox.

Si necesitas más columnas simplemente cambia el valor de

    .ColumnCount = 13  

 

Link to comment
Share on other sites

Búsqueda combinada con filtro avanzado y RowSource

He añadido más conceptos de búsqueda.

La hoja FILTRO, puedes ocultarla, pero no eliminarla.

Hace 1 hora, Danilo1026 dijo:

Pero el rowsource no me aplicaria para guardar datos ya lo había intentado :)

Ya aplica.

INVENTARIO Prueba(1).xlsm

Edited by Antoni
Link to comment
Share on other sites

Hace 1 hora, Antoni dijo:

Búsqueda combinada con filtro avanzado y RowSource

He añadido más conceptos de búsqueda.

La hoja FILTRO, puedes ocultarla, pero no eliminarla.

Ya aplica.

INVENTARIO Prueba(1).xlsm 174.01 kB · 1 descarga

Esta perfecto el aporte Antoni pero hay alguna manera de que el listbox el  campo id se ordene de forma accedente ??

 

Link to comment
Share on other sites

Posted (edited)

Perfecto Antoni Pero Encontré un error y no entiendo por que?

se que se trata de un rango de un campo inexistente pero revisando me doy de cuenta que si existe te enseño :) 

 

 

image.thumb.png.1375dbc32608f5b6cd56efa9cc040c59.pngimage.thumb.png.85988d5678b3e177defc140444113cdb.png

 

me podrías explicar ??

Hace 4 horas, Antoni dijo:

He añadido un botón de alternar para activar/desactivar la ordenación por ID.

También he añadido la posibilidad de buscar un ID en concreto. 

INVENTARIO Prueba(1).xlsm 182.51 kB · 0 descargas

 

Edited by Danilo1026
Link to comment
Share on other sites

Compara la primera línea de este código con el que había:

      If OptionButton1 Then Filtro.Columns("O:Z").Sort Key1:=Filtro.Columns("O"), Header:=xlYes '<------------------------
      If OptionButton2 Then Filtro.Columns("O:Z").Sort Key1:=Filtro.Columns("P"), Key2:=Filtro.Columns("O"), Header:=xlYes
      If OptionButton3 Then Filtro.Columns("O:Z").Sort Key1:=Filtro.Columns("Q"), Key2:=Filtro.Columns("O"), Header:=xlYes
      If OptionButton5 Then Filtro.Columns("O:Z").Sort Key1:=Filtro.Columns("S"), Key2:=Filtro.Columns("O"), Header:=xlYes
      If OptionButton6 Then Filtro.Columns("O:Z").Sort Key1:=Filtro.Columns("T"), Key2:=Filtro.Columns("O"), Header:=xlYes

 

Edited by Antoni
Link to comment
Share on other sites

  • Crear macros Excel

  • Posts

    • Buenos días a todos; -Necesito de vuestra ayuda. Para mejor comprensión adjunto enlace de un video y comentario. Saludos y gracias de antemano     Adjunto también la macro. MEvento.zip
    • No debe importarnos que el usuario que abrió el tema no vuelva a consultarlo porque nuestras respuestas le llegaron demasiado tarde... Lo importante es poder ayudar a otros usuarios que tengan un problema similar en el futuro...
    • Es una opción original e ingeniosa pero creo que difícil de comprender para un usuario que sepa fórmulas sencillas... Adjunto otra opción con fórmulas desbordadas que puede que sea más fácil de comprender para un usuario que esté aprendiendo a formular, pues hay 3 pasos separados: Columna D : A cada valor se le añade 1> a la izquierda, se sustituye el primer + por 2> y el segundo + por 3>. De paso se quitan los signos , y . para convertir los valores en números. Todo ello con la función SUSTITUIR. ="1>"&SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR($C2;",";"");".";"");"+";"2>";1);"+";"3>";1)   Columna E (desbordada hacia la derecha en las columnas F y G): Extrae los valores y letras de 1>, 2> y 3>. Todo ello con una versión matricial de la función EXTRAE, con la ayuda de la función ENCONTRAR. =SI.ERROR(SUSTITUIR(EXTRAE($D2;ENCONTRAR({"1>"\"2>"\"3>"};$D2);SI.ERROR(ENCONTRAR({"2>"\"3>"\"0>"};$D2);100)-ENCONTRAR({"1>"\"2>"\"3>"};$D2));{"1>"\"2>"\"3>"};"");"")   Sumas de C, T y V: Suma las cantidades consumidas de cada letra con la función SUMAPRODUCTO. Salu2, Pedro Wave Sumar Letras PW1.xlsx
    • Hola,  Estoy intentando vía InputBox rellenar con el dato introducido una columna. Pero no consigo que lo haga desde la primera fila libre de A. Sería pegar el dato a partir de la primera celda libre de la columna A (está en verde), en función del Nº de filas de la columna B No consigo modificarla y se pega desde el comienzo.  Podéis echarle un vistazo? La macro está en el ejemplo. ¡Muchísimas gracias!      ej_InputBox.xlsm
    • La mía. Sub Mostrar() Application.ScreenUpdating = False Range("B:CM").EntireColumn.Hidden = False End Sub '-- Sub Ocultar() Dim Filtro As Range Application.ScreenUpdating = False Mostrar For y = 2 To Columns("CM").Column If WorksheetFunction.CountIf(Cells(8, y).Resize _ (Range("A" & Rows.Count).End(xlUp).Row, 1), "<>" & Empty) = 0 Then Columns(y).Hidden = True End If Next End Sub  
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy