Suma de dos numero decimales

Valen
22 de Octubre del 2003
Recojo dos cantidades (99500,36 y 15350,85) sobre dos text, y quiero sumarlas, total que las convierto a valor n煤merico con Val pero no cuenta los decimales y a la hora de sumarlos los suma mal, tb hice una conversion a double pero nada. Hay sabe como puedo sumar estas dos cantidades con decimales y que las sume bien. Muchas Gracias de Antemano.

rafa
22 de Octubre del 2003
Hola Valen.
Utiliza cdbl() mejor que val
Esto te convierte el texto a double
Comprueba primero que el texto incluido en el text no es vacio y es numerico.

Baltasar
22 de Octubre del 2003
El problema de usar cdbl es que tambi茅n se confunde con los signos de puntuaci贸n. Todo depende de c贸mo se introducen los valores decimales, si usas el punto decimal (teclado num茅rico) el cdbl no funciona. Otra soluci贸n que suelo usar es sustituir el punto del teclado num茅rico por una coma en el propio textbox, pero hay que estar controlando todo.

Baltasar
22 de Octubre del 2003
El problema es que la funci贸n val no usa los mismos signos de puntuaci贸n que los textbox. Tienes varias opciones:
1 .- al rellenar los textbox, guarda sus valores en una variable, pero no leyendo el textbox. Luego suma esas variables.
2.- convertir el contenido de los textbox al valor que necesitas, que no es m谩s que cambiar las comas por puntos (o viceversa, depende de la configuraci贸n regional).

Yo en su momento me hice una funci贸n MiVAL que trata los textbox o cualquier cantidad y la convierte en n煤mero.

Public Function MiVal(mtext As String) As Double
Dim Pos As Integer
While InStr(mtext, ".") > 0
Pos = InStr(mtext, ".")
mtext = Left(mtext, Pos - 1) + Mid(mtext, Pos + 1)
Wend
Pos = InStr(mtext, ",")
If Pos > 0 Then mtext = Left(mtext, Pos - 1) + "." + Mid(mtext, Pos + 1)
mival = Val(mtext)
End Function

Hay que tener en cuenta la configuraci贸n regional. Si as铆 no funciona, cambia las comas por puntos y viceversa.

Suerte.

Baltasar
22 de Octubre del 2003
Olvid茅, como siempre, explicar qu茅 es lo que hace la funci贸n.

La funci贸n MiVal primero elimina los separadores de millares "." del texto. Luego sustituye la coma (si la hay) por un punto. y entonces ya puedes obtener el valor de ese texto.

Por supuesto que hay muchas soluciones mejores y m谩s r谩pidas, pero, aparte de que esta funciona, no est谩 mal como ejercicio, para los que empiezan.