Buen día. Consulta con un código VBA

Tengo el siguiente código:

Private Sub cmdConsulta_Click()
Dim ApNom As String
Dim idBusca As String
Dim fila As Integer

Application.ScreenUpdating = False

Sheets("DIRECTORIO").Select
fila = 0
ApNom = txtApellidoNombre
Do While idBusca <> ApNom
     fila = fila + 1
     idBusca = Range("A" & fila).Value
     If idBusca = Empty Then
        Sheets("DIRECTORIO").Select               
        MsgBox "No se encontro el registro solicitado", , "RA, C.A."
        Exit Do
     End If
Loop

txtTelefono = Range("B" & fila).Value
txtDireccion = Range("C" & fila).Value
txtApellidoNombre.SetFocus
    MsgBox "Documento encontrado en la fila " & fila & vbNewLine & "Presione borrar para una nueva consulta", vbInformation, "REGISTRO MM"
End Sub

El mismo consta de dos MsgBox los cuales funcionan bien, excepto por: cuando no encuentra el registro me lo indica en el primer MsgBox pero tambien me presenta el segundo indicando que el registro se encuentra en la ultima fila vacía.

1 Respuesta

Respuesta
3

Con el Exit Do solo estás saliendo del bucle Do pero luego sigue ejecutándose el resto del código.

Debieras colocar a continuación un Exit sub o luego del Loop esta línea:

If idBusca = Empty then exit sub

Probala y comentame si resolvió tu problema.

Buen día Elsa y gracias:

Mejoró pero ahora los MsgBox se quedan presentes y no salen con aceptar. Te remito el código luego de la modificación:

Private Sub cmdConsulta_Click()
Dim ApNom As String
Dim idBusca As String
Dim fila As Integer

Application.ScreenUpdating = False

Sheets("DIRECTORIO").Select
fila = 0
ApNom = txtApellidoNombre
Do While idBusca <> ApNom
     fila = fila + 1
     idBusca = Range("A" & fila).Value
     If idBusca = Empty Then
        Sheets("DIRECTORIO").Select
        MsgBox "No se encontraron datos", , "RA, C.A."
        Exit Do
     End If
Loop
    If idBusca = Empty Then Exit Sub 'Elsa esta es tu linea de código
txtTelefono = Range("B" & fila).Value
txtDireccion = Range("C" & fila).Value
txtApellidoNombre.SetFocus
    MsgBox "Documento encontrado en la fila " & fila & vbNewLine & "Presione borrar para una nueva consulta", vbInformation, "REGISTRO MM"

End Sub

GRacias.

A mí me funciona perfecto... no entendí cual es tu problema:

Si no encontrás el problema enviame parte la hoja y el Uf en un libro para probarlo. Si lo resolviste comentame.

PD) No debes valorar antes de terminar con el tema... es posible que viéndola valorada (y poco) ya la doy por cerrada ;)

Sdos!

De todos modos te dejo una macro mejor... porque si llegás a tener más de 1000 registros el recorrer fila por fila no es el mejor método. Pero utiliza el que quieras.

Private Sub ComboBox2_Click()
Dim ApNom As String
'Dim idBusca As String
'Dim fila As Integer
Dim busco
Application.ScreenUpdating = False
Sheets("DIRECTORIO").Select
ApNom = TextBox3
Set busco = ActiveSheet.Range("A:A").Find(ApNom, LookIn:=xlValues, lookat:=xlWhole)
'si lo encuentra pasa los valores a los textbox
If Not busco Is Nothing Then
TextBox1 = Range("B" & busco.Row).Value
TextBox2 = Range("C" & busco.Row).Value
TextBox3.SetFocus
MsgBox "Documento encontrado en la fila " & busco.Row & vbNewLine & "Presione borrar para una nueva consulta", vbInformation, "REGISTRO MM"
'si no encuentra el dato deja los controles vacíos
Else
TextBox1 = "": TextBox2 = "": TextBox3 = ""
MsgBox "No se encontro el registro solicitado", , "RA, C.A."
End If
End Sub

Solo debes cambiar el nombre de los controles por los tuyos.

Sdos!

Buen día Elsa y gracias por tus atenciones.

No logro solucionar el problema. El archivo es pequeño y te lo puedo enviar por correo para tu análisis.

Hay forma de enviarlo desde aquí o tiene que ser a tu correo. Si me facilitas la dirección mucho te lo agradezco.

Muchas gracias.

Enviamelo a mi correo. Se encuentran en la portada de mi sitio. Que el libro venga con las 2 macros, la tuya y la mía.

Sdos

Elsa (cibersoft.arg de gmail.com)

Comento lo ya adelantado por mail luego de revisar tu libro.

Tu código menciona un campo llamado txtDireccion... si bien la hoja no presenta ese tipo de datos, lo que te falla es que a ese control (txtDireccion) le estás enviando un formato fecha en otros de los eventos de tu formulario.

Retirando ese código, la macro funciona perfectamente.

Sdos!

Buen día Elsa y gracias nuevamente por la ayuda prestada.
La macro ya comienza a funcionar y los detallitos los puedo arreglar sin ayuda.

Gracias nuevamente y felicitaciones.

Entonces la próxima vez no te apures a valorar pobremente sin antes recibir respuesta... quizás recibas más de lo que esperas ;)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas