Crear Macro para Seleccionar Columna y buscartexto

Necesito crear una macro para seleccionar una columna determinada y buscar dentro de ella un "texto" es decir, un nombre que yo defina, y luego, en la fila donde esta ese nombre buscado se borre toda. He intentado con el grabador, pero no me resulta.
Eso

1 respuesta

Respuesta
1
Te dejo una rutina de ejemplo. Lo que hace es buscar el contenido de cierta dato en col C. El dato lo podes solicitar por InputBox o tomarlo de alguna celda.
sub buscayborra()
dato = sheets(1).range("A2")
Set busca = Sheets("BASES").Range("C:C").Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
If Not IsEmpty(busca) Then  'si no está vacía la variable es que se encontró el dato
busca.entirerow.delete
Else
msgbox "No se encontró el dato buscado"
End If
'se libera la variable
Set busca = Nothing
End Sub
Saludos- No dejes la consulta sin finalizar
Tu macro esta muy buena, funciona bien, pero tengo unas dudas al respecto, cuando pongo un "dato" que no existe, no me aparece ninguna caja de mensaje. Por otra parte quiero que esta macro se repita todas las veces necesarias hasta que se acabe el "dato" de la columna, esto lo intento hacer con loop y bucle, pero no me resulta. Y finalmente si elimino el dato manualmente con la macro (ejecutar la macro hasta que el dato desaparezca de la columna) cuando el dato ya no existe me aparece el error y me manda a depuración, ¿cómo lo hago para que se ejecute hasta que ya no exista el dato en la columna, sin que me mande error?
Muchas Gracias.
De la consulta no quedaba claro si el dato se repetía o no.
Aquí va entonces otra rutina que eliminará todas las ocurrencias de un dato (que se toma de Hoja1).
La col a revisar será la C de la hoja 2. Estas referencias ten´s que ajustar a tu modelo.
Sub MacroEliminaDato()
'desarrollada por Elsamatilde
Dim PrimCoinc, busca
Dim filalibre, fila, ultfila As Integer
dato = Sheets("Hoja1").Range("A2")
'se buscará registros en columna C de la Hoja2
Sheets("Hoja2").Select
ultfila = ActiveSheet.Range("C65536").End(xlUp).Row
'On Error Resume Next
Set busca = Sheets("Hoja2").Range("C2:C" & ultfila).Find(What:=dato, LookIn:=xlValues, LookAt:=xlWhole)
If Not busca Is Nothing Then
Primero = busca.Address
'comienza el bucle
Do
busca.EntireRow.Delete
'continúa la búsqueda
Set busca = Sheets("Hoja2").Range("C2:C" & ultfila).Find(What:=dato, LookIn:=xlValues, LookAt:=xlWhole)
'se repite la rutina hasta volver a la primer dirección guardada. Ahí termina el ciclo
Loop While Not busca Is Nothing 'And busca.Address <> Primero
Else
MsgBox "No se encontr´el dato"
End If
'se libera la variable
Set busca = Nothing

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas