Por lo que yo veo en la imagen, la columna "Existencia" es la nº 4, y no sé de dónde sale el 100 en la primera fila.
Si "Existencia" no es un campo de la tabla y lo vas calculando en función de las entradas y salidas, el código debería funcionar así:
Fecha = Col. 0
Factura = Col. 1
Entrada = Col. 2
Salida = Col 3
Existencia = Col. 4
Código:
Fila = 1
.MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
' Entrada - Salida (se supone que anteriormente la existencia es cero)
While rs.EOF = False
For i = 1 To .MSHFlexGrid1.Rows - 1
' Entrada + Existencia anterior - Salida
.MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) + CDbl(.MSHFlexGrid1.TextMatrix(Fila - 1, 4)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
Next
Fila = Fila + 1
rs.MoveNext
Wend
Corrijo: Si "Existencia" no es un campo de la tabla, sobra el While... Wend, y si lo és, pues también ya que no estamos en ninguna parte haciendo referencia a ningún campo del recordset.