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