Macro para buscar valores de acuerdo con varios criterios

Mi consulta tiene que ver con una plantilla para buscar valores de acuerdo con varios criterios.

Lo primero que hace la rutina es buscar el valor de la celda K1 en la columna K:K, cuando encuentra el valor, debe comparar los valores contiguos a ese valor en las columnas L:L y M:M, es decir, debe varificar si los valores en las celdas son iguales. Si son iguales, debe borrar la fila, de lo contrario debe dejar la fila.

He logrado parte de lo que debo conseguir pero tengo algunos problemas, aquí el código:


Sub buscador_3()
Dim mihoja As String, Donde As String
Dim Quebusco As String
Dim resulta As Object
Dim ubicado As String
'la variable mihoja guarda la hoja donde se hará la búsqueda
mihoja = "DESPACHO CENDIS"
'la variable Donde guarda el rango donde debe efectuarse la búsqueda
Donde = "K:K"
'la variable Quebusco guarda el dato a buscar que se encuentra en la celda B2
Quebusco = Range("K1").Value
'se crea un objeto con el resultado de la función Find
Set resulta = Sheets(mihoja).Range(Donde).Find(Quebusco, LookIn:=xlValues, LookAt:=xlWhole)
If resulta Is Nothing Then
MsgBox "No se encontró el dato", vbCritical, "NO ENCONTRADO"
ElseIf resulta.Offset(0, 1).Value = resulta.Offset(0, 2).Value Then
resulta.EntireRow.Delete
Else
MsgBox "Los valores no coinciden por ello no se elimina la fila", vbCritical, ".:::Mensaje:::."
resulta.Offset(0, 2).Select
End If
'se limpia la variable
Set resulta = Nothing
End Sub


El primer problema está en la línea

If resulta Is Nothing Then
MsgBox "No se encontró el dato", vbCritical, "NO ENCONTRADO"

Cuando no encuentra el valor debería aparecer el mensaje anterior, pero no está sucediendo; aparece el mensaje que debe aparecer cuando los valores no coinciden, es decir:

MsgBox "Los valores no coinciden por ello no se elimina la fila", vbCritical, ".:::Mensaje:::."

Lo positivo es que cuando encuentra el código, y los valores de las celdas contiguas son iguales, elimina la fila, que es mi objetivo principal.

Me gustaría mucho que me ayudaras a mejorar el código, sé que no falta mucho pero la verdad no encuentro la solución.

Gracias por tu ayuda y lamento mucho lo de tu padre!

1 respuesta

Respuesta
1

 H o l a:

Te anexo la macro actualizada:

Sub buscador_3()
    Dim mihoja As String, Donde As String
    Dim Quebusco As String
    Dim resulta As Object
    Dim ubicado As String
    'la variable mihoja guarda la hoja donde se hará la búsqueda
    mihoja = "DESPACHO CENDIS"
    'la variable Donde guarda el rango donde debe efectuarse la búsqueda
    Donde = "K2:K" & Sheets(mihoja).Range("K" & Rows.Count).End(xlUp).Row
    'la variable Quebusco guarda el dato a buscar que se encuentra en la celda B2
    Quebusco = Range("K1").Value
    'se crea un objeto con el resultado de la función Find
    Set resulta = Sheets(mihoja).Range(Donde).Find(Quebusco, LookIn:=xlValues, LookAt:=xlWhole)
    If resulta Is Nothing Then
        MsgBox "No se encontró el dato", vbCritical, "NO ENCONTRADO"
    Else
        If resulta.Offset(0, 1).Value = resulta.Offset(0, 2).Value Then
            resulta.EntireRow.Delete
        Else
            MsgBox "Los valores no coinciden por ello no se elimina la fila", vbCritical, ".:::Mensaje:::."
            resulta.Offset(0, 2).Select
        End If
    End If
    'se limpia la variable
    Set resulta = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas