Verificar si una macro ha cumplido su tarea

Tengo una macro que elimina el numero de documento que se indica en un imputbox, el numero del documento se almacena normalmente en varias hojas en la columna Z, pero yo le puedo escribir un numero que en realidad no se ha generado, y al final de la macro siempre me sale el mensaje que el documento fue correctamente eliminado. Quisiera saber cómo hacer para que si el numero que se pretende eliminar no se encontró en todo el proceso, un mensaje me indique que el numero documento ingresado no fue encontrado en la base de datos y que debe revisarse el proceso.

La macro es la siguiente:

Application.ScreenUpdating = False
'se solicita el nro de fact a eliminar
YesNo = MsgBox("ESTÁ A PUNTO DE ELIMINAR UN DOCUMENTO" & Chr(10) & "Por favor verifique que el número del documento a eliminar sea correcto," & Chr(10) & "no podrá deshacer los cambios." & Chr(10) & "seguro que desea continuar?", vbCritical + vbYesNo, "PRECAUCION!")
Select Case YesNo
Case vbYes
nrofac = InputBox("Ingrese el PREFIJO y el número del documento a eliminar")
'guardo el nro de fact para realizar la búsqueda
dato = nrofac
'guardo el dato ingresado en la celda b26
Range("B26").Value = dato
'le digo que repita la misma orden 50 veces
For I = 1 To 50
If dato = "" Then Exit Sub
'recorro col A en cada hoja
For Each sh In Sheets
Set busco = sh.Range("Z:Z").Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
'si encontró el dato desprotege la hoja para eliminar la fila
If Not busco Is Nothing Then
sh.Unprotect "***"
busco.EntireRow.Delete
sh.Protect "***"
'libero la variable y repito el bucle
Set busco = Nothing
End If
Next sh
'repite la orden el numero de veces indicado
Next I
MsgBox "EL DOCUMENTO SE HA ELIMINADO CORRECTAMENTE"
Call GUARDAR_ELIMINADO
Call ReparaImpresiones
Sheets("ELIMINAR").Select
Case vbNo
MsgBox ("PROCESO CANCELADO")
End Select
End Sub

1 respuesta

Respuesta
2

Te anexo la macro con los cambios

Sub macro()
    Application.ScreenUpdating = False
    'se solicita el nro de fact a eliminar
    existe = False
    YesNo = MsgBox("ESTÁ A PUNTO DE ELIMINAR UN DOCUMENTO" & Chr(10) & "Por favor verifique que el número del documento a eliminar sea correcto," & Chr(10) & "no podrá deshacer los cambios." & Chr(10) & "seguro que desea continuar?", vbCritical + vbYesNo, "PRECAUCION!")
    Select Case YesNo
        Case vbYes
            nrofac = InputBox("Ingrese el PREFIJO y el número del documento a eliminar")
            'guardo el nro de fact para realizar la búsqueda
            dato = nrofac
            'guardo el dato ingresado en la celda b26
            Range("B26").Value = dato
            'le digo que repita la misma orden 50 veces
            For I = 1 To 50
                If dato = "" Then Exit Sub
                'recorro col A en cada hoja
                For Each sh In Sheets
                    Set busco = sh.Range("Z:Z").Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
                    'si encontró el dato desprotege la hoja para eliminar la fila
                    If Not busco Is Nothing Then
                        sh.Unprotect "***"
                        busco.EntireRow.Delete
                        sh.Protect "***"
                        '
                        exste = True 'por lo menos encontró un dato
                        '
                        'libero la variable y repito el bucle
                        Set busco = Nothing
                    End If
                Next sh
                'repite la orden el numero de veces indicado
            Next I
            If existe Then
                MsgBox "EL DOCUMENTO SE HA ELIMINADO CORRECTAMENTE"
            Else
                MsgBox "El número documento ingresado no fue encontrado en la base de datos", vbexclamantion, "REVISAR PROCESO"
            End If
            Call GUARDAR_ELIMINADO
            Call ReparaImpresiones
            Sheets("ELIMINAR").Select
        Case vbNo
            MsgBox ("PROCESO CANCELADO")
    End Select
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas