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.