Hola, yo realize algo semejante pero con un MSFlexGrid , [Microsoft MSFlexGrid 6.0 (SP3)], talvez te sirva:
Option Explicit
Public conexionBD As Connection
Public Query As ADODB.Recordset
' se debe crear la conexion utilizando la referencia ADO
Sub LlenarGrid()
Dim fila As Integer
Set Query = New ADODB.Recordset
vbSql = "Select * from Clientes" 'Tabla Clientes en BD's de MS Access
Query.Open vbSql, conexionBD '
If Query.RecordCount <> 0 Then
If Not Query.EOF Then
' se debe intentar agregar un campos mas a la consulta
txtCodigo.Text = Query.Fields.Item(0)
txtNombre.Text = Query.Fields.Item(1)
txtDireccion.Text = Query.Fields.Item(2)
txtTelefono.Text = Query.Fields.Item(3)
txtApartado.Text = Query.Fields.Item(4)
txtRegistros.Text = Query.Fields.Item(5)
End If
fila = 1
MSFlexGrid1.Rows = Query.RecordCount + 1
Query.MoveFirst
Do While Not Query.EOF
Query.Fields.Item(5) = Query.AbsolutePosition
' guardo el # de registro en un campo
MSFlexGrid1.TextMatrix(fila, 0) = Query.Fields.Item(0)
MSFlexGrid1.TextMatrix(fila, 1) = Query.Fields.Item(1)
MSFlexGrid1.TextMatrix(fila, 2) = Query.Fields.Item(2)
MSFlexGrid1.TextMatrix(fila, 3) = Query.Fields.Item(3)
MSFlexGrid1.TextMatrix(fila, 4) = Query.Fields.Item(4)
MSFlexGrid1.TextMatrix(fila, 5) = Query.Fields.Item(5)
fila = fila + 1
Query.MoveNext
Loop
Else
MsgBox "No se encuentra ningún cliente dentro del sistema.", vbSystemModal + vbExclamation + vbOKOnly, "Buscando..."
End If
End Sub
NOTA: si se elimina un campo se debe volver a cargar
cualquier duda me dices... hasta pronto