Para escribir en el FlexGrid hay varios métodos, uno podría ser este utilizando los eventos KeyPress y KeyDown del Grid:
Código:
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
' solo caracteres imprimibles
If KeyAscii >= 32 And KeyAscii <= 127 Then MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Sub
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
With MSFlexGrid1
Select Case KeyCode
Case vbKeyDelete ' Tecla <Supr> borramos toda la celda
.Text = ""
Case vbKeyBack ' Tecla < Retroceso> borramos el último caracter
If Len(.Text) > 0 Then .Text = Left(.Text, Len(.Text) - 1)
Case vbKeyTab, vbKeyReturn ' Teclas <Tab> o <Intro>
If .Col = .Cols - 1 Then ' si es la última columna:
' si además en la última fila, añadimos una nueva
If .Row = .Rows - 1 Then .Rows = .Rows + 1
' nos posicionamos en la primera celda de la fila siguiente
.Row = .Row + 1
.Col = .FixedCols
.LeftCol = .FixedCols
Else ' si no, pasamos a la siguiente columna de la misma fila
.Col = .Col + 1
End If
End Select
End With
End Sub
y para imprimirlo, básicamente sería así:
Código:
Private Sub cmdImprimir_Click()
Dim iFila, iCol As Integer
For iFila = 1 To MSFlexGrid1.Rows - 1
For iCol = 1 To MSFlexGrid1.Cols - 1
Printer.Print MSFlexGrid1.TextMatrix(iFila, iCol) & Space(5);
Next iCol
' nueva línea
Printer.Print ""
Next iFila
Printer.EndDoc
End Sub
Esto se puede mejorar bastante, sólo puse lo básico.
Espero que te sea de ayuda.