Eliminar fila, con criterio y pregunta de seguridad

Buenas noches a todos.

Esta pagina esta que explota, no solo solucionaron mis preguntas sino que solucione muchas otras antes de hacerlas leyendo las repuestas de preguntas de otros usuarios.

En este caso vi uan respuesta q podría utilizar pero necesito agregarle algo y quería ver si me podían ayudar.

Vamos con el ejemplo:

Tengo el libro "Stock" en donde en la hoja "borrar" tengo una celda de referencia, pongámosle "b2" y en la hoja "resumen" tengo una base de datos.

La idea es que cuando coloque un valor en la celda "b2" de la hoja "borrar" la macro busque en la hoja "resumen" en la primer columna el valor que coincida con el ingresado en "b2" y elimine la fila contenedora del código.

Hasta aca podría solucionarlo con la macro que encontré, pero el asunto es que la información en las filas es muy importante y no puedo borrar un registro porque el usuario coloco mal el numero (por ejemplo), entonces necesito agregar lo siguiente:

Si la macro hace la búsqueda y el código que ingrese no esta un cartel me lo comunique (código no encontrado - OK)

Y si la macro encuentra el código antes de eliminarlo un cartel al estilo windows me pregunte si esto seguro de querer eliminar el registro "XX" (el código que ingrese en "B2"),

Si coloco SI la macro finaliza y elimina la fila completa.

Si coloco NO la macro se detiene y no borra nada.

Espero puedan ayudarme y muchas gracias por el aporte que todos hacen cada dia

Saludos

1 respuesta

Respuesta
1

Esto lo condicionas con un evento de error, ya te paso los códigos.

Estos serían los códigos cualquier duda me avisas.

Sub búsqueda()
On Error Resume Next
dato = Range("B2").Value
' Aquí colocas los códigos uqe ya tiens para efectuar la búsqueda
If Err.Number = 91 Then
MsgBox "Código " & dato & " No encontrado", , "CUADRO DE DIALOGO"
Else
respuesta = MsgBox("Realmente desea borrar el código " & dato, vbYesNo, "DIALOGO DE CONFIRMACIÓN")
If respuesta = vbYes Then
' Aquí colocas los códigos que ya tienes para eliminar la fila
Else
MsgBox " La Operación ha sido cancelada, no se procesa la eliminación del registro ", , "CANCELACIÓN DE OPERACIÓN"
End If
End If
End Sub

No consigo juntarlas, no tengo el conocimiento, porque la macro es un solo código y para mi el Visual Basic es lo mas parecido a chino nivel experto!!

Te paso de donde saque la macro a ver si la podes adaptar o si te es mejor escribir el código completo vos por mi mejor!!

No quiero molestar asique lo que sea mejor te lo voy a agradecer... UN MONTÓN!!

Gracias y un saludo

Otra aclaración, el código que copie de la pagina que me olvide de dejarte tiene un defecto si le aplicamos los cuadros de consulta, que es que le ordena cambiar de pagina en lugar de hacerlo automáticamente, no se si eso se puede evitar, pero se nota como la macro cambia de pagina y vuelve en el momento que borra.

Y como te decía para mi es chino experto, pero calculo que si adaptas tu código al otro me van a aparecer los cuadros de confirmación sobre la pagina de "Resumen" y la idea es que el usuario no la vea, sino que maneje todo desde "Borrar"

No se, los expertos son ustedes y por lejos, aguardo tus recomendaciones

Pagina del otro codigo

http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/2203007/eliminar-fila-con-criterio-en-otra-hoja

Saludos

No he cogido la macro que me propones, pero estos códigos hacen lo que necesitas

Sub búsqueda()
Application.ScreenUpdating = False
On Error Resume Next
Sheets("borrar").Select
dato = Range("B2").Value
Sheets("Resumen").Select
Columns("A:A").Select
Selection.Find(What:=dato, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
fila = ActiveCell.Row
If Err.Number = 91 Then
MsgBox "Código " & dato & " No encontrado", , "CUADRO DE DIALOGO"
Else
respuesta = MsgBox("Esta seguro de borrar el código " & dato, vbYesNo, "DIALOGO DE CONFIRMACIÓN")
If respuesta = vbYes Then
Rows(fila).Select
Selection.Delete Shift:=xlUp
Else
MsgBox " La Operación ha sido cancelada, no se procesa la eliminación del registro ", , "CANCELACIÓN DE OPERACIÓN"
End If
End If
Sheets("borrar").Select
Application.ScreenUpdating = True
End Sub

Esta parte: Application.ScreenUpdating = False. Es la que hace que no se vea el proceso de la macro, es decir, no se vea que esta pasando de una pantalla a otra.

No olvides finalizar la pregunta.

SOS UN GRANDE!!!, funciona perfecto!!! te pondría 6 estrellas pero no hay... te ganaste un nuevo fan :P

Abrazo y muchas muchas muchísimas gracias!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas