No mostrar datos en ceros de una hoja a un listbox

A toda la comunidad, estoy haciendo un proyecto pero me he encontrado con este inconveniente. De una hoja de excel resultado de algunas fórmulas con valor cero, al presentarlo a un listbox con la siguiente propiedad: ej.

   Me.ListBox51.ColumnCount = 1
   Me.ListBox51.RowSource = "Informes!I8:I17"
Muestrea todo lo encontrado en ese rango, quisiera presentar en el listbox unicamente los datos que sean mayor a cero.

Estaré muy agradecido a todos quienes puedan aportar alguna solución y encantado de poder apoyar en lo poco que yo pueda aportar a esta comunidad.

1 respuesta

Respuesta
2

H o l a 

te paso la macro, asumiendo que es un formulario 

Private Sub UserForm_Activate()
'//Por Adriel Ortiz
Me.ListBox51.ColumnCount = 1
'
Set h = Sheets("Hoja1")
For i = 8 To h.Range("I" & Rows.Count).End(xlUp).Row
    If h.Cells(i, "I") > 0 Then
        Me.ListBox51.AddItem h.Cells(i, "I")
    End If
Next i
End Sub

Para finalizar hay 2 opciones Excelente o bueno saludos!

Gracias por su pronta respuesta, si hace correctamente el filtro, me gustaría si es posible aplicarle formato de numero (separador de miles y decimales). Otro inconveniente que se me presenta es que tengo que presentar las dos columnas (H, I) la primera alineada a la izquierda y la segunda alineada a la derecha, he intentado de muchas maneras y asumo que quizá sea imposible. Comparto la imagen de mis datos en excel y en el formulario que deseo presentarlo.

Nuevamente gracias por su aporte. Saludos

Te paso la macro

Private Sub UserForm_Activate()
'//Por Adriel Ortiz
Me.ListBox51.ColumnCount = 2
Me.ListBox51.ColumnWidths = "180;50"
'
Set h = Sheets("Hoja1")
For i = 8 To h.Range("I" & Rows.Count).End(xlUp).Row
    Me.ListBox51.AddItem h.Cells(i, "H")
    If h.Cells(i, "I") > 0 Then
        Me.ListBox51.List(ListBox51.ListCount - 1, 1) = Format(h.Cells(i, "I"), "#,#0.00")
    End If
Next i
End Sub

Para finalizar hay 2 opciones Excelente o bueno saludos!

H o l a 

te paso la macro actualizada

Private Sub UserForm_Activate()
'//Por Adriel Ortiz
Me.ListBox51.ColumnCount = 2
Me.ListBox51.ColumnWidths = "180;50"
'
Set h = Sheets("Hoja1")
For i = 8 To h.Range("I" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "I") > 0 Then
            Me.ListBox51.AddItem h.Cells(i, "H")
            Me.ListBox51.List(ListBox51.ListCount - 1, 1) = Format(h.Cells(i, "I"), "#,#0.00")
    End If
Next i
End Sub

sobre la alineación no es posible con las propiedades del listbox, pero si hay un truco como agregar espacios y hay que tener cuidado en caso que quieras realizar cálculos de la columna.

Si deseas valora esta respuesta y crea una nueva pregunta y te apoyo saludos!

Hola amigo muchas gracias por tus aportaciones tan puntuales y oportunas, me quedan dos detalles mas: a) la primera columna si es posible alinear a la izquierda b) la segunda columna alinear a la derecha, muestra los datos en ceros pero vacios, es posible que no se muestren y los que si tienen cantidad que no quede oculto los decimales?

Como se puede observar en el listbox de la izquierda lo presento en 2, pero el inconveniente es que muestra los que tienen ceros. 

Estoy muy agradecido con el gran apoyo que nos dan a la comunidad que deseamos aprender nuevas cosas. Saludos cordiales.

Prueba con esto

Private Sub UserForm_Activate()
'//Por Adriel Ortiz
Me.ListBox51.ColumnCount = 2
Me.ListBox51.ColumnWidths = "120;20"
Me.ListBox51.TextAlign = fmTextAlignLeft
'
Set h = Sheets("Hoja1")
For i = 8 To h.Range("I" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "I") > 0 Then
            Me.ListBox51.AddItem h.Cells(i, "H")
            Me.ListBox51.List(ListBox51.ListCount - 1, 1) = Format(h.Cells(i, "I"), "#,#0.00")
    End If
Next i
For x = 0 To Me.ListBox51.ListCount - 1
   Me.ListBox51.List(x, 1) = Space(20 - 2 * Len(Me.ListBox51.List(x, 1))) & Me.ListBox51.List(x, 1)
Next
End Sub

No olvides de finalizar hay 2 opciones Excelente o bueno saludos!

Excelente amigo todo perfecto, nada más tuve que ajustar la ultima línea de código Space(66 - 2

Me.ListBox51.List(x, 1) = Space(66 - 2 * Len(Me.ListBox51.List(x, 1))) & Me.ListBox51.List(x, 1)

¡Gracias! y muchas felicidades por su conocimiento y aporte a esta comunidad. Para este proyecto quiza tenga mas cosas por aprender....  Un cordial saludo

Hola amigo buenas tardes/noches, disculpa que abra nuevamente la pregunta, resulta que estoy tratando de ocupar el mismo código en otro listbox para presenta otra información con la siguiente variante:

En el Listbox53 se presentaran el contenido de 7 columnas todas alinieadas a la derecha y con formato de numero(miles y decimales) omitiendo las que tienen valor cero (0.00).

He tratado modificando el código que me hizo favor de enviar pero no consigo hacerlo funcionar

</Hola Víctor crea una nueva pregunta para no mezclar esta respuesta y le damos solución saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas