Hola, Hola, aqui una vez más Lagunax molestando un poco a la comunidad, me ha surgido un error muy extraño, ojala que alguien pueda ayudarme a resolverlo.
Estoy realizando la sección de editar-eliminar registros de un pequeño sistema que utiliza BD access. Mediante un combobox y un text que sirve de filtro, despliego los datos de la BD en un MSHFlexgrid. Cuando hago click en una fila obtengo el ID de esos datos , el cual utilizo para modificar y eliminar la información.
He logrado realizar con exito el boton de editar [Command1] pero me surge un problema con el boton de eliminar rgistro [aqui Command4]. 
Aclaro que [Command2] limpia los text y combo boxes, [Command1] copia los valores para emular un boton "deshacer".
En [Command4] realizo una coneccion a la BD, un select, y luego recorro el recorset para encontar los campos que corresponden con el indice que obtuve del MSHFlexgrid1 (variable pasar_id). El problema surge cuando presiono el botón de eliminar, manda "Error de compilación: Loop sin Do". He intentado con F8 (paso a paso) pero al momento de presionar el botón se corta, por lo que no puedo verificar si simplemente no reconoce el Do o existe otro problema.
Option Explicit
Public bool As Boolean
Public bool2 As Boolean
Public auxi_grid As String
Public pasar_id As Integer
Public Numero As Integer
Public ident As Integer
Public auxi As Integer
Public copia_id As Integer
Public copia_nombre As String
Public copia_descripcion As String
Public copia_solucion_1 As String
Public cn As ADODB.Connection
Public rst As ADODB.Recordset
Sub Conectar()       
    ' Crea una nueva conexión y un recordset
    Set cn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")       
    rst.CursorLocation = adUseClient
    ' abre la base de datos DIRECCION ANTERIOR
'    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
'            "Source=C:Program FilesMicrosoft " & _
'            "Visual StudioVB98SISTEMA BUSQUEDAAplicacion.MDB;Persist Security Info=False"
'DIRECCION NUEVA DEL SERVIDOR \XOA008
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
            "Source=\Xoa008COMPARTIDO SISTEMASSistema " & _
            "de Registro & Solución de ProblemasBase de DatosAplicacion.MDB;Persist Security Info=False"  
End Sub  
Sub Desconectar()
'MOSTRAR LA LISTA DE SOLUCIONES EN TEXT3.TEX
'    Form6.Text3.Text = rst("Solucion_1")
'*******************************************
    rst.Close
    cn.Close
    Set rst = Nothing
    Set cn = Nothing
End Sub
Private Sub Combo1_Click()
Call Conectar  
rst.Open "SELECT ID,Nombre,Descripcion FROM TablaAplicacion WHERE Nombre Like '%" & _
             Combo1.Text & "%'", cn, adOpenStatic, adLockOptimistic
' Muestra los datos en el FlexGrid
Set MSHFlexGrid1.DataSource = rst  
' Visualiza la cantidad de registros filtrados
Me.Caption = "Peugeot - Registros encontrados: " & CStr(rst.RecordCount)  
Call Desconectar
End Sub
Private Sub Command1_Click()
'MARZO 5 - EVITAR ERROR AL PULSAR GUARDAR CON CAMPOS EN BLANCO
If Text3.Text = "" And Text5.Text = "" And Text6.Text = "" And Combo2.Text = "" Then
    MsgBox ("No hay Datos para Modificar.")
Else
Call Conectar
rst.Open "SELECT ID,Nombre,Descripcion,Solucion_1 FROM TablaAplicacion WHERE ID Like '%" & _
             Text4.Text & "%'", cn, adOpenStatic, adLockOptimistic
If rst.EOF = True Then
        Beep
Else
    Do While bool2 = False
        If rst.Fields("ID") = pasar_id Then '¿¿¿¿¿¿ crear variable para copiar
            rst.Fields("Nombre") = Combo2.Text
            rst.Fields("Descripcion") = Text5.Text
            rst.Fields("Solucion_1") = Text6.Text
            rst.Update
            MsgBox ("Se han guardado los cambios.")
            bool2 = True
        Else
            rst.MoveNext
        End If
    Loop
End If
rst.MoveFirst
Call Desconectar
bool2 = False
MSHFlexGrid1.Clear
End If
'Call copy_auxi
End Sub
Private Sub Command2_Click()
Form9.Hide
'MARZO 5 - LIMPIEZA AL SALIR DE EDITAR/BORRAR
MSHFlexGrid1.Clear
MSHFlexGrid1.Refresh
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
'Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Combo1.Text = ""
Combo2.Text = ""
Form1.Show
End Sub
Private Sub Command3_Click()
'AGREGADO DEL 5 DE MARZO
Combo2.Text = copia_nombre
Text5.Text = copia_descripcion
Text6.Text = copia_solucion_1
'Call local_clear_auxi
End Sub
//////////////////////////////////////////////////////////////////////////////////////////////////
AQUI INICIA EL PROBLEMA
//////////////////////////////////////////////////////////////////////////////////////////////////
Private Sub Command4_Click()
'MARZO 5
'On Error Resume Next
'Se utiliza la línea On Error Resume Next para indicarle a Visual Basic que siga ejecutando
'la forma, aún cuando ocurra un error de ejecución
Call Conectar
rst.Open "SELECT ID,Nombre,Descripcion,Solucion_1 FROM TablaAplicacion WHERE ID Like '%" & _
             Text4.Text & "%'", cn, adOpenStatic, adLockOptimistic
If rst.EOF = True Then
        Beep
Else
'Do While bool2 = False '////// ESTE ES EL CICLO QUE NO RECONOCE
Do Until bool2 = True
        If rst.Fields("ID") = pasar_id Then
            'MARZ0 5 MIDIFICADO
            'rst.Fields("Nombre") = Combo2.Text
            'rst.Fields("Descripcion") = Text5.Text
            'rst.Fields("Solucion_1") = Text6.Text            
            If MsgBox("Se va a eliminar el Registro, ¿Desea continuar?", vbExclamation + vbYesNo, "Eliminacion de Registros") = vbYes Then
            rst.Delete
            rst.Requery
            rst.MoveNext
            'PARA EVITAR QUE AL ELIMINAR EL CURSOR DESPLIEGUE EL MISMO REGISTRO ELIMINADO
            'A PESAR DE QUE EL RECORDSET YA AVANZO
            'CALCULAR EL AVANCE DEL RECORSET
            Text3.Text = rst.Fields("ID")
            Combo2.Text = rst.Fields("Nombre")
            Text5.Text = rst.Fields("Descripcion")
            Text6.Text = rst.Fields("Solucion_1")
                If rst.EOF Then
                    rst.MoveLast
                End If
            MsgBox ("Registro Eliminado con Éxito.")            
            bool2 = True
        Else
            rst.MoveNext
        End If
Loop
End If
rst.MoveFirst
Call Desconectar
bool2 = False
MSHFlexGrid1.Clear
End Sub
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
Private Sub Form_Load()
MSHFlexGrid1.Clear
    With MSHFlexGrid1
        .SelectionMode = flexSelectionByRow
        .FixedCols = 0
        .ColWidth(0) = 700
        .ColWidth(1) = 2000
        .ColWidth(2) = 5000
'        .ColWidth(3) = 4000
'        .ColWidth(4) = 4000
    End With  
    Text2.Text = ""
'    Text3.Text = ""
End Sub
Private Sub MSHFlexGrid1_Click()
'///////////////////////////////////////////////////////////////////
'CAMBIAR CADENAS STRING A INTEGER
'Dim Cadena As String, Numero As Integer
'Cadena = "12345.25"
'Numero = CInt(Val(Cadena)) 'Esto te cambia la cadena a un numero entero
Text1.Text = MSHFlexGrid1.Text
auxi_grid = MSHFlexGrid1.Text
Numero = CInt(Val(auxi_grid))
Text4.Text = Numero
Form7.Text1.Text = ""
Call Conectar
'CAMBIOS NUEVOS agregamos Solucion
rst.Open "SELECT ID,Nombre,Descripcion,Solucion_1 FROM TablaAplicacion WHERE ID Like '%" & _
             Text4.Text & "%'", cn, adOpenStatic, adLockOptimistic
'   Para acceder a un campo:
    If rst.EOF = True Then
        Form7.Text1.Text = ""
    Else
'CAMBIOS NUEVOS        Adodc1.RecordSource = "SELECT * FROM TablaAplicacion"
'CAMBIOS NUEVOS        Adodc1.Refresh        
'///        With Adodc1.Recordset
'///            If .EOF And .BOF Then
'///                auxi = 0
'///            Else
            If MSHFlexGrid1.Text = "" Then
                MsgBox "La Tabla esta Vacia"
            Else
                Do While bool = False
'CAMBIOS NUEVOS                         If Adodc1.Recordset.Fields("ID") = Text4.Text Then
                         If rst.Fields("ID") = Text4.Text Then
                                Text3.Text = ""
                                Combo2.Text = ""
                                Text5.Text = ""
                                Text6.Text = ""                         
                                Text3.Text = rst.Fields("ID")
                                Combo2.Text = rst.Fields("Nombre")
                                Text5.Text = rst.Fields("Descripcion")
                                Text6.Text = rst.Fields("Solucion_1")
                                bool = True
                                pasar_id = rst.Fields("ID")
                                'CAMBIO RECIENTE HOY 5 MARZO
                                Call local_clear_auxi
                                Call local_copy_auxi                                
                         Else
'CAMBIOS NUEVOS                                Adodc1.Recordset.MoveNext
                                rst.MoveNext
                         End If
                Loop
            End If
'///            End If
'///        End With
'CAMBIOS NUEVOS        Adodc1.Recordset.MoveFirst 'CAMBIO RECIENTE
    End If
rst.MoveFirst
Call Desconectar
auxi_grid = ""
Numero = 0
Text4.Text = ""
bool = False
End Sub
Private Sub Text1_GotFocus()
    'Text1.Text = ""
End Sub
Private Sub Text2_Change()
    ' conecta
    Call Conectar
    bool = False
    ' Ejecuta la consulta SQL
'SENTENCIA SQL ORIGINAL
'    rst.Open "SELECT ID,Nombre,Descripcion FROM TablaAplicacion WHERE Descripcion Like '%" & _
 '            Text2.Text & "%'", cn, adOpenStatic, adLockOptimistic    
    rst.Open "SELECT ID,Nombre,Descripcion FROM TablaAplicacion WHERE Descripcion Like '%" & Text2.Text & "%' And Nombre Like '" & Combo1.Text & "'", cn, adOpenStatic, adLockOptimistic    
'   ' Para acceder a un campo:
    If rst.EOF = True Then
    '    Text3.Text = "" borrar text1
        Text1.Text = ""
    Else
'ULTIMA MODIFICIACION ADODC******************************************************
        ident = rst("ID")
        Adodc1.RecordSource = "SELECT * FROM TablaAplicacion"
        Adodc1.Refresh
      Do While bool = False
        If Adodc1.Recordset.Fields("ID") = ident Then
            'Text3.Text = Adodc1.Recordset.Fields("Solucion_1")
            'IMPRIME SOLUCION EN TEXT3.TEXT CUANDO FILTRAS INFO
            bool = True
        Else
            Adodc1.Recordset.MoveNext
        End If
      Loop
'*******************************************************************************
 ' GOOD       Text3.Text = rst("Solucion_1")
    End If  
    ' Enlaza el FlexGRid
    Set MSHFlexGrid1.DataSource = rst  
    ' Cantidad de registros
    Me.Caption = "Registros encontrados: " & CStr(rst.RecordCount)  
    ' Desconecta de la base de datos
    Call Desconectar    
    If Text2.Text = "" Then    
        'Text3.Text = "" borrar text1
        Text1.Text = ""
    End If
End Sub
Private Sub Text2_GotFocus()
    Text2.Text = ""
End Sub
''MODIFICACION RECIENTE 5 de marzo////////////////////////////////////////////
' COPIA VARIABLES AUXI PARA BOTON DESHACER
Private Sub local_copy_auxi()
'copia_id = TxtID.Text
copia_nombre = Combo2.Text
copia_descripcion = Text5.Text
copia_solucion_1 = Text6.Text
End Sub
Private Sub local_clear_auxi()
'copia_id = 0
copia_nombre = ""
copia_descripcion = ""
copia_solucion_1 = ""
End Sub
Incluso he probado en vez de un "Do While" un "Do Until" (esta en comentarios) pero sigue sin reconocer el Do. Alguien podría ayudarme, porfavor.
De antemano Gracias.