hola
no aconsejaria que sumes y muestres en la misma operacion
Dim suma As Integer = 0
For Each row As DataGridViewRow In gridcompras.Rows
suma += Val(row.Cells(4).Value)
Next
txtsubtotal.Text = suma.ToString("#,##0.00")
o sea sumas en una variable y al final le pones formato para mostrar el valor
puedes usar el +=
o sino
suma = suma + Val(row.Cells(4).Value)
deberia ser lo mismo
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina