Sumar una columna de listbox con multiselect

Tengo lo siguiente ..

Un listbox con multiselect y un label en el listbox quiero marcar un check y que el valor e la columna 5 del listbox lo muestre en el label si luego marco otra el valor se sume al anterior que estaba en el label.. Y si desmarco reste el valor y muestre en el label

1 Respuesta

Respuesta
2

Para adecuar el código a tu formulario, me puedes enviar tu archivo con el formulario, me explicas cómo lo ejecuto.

Recuerda poner tu nombre de usuario en el asunto del correo.

S a l u d o s . D a n t e   A m o r

Gracias Dan

Ya le envié el archivo

Saludos

Agrega el siguiente evento a tu formulario:

Private Sub ListBox1_Change()
'Por.Dante Amor
    lbltotal = ""
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            valor = Replace(ListBox1.List(i, 5), ",", ".")
            lbltotal = Val(lbltotal) + Val(valor)
        End If
    Next
End Sub

Estoy agregando esta línea, para reemplazar las comas por puntos, ya que para mí los puntos son los separadores decimales, realiza la prueba para ver cómo te funciona.

valor = Replace(ListBox1.List(i, 5), ",", ".")

Si desaparecen los decimales, entonces cambia la línea de la macro por esta:

valor = ListBox1.List(i, 5)

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta.

Muchas Gracias nuevamente Dan ... Un 7!!

Saludos 

Gracias

Dan Disculpa pero sabes que me di cuenta que no suma bien los valores de la columna 5 del listbox cuando son números enteros los suma bien ejemplo

43+6 = 49

Pero si son decimales ejemplo

Esta suma esta bien

2,77777777777778 + 0,222222222222222 = 3,000000000000002  

y en el código me da  mal

2,77777777777778 + 0,222222222222222 = 2.22 periódico

Por favor

Gracias

Puedes poner una imagen de cómo están los valores en los textbox, el problema es que el separador de decimales utilizas una coma y en VBA el separador por default es el punto, entonces hay que actualizar el código de la macro, pero no sé exactamente cómo tienes los datos, por eso quiero verlos en una imagen.

Si te fijas si selecciono cuando tienen decimales como están marcados en la imagen no hace bien la suma la suma de esos dos es 3,000000000000002 y no 2,22

Y estás ocupando la macro con esto

valor = Replace(ListBox1.List(i, 5), ",", ".")

Si ocupo esa 

valor = Replace(ListBox1.List(i, 5), ",", ".")

y Ocupe esta también pero no toma los decimales

Al sumar lo mismo que esta en la imagen marca el primero en el label pero el segundo no lo suma donde empieza con cero

valor = ListBox1.List(i, 5)

Ocupando este código, la macro funciona bien:

Private Sub ListBox1_Change()
'Por.Dante Amor
    lbltotal = ""
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            valor = Replace(ListBox1.List(i, 5), ",", ".")
            lbltotal = Val(lbltotal) + Val(valor)
        End If
    Next
End Sub

Estoy probando con los números que dices, también tienen comas y el resultado es 3

Prueba con lo siguiente:

Private Sub ListBox1_Change()
'Por.Dante Amor
    lbltotal = ""
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            valor = Replace(ListBox1.List(i, 5), ",", ".")
            valo2 = Replace(lbltotal, ",", ".")
            lbltotal = Val(valo2) + Val(valor)
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas