Sumar valores en un Listbox

Es posible hacer que todos los valores de una columna en un listbox se sumen y aparescan abajo en un textfield readonly o en un label.

Si, es possible. Usa

dim v as double for i as integer = 0 to listcount-1 v = v+cell(i,0) //o una otra colona que zero next Textfield1.text = str(v)

Donde ingreso este metodo? En en un boton con action o en el listbox. Me esta apareciendo un bug en la palabra listcount-1 y cell.

Esto es lo que puse en un botón:

Sub Action() dim v as double for i as integer = 0 to ListBox1.listcount-1 v = v+val(ListBox1.cell(i,0)) //o una otra colona que zero next Textfield1.text = str(v) End Sub

El mismo código puede colocarse en otros controles.

Excelente esta funcionando.

Por ultimo, ya esta sumando pero solo suma numeros del 1 al 9 si pongo un 10,100 ect… solamente suma el 1.¿Que necesito cambiar?

No comprendo. En este caso, la suma de 234,78 + 1.000,78 + 2.234,78 hace 3.470,34 correctamente con este codigo.

Si pongo 100,000 + 100,000 el resultado es = 200.

Este es el codigo que puse en el boton:

dim v as double
for i as integer = 0 to ListBox1.listcount-1
v = v+val(ListBox1.cell(i,1)) //o una otra colona que zero
next
Textfield28.text = str(v)

dim a as double
for i as integer = 0 to ListBox1.listcount-1
a = a+val(ListBox1.cell(i,2)) //o una otra colona que zero
next
Textfield29.text = str(v)

dim e as double
for i as integer = 0 to ListBox1.listcount-1
e = e +val(ListBox1.cell(i,3)) //o una otra colona que zero
next
Textfield30.text = str(v)

dim o as double
for i as integer = 0 to ListBox1.listcount-1
o = o +val(ListBox1.cell(i,4)) //o una otra colona que zero
next
Textfield31.text = str(v)

Cada uno representa una columna.

Si. Claro. El problema es el separador. El programa creo que la coma indica la fin del entero.

Debe quitar las comas ante de calcular con

v = v+val(replaceall(ListBox1.cell(i,0),",","")) //o una otra colona que zero

Y esto para que el resultado mostra la coma :

Textfield1.text = Format(v, "###,##0.####")

Hola Ivan,

El código que te ha dado Michel puede ir en un Button, tal y como lo has puesto tú, o en alguno de los Events Handlers del listbox. Por ejemplo, podrías querer hacer el cálculo automáticamente cada vez que se modifica un valor, y para eso podrías utilizar el event CellAction. De esa manera no necesitarías un button.

En cuanto al error en la suma, como ya te ha explicado Michel, la función Val está interpretando la coma como separador de decimales. Hay una función parecida a Val que respeta la configuración local del equipo (esto es, que si utilizas la coma como separador de miles en tu sistema operativo esta función lo respeta) que es: CDbl

Si necesitas más ayuda no dudes en preguntar que alguno de nosotros te intentaremos guiar. Y si no es problema preguntar en inglés mejor que lo hagas en ese idioma porque vas a recibir mucha más atención.

Julen

Muchas Gracias a los dos por toda su ayuda, me ha sido bien útil.

Otro pregunta jejeje.

Estoy concatenando y sumando con este codigo:

TextField27.Text = Str(Val(TextField19.Text) + Val(TextField20.Text) + Val(TextField21.Text))

Como puedo hacer que sea double y cambiar el formato.

El resultado es double, porque Val produce Doubles. Para obtener un formato concreto en el texto de la suma puedes utilizar tanto Str, pero con un parmetro opcional adicional que especifica el formato buscado (http://documentation.xojo.com/index.php/Str), o Format (http://documentation.xojo.com/index.php/Format).

Julen

Usa el mismo codigo format que en mis ejamplo :

Textfield1.text = Format(v, "###,##0.####")

En plaza de str, utilice :

Format(Val (TextField19.Text) + Val (TextField20.Text) + Val (TextField21.Text), "###,##0.####")

Me funciono cambiando el Val por CDbl y eliminando el srt por format, ¿Que puedo hacer para eliminar el punto al final del resultado? o que reconosca los dos cerros luego del punto $100,000.00

Por ejemplo;

100,000.00 + 100,000.00 = 200,000.00

[quote=126447:@Ivan Oliveras]Me funciono cambiando el Val por CDbl y eliminando el srt por format, ¿Que puedo hacer para eliminar el punto al final del resultado? o que reconosca los dos cerros luego del punto $100,000.00

Por ejemplo;

100,000.00 + 100,000.00 = 200,000.00[/quote]

Format(12345.8789, "###,##0.##")

Me sigue apareciendo el punto al final del resultado cuando en la suma el valor es 100,000.00 + 20,000.00, pero si despues del punto el valor es un numero que no es cero me aparece el numero correcto.

Por ejemplo;

100,000.00 + 100,000.00 = 200,000.

Pero con;

100,000.10 + 20,000.20 = 120,000.30

[quote=126512:@Ivan Oliveras]Me sigue apareciendo el punto al final del resultado cuando en la suma el valor es 100,000.00 + 20,000.00, pero si despues del punto el valor es un numero que no es cero me aparece el numero correcto.

Por ejemplo;

100,000.00 + 100,000.00 = 200,000.

Pero con;

100,000.10 + 20,000.20 = 120,000.30[/quote]

Trae :

[code]dim resultado as string

if floor(numbre) <> numbre then
resultado = format(numbre,("###,###,###,###.00"))
else
resultado = format(numbre,("###,###,###,###"))
end if

msgbox resultado[/code]

¿Como puedo hacer para que un textfield cambie automaticamente su valor cuando se suma, sin tener que presionar enter o crear un boton?