Macro que mediante un código busque y elimine una fila

Alguien que me ayude con esta macro por favor.

Quiero una macro que mediante un código alojado en la celda B2 hoja1 busque en la matriz hoja2 columna A y si encuentra el código mencionado mas arriba pregunte si quieres eliminar el registro y si presiono aceptar se elimine la fila donde se encuentra el código mencionado anteriormente y si el registro se elimina diga que el registro fue eliminado.

1 Respuesta

Respuesta
1

H o l a 

Deseas que se elimine el dato encontrado o toda la fila

Me gustaría que sea la fila para que no queden espacios vacíos entre registros, pero si hay otra manera con el mismo resultado lo puedes hacer.

Gracias por dedicar su tiempo a ayudar a los demás y más con la rapidez que usted responde. Muchas gracias.

Te paso la macro

Sub busca_elimina()
'//Por Adriel Ortiz Mangia
'
Dim lista As New Collection
'
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
'
dato = h1.[B2]
If dato = "" Then
MsgBox "captura un dato en B"""
Exit Sub
End If
'
u = h2.Range("A" & Rows.Count).End(xlUp).Row
'
For i = 2 To u
    If h2.Cells(i, "A") = dato Then
    lista.Add i
    End If
Next i
cf = MsgBox("Desea eliminar el dato", vbInformation + vbYesNo, "AVISO")
If cf = vbYes Then
For i = lista.Count To 1 Step -1
    Rows(lista(i)).Delete
Next
End If
MsgBox "Registro eliminado con éxito", vbInformation
End Sub

Para finalizar hay 2 opciones Excelente o bueno saludos!

Va con algunos ajustes

Sub busca_elimina()
'//Por Adriel Ortiz Mangia
'
Dim lista As New Collection
'
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
'
dato = h1.[B2]
If dato = "" Then
MsgBox "captura un dato en B2"
Exit Sub
End If
'
u = h2.Range("A" & Rows.Count).End(xlUp).Row
'
For i = 2 To u
    If h2.Cells(i, "A") = dato Then
    lista.Add i
    End If
Next i
cf = MsgBox("Desea eliminar el dato??", vbInformation + vbYesNo, "AVISO")
If cf = vbYes Then
    For i = lista.Count To 1 Step -1
        Rows(lista(i)).Delete
    Next
    MsgBox "Registro eliminado con éxito", vbInformation
End If
End Sub

Muchas gracias por la ayuda y por dedicar su tiempo.

Mucho éxitos.

Disculpa mi molestia.

La macro me pregunta si deseo eliminar el dato y si acepto me dice que el dato se elimino con éxito "Todo perfecto ahí", pero si reviso la hoja2 el registro sigue ahí "no se elimino"

espero no molestarte.

Ahí va con los ajustes

Sub busca_elimina()
'//Por Adriel Ortiz Mangia
'
Dim lista As New Collection
'
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
'
dato = h1.[B2]
If dato = "" Then
MsgBox "captura un dato en B2"
Exit Sub
End If
'
u = h2.Range("A" & Rows.Count).End(xlUp).Row
'
existe = False
For i = 2 To u
    If h2.Cells(i, "A") = dato Then
        existe = True
        lista.Add i
    End If
Next i
If existe Then
    cf = MsgBox("Desea eliminar el dato??", vbInformation + vbYesNo, "AVISO")
    If cf = vbYes Then
    For i = lista.Count To 1 Step -1
        h2.Rows(lista(i)).Delete
    Next
    MsgBox "Registro eliminado con éxito", vbInformation
    End If
Else
MsgBox "No se encontró el codigo"
Exit Sub
End If
If IsNumeric(dato) Then dato = Val(dato)
End Sub

Adriel, muchísimas gracias la macro funciona bien ahí, pero para que funcione perfecto podrías poner que no diferencie minúscula de mayúscula.

Por ejemplo si en la hoja B2 tengo el código siguiente "codigo100" y en la base de datos tengo "CODIGO100" en este ejemplo la macro no encuentra "codigo100" porque esta en minúscula.

Me gustara que reconozca el código aunque uno este en minúscula y otro en mayúscula.

Creo que con esto su macro quedara perfecta.

Dime si requieres que abra otra pregunta?

De ante mano muchas gracias por su dedicación.

Si, crea una nueva petición y me contestas, si te gustaría como segunda opción escribir el numero y realice la búsqueda excluyendo la palabra "CODIGO". Me indicas si deseas la primera o segunda opción.

Has este cambio en esta línea, y no tendrás problemas con las minúsculas y mayúsculas

If h2.Cells(i, "A") = dato Then

pon así

If h2.Cells(i, "A") = UCase(dato) Then

y ahorramos mas preguntas saludos!

Y borra esta línea

If IsNumeric(dato) Then dato = Val(dato)

Realice los mismos pasos que dices y no funciono, anteriormente funcionaba si el código a buscar era el siguiente "aguacate16" y en la base de datos aparecía el mismo código "aguacate16" en dicho caso funcionaba bien, pero después de reemplazar la linea de código por esta

If h2.Cells(i, "A") = UCase(dato) Then

ahora me dice que no existe.

Realmente me gustaría que reconozca el código de diferentes manera por ejemplo: Mango12, REPDOM05, computadora18, 160-Carros, etc.

Si es muy tedioso o no se puede me conformo que reconozca por lo menos los siguientes.

Ejemplo de codigos: Avion20, ABCD150 y elefante7

osea que el código contenga texto ya sea minúscula, mayúscula o mixto seguido de un valor numérico.

Espero  que mi preguntas no sen muy molestas.

Nuevamente gracias por todo lo que haz hecho para ayudarme.

Crea una nueva pregunta y vemos una solución saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas