Hola:
Ahí me has tocado la fibra. El MsFlexgrid es mi debilidad, me tiene apasionado.
Aqui te dejo una Rutina que te puede servir bastante y te comento
Código:
Public Sub GridPoner(Grid As MSFlexGrid, Fila As Single, Columna As Single, Dato As String)
' Rutina general que pone el Dato en la celda indicada, controlando que Fila exista
If Fila > Grid.Rows - 1 Then Grid.Rows = Fila + 1
Grid.TextMatrix(Fila, Columna) = Dato
End Sub
Te permite enviar los datos a la celda deseada, controlando que la Fila exista.
Deberías tener por ejemplo dos variables Públicas dentro del código del Formulario para saber como actuar en todo momento.
Public UltimoRegistro As Single, Editando As Single
Imagino que debes tener un Command que cuando lo pulsas, pasa los datos al Grid.
La idea es que cuando hagas click en el Grid recuerdes en que Fila lo has hecho para pasar a Editar la misma.
Editando = MsFlexgrid.Row
En el Command, puedes poner
IF Editando > 0 then
Fila = Editando
Editando = 0
else
Fila = UltimoRegistro+1
end if
Call GridPoner(MsFlexgrid, Fila, 0, Text1)
Call GridPoner(MsFlexgrid, Fila, 1, Text2)
Call GridPoner(MsFlexgrid, Fila, 2, Text3)
Call GridPoner(MsFlexgrid, Fila, 3, Text4)
Call GridPoner(MsFlexgrid, Fila, 4, Combo)
Es un poco la idea, las posibilidades infinitas. Si tienes dudas, dame un toque y veo si te preparo un sencillo ejemplo.
Saludos