Quiero que mi macro realice el borrado que me borre todas las líneas con el contenido del ImputBox

Hola Expertos un saludo para todos.
Mi pregunta en principio es para Elsamatilde ya que la macro sobre la cual necesito ayuda es suya, pero si no es posible por las circunstancias que sean pues tal vez alguno de ustedes pueda ayudarme lo cual seria muy de agradecer a cualquiera de todos los expertos, paso al problema:
Tengo esta macro(de Elsamatilde que yo e ajustado a mis necesidades, por tanto no es la original) pero va de maravilla, pero el problema es que necesito que cuando me realice el borrado este sea múltiple, es decir que me borre todas las lineas de la hoja cuyo contenido sea el solicitado en el InputBox pero no la linea completa sino solo las celdas que expongo ya que en las demás celdas hay fórmulas y esas deben quedar intactas(pues esas se borran solas al faltar las celdas borradas con la macro), esta es la macro que tengo:
Sub busco_y_elimino()
'desarrollada por Elsamatilde
Dim n As Range
palabra_a_buscar = InputBox("Ingresar dato de estado de pedido a buscar", "Buscador")
If palabra_a_buscar = "" Then Exit Sub
Set n = Worksheets("Pedidos").Cells.Find(what:=palabra_a_buscar)
If n Is Nothing Then
MsgBox "No he encontrado nada. Lo siento."
Else
MsgBox "Texto encontrado: " & UCase(palabra_a_buscar) & "."
fila = n.Row
sino = MsgBox("¿Deseas eliminar todas las entradas del mismo nombre?", vbYesNo, "Confirmar")
If sino = vbYes Then n.Offset(0, -3) = "" 'n.EntireRow.ClearContents
n.Offset(0, -2) = ""
n.Offset(0, -1) = ""
n.Offset(0, 0) = ""
n.Offset(0, 2) = ""
n.Offset(0, 3) = ""
n.Offset(0, 7) = ""
'n.Value = ""
End If
End Sub
Agradezco de antemano su ayuda ya que no consigo sacar una macro que me solucione el problema ni probando con la grabadora de macros, pues estoy verde en esto de las macros.

1 respuesta

Respuesta
1
Dame algo de tiempo... en un rato te contesto, no finalices aún
Sdos
Elsa
PD) Mientras te invito a visitar mi sitio y conocer las promociones de este mes !
Bien, te adjunto la rutina ajustada según lo que entendí de tu consulta.
Lo que hace ahora es buscar en toda la hoja (estás utilizando Cells) y si encuentra el dato lo borra (solo esa celda) y sigue buscando
Dejé tu mensaje agregando ahora la celda donde se encuentra para que acepte o no.
Pruébala y si responde a lo que necesitas no olvides finalizar la consulta.
Sub busco_y_elimino()
'desarrollada por Elsamatilde
Dim n As Range
palabra_a_buscar = InputBox("Ingresar dato de estado de pedido a buscar", "Buscador")
If palabra_a_buscar = "" Then Exit Sub
Set n = Worksheets("Pedidos").Cells.Find(what:=palabra_a_buscar)
If n Is Nothing Then
MsgBox "No he encontrado nada. Lo siento."
Exit Sub
End If
fila = n.Row
Do
MsgBox "Texto encontrado: " & UCase(palabra_a_buscar) & " en celda: " & n.Address(False, False)
sino = MsgBox("¿Deseas eliminar esta entrada?", vbYesNo, "Confirmar")
If sino = vbYes Then
n = "" 'solo la celda
'n.Offset(0, -2) = ""
'n.Offset(0, -1) = ""
'n.Offset(0, 0) = ""
'n.Offset(0, 2) = ""
'n.Offset(0, 3) = ""
'n.Offset(0, 7) = ""
End If
Set n = Worksheets("Pedidos").Cells.FindNext(n)
On Error Resume Next
Loop While Not n Is Nothing And n.Row <> fila
End Sub
Hola Elsamatilde, bien en primer lugar gracias por tu pronta respuesta y solución.
Te comento que la macro funciona bien pero mi idea como te comente era que eliminase de un solo golpe todas las entradas del mismo signo porque (y esto no te lo dije) pueden ser alrededor de 200 o 300 lineas, y lo que quería evitarme es ejecutar la macro todas esas veces.
Con tu solución me evito eso en parte porque solo tengo que aceptar y pasa a la linea siguiente, pero ya te digo siguen siendo entre 200 o 300 veces las veces que tengo que aceptar para completar el proceso(antes de tu ajuste el trabajo era bastante más tedioso porque tenia que empezar desde el principio de la macro cada vez y escribir siempre la palabra a buscar)con lo cual ahora es bastante menos tedioso pero sigue siendo largo, es por eso que desearía si no es complicarte la vida que al buscar la palabra a eliminar seleccionara dicha búsqueda en todas las lineas y la borrase de un solo golpe.
En espera de tu inestimable ayuda recibe un saludo
Como te indiqué en mi respuesta, dejé tu mensaje... pero podes quitarlo sin inconvenientes para el resto de la rutina.
De ese modo se ejecutará de un solo golpe
Do
n = "" 'solo la celda
'n.Offset(0, -2) = ""
'n.Offset(0, -1) = ""
'n.Offset(0, 0) = ""
'n.Offset(0, 2) = ""
'n.Offset(0, 3) = ""
'n.Offset(0, 7) = ""
Set n = Worksheets("Pedidos").Cells.FindNext(n)
También quedaron inhabilitadas tus líneas donde se limpian otras celdas de la misma fila, podes quitarlas.
Muchísimas gracias Elsamatilde y perdona la falta de atención, ahora va a la perfección, solo que le he dejado mis lineas porque el efecto que yo deseaba es que me eliminara todas las celdas de la linea menos las que tienen fórmula que se borran solas al faltar las borradas.
Me reitero un millón de gracias y si se me ocurre algo más con tu permiso abriré otra consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas