no uses VAL porque te corta los decimales, en todo caso usa cdbl(\"0\" & datagrid.text), esto hace que te lo convierta en decimal doble y que si no hay nada escrito no te tire error.
o sea
otra pude ser asi si lo mostras en un textbox fuera del dgrid
cuando el textbox tiene el foco lo suma
totalito es el nombre del campo que use en esa tabla
lo que sigue lo hice para calcular iva
suerte
espero sirva
fede argentina
Private Sub txttotal_GotFocus()
Dim TOTALES
With dtetecno.rsingreso ' esta es la coneccion con su recordset
.MoveFirst
TOTALES = 0
While Not .EOF
TOTALES = TOTALES + !totalito
.MoveNext
Wend
totiva1 = TOTALES * (iva1 / 100)
totiva2 = TOTALES + totiva1