Suma de numeros decimales sobre un text!!!

Valen
22 de Octubre del 2003
Hola a todos, puse un msj parecido a este mas abajo pero decidi ponerlo de nuevo para explicar mas detalladamente que es lo que hago para ver si me podeis ayudar. Resulta que en una parte de mi programa visualizo la tabla linea de pedidos, donde estan los campos cantidad y precio, total que si un pedido tiene varios articulos, tengo que multipicar el precio de cada articulo por su cantidad y sumarlos todos los subtotales. He utilizado un mshflexgrid, ya que con su propiedad textmatrix puedo controlar el valor de la fila y columna que quiera, mi problema es el siguiente: cuando saco el coste del primer articulo lo almaceno en un text, y paso a sacar el coste del segundo articulo y este se lo sumo al anterior y asi sucesivamente para todos los articulos comprados, el problema esque el coste de ciertos articulos tienen decimales, y cuando tengo que sumarlos no se como sumar dos cantidades decimales. He probado la propiedad val pero no me sirve, tambien he probado la propiedad cdbl pero la tabla muestra los precios con punto en vez de con coma en los decimales y tampoco me lo coge. Alguien sabe como hacer esto por favor, se lo agradeceria mucho.

Juan
22 de Octubre del 2003
Lo único que debes hacer es dar a los números un formato
adecuado antes de enviarlos a la función Val, que sólo
reconoce el "." como separador de decimales. Esto
se puede hacer así:

Dim cadena As String, numero As Double
cadena = "1.234.567,89"
cadena = Replace(cadena, ".", "") 'Elimina el separador de millares
cadena = Replace(cadena, ",", ".") 'Convierte el separador de decimales a "."
numero = Val(cadena)
MsgBox numero + 1.1 ' debería dar 1234568,99

Baltasar
22 de Octubre del 2003
En lugar de VAL, usa esta función: MiVal

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