Buscar con el objeto "SET" de excel

Recurriendo de nuevo a su experiencia, me gustaría conocer más de la instrucción SET en la cual deseo implementar en mi proyecto de aprendizaje; donde realizo una búsqueda pero a su vez cuando realice la búsqueda este me presente una alerta si el producto esta activo o no; la búsqueda las realizo de manera perfecta de acuerdo a instrucciones del foro pero no logro añadir si lo encuentra Activo y/o Cancelado lo cual se encuentra descrito en la columna P de mi hoja de acuerdo a código realizo la búsqueda por nombre en la columna C y los carga a unas cajas de texto y es aquí donde quiero que me genera la alerta cuando el producto no esta activo al realizar la búsqueda gracias

  Set pro = Range("C:C").Find(Txt_buscapro)
               If Not pro Is Nothing Then
                   'Si lo encontró. Aquí va tu código
                   'Por ejemplo
                   Txt_Codpro = Cells(pro.Row, pro.Column - 1)
                   Txt_Nompro = Cells(pro.Row, pro.Column)
                   Cmb_Tipopro = Cells(pro.Row, pro.Column + 1)
                   Txt_PrecioPro = Cells(pro.Row, pro.Column + 3)
                   Txt_Observapro = Cells(pro.Row, pro.Column + 2)
                   Cmb_Umedidapro = Cells(pro.Row, pro.Column + 4)
                   Txt_peso = Cells(pro.Row, pro.Column + 5)
                   Txt_mermapro = Cells(pro.Row, pro.Column + 6)
            Else
                MsgBox "No se encontró el dato", vbCritical
                Txt_buscapro = ""
                Txt_buscapro.SetFocus
            End If

2 respuestas

Respuesta
2

Revisa los siguientes vídeos, ahí explico ampliamente el método FIND con ejemplos.

Macros metodo find. Curso de macros - YouTube

Metodo find vba excel. Curso de macros. - YouTube

Recomendación del día:

Excel vba dictionary parte 1 - YouTube

Respuesta
1

Tengo publicados varios videos detallando el uso de Find, Set y cómo evaluar si la búsqueda fue exitosa. Te comparto algunos de ellos.

Todos los libros de ejemplos los podrás descargar desde el Blog (buscarlos por fecha de video)

N° 16: Búsqueda Find

N° 25: Búsquedas. Método Find o VlookUp

N° 29: 3 Métodos de búsqueda en Excel (uso de SET o con uso de fórmulas)

muy agradecido y entusiasmado en el aprendizaje de cada uno de sus videos de lo cual soy suscriptor y fiel seguidor, pero mi duda no queda aclarada debido a que puedo encontrar el dato buscado de acuerdo al método ahora dentro de esa fila si el dato esta cancelado me puede salir la alerta diciendo "producto cancelado " en donde  no se como colocar un ciclo donde una vez encuentre el dato siga recorriendo la fila  me avise si esta cancelado y siga realizando la función de cargar las  cajas de texto los datos están dentro de la columna C que son los nombres y en la columna P esta el dato de Activo o Cancelado... saludos

Si el registro NO se debe rellenar en caso de 'Cancelado en col P, debes agregar una instrucción de control que quedaría así:

Set pro = Range("C:C").Find(Txt_buscapro)
If Not pro Is Nothing Then
    'Si lo encontró. Debe evaluar si está Activo o no
    If Range("P" & pro.Row) = "Activo" Then
        'a continuación el resto de tu código. Por ejemplo
           Txt_Codpro = Cells(pro.Row, pro.Column - 1)
           Txt_Nompro = Cells(pro.Row, pro.Column)
           Cmb_Tipopro = Cells(pro.Row, pro.Column + 1)
           Txt_PrecioPro = Cells(pro.Row, pro.Column + 3)
           Txt_Observapro = Cells(pro.Row, pro.Column + 2)
           Cmb_Umedidapro = Cells(pro.Row, pro.Column + 4)
           Txt_peso = Cells(pro.Row, pro.Column + 5)
           Txt_mermapro = Cells(pro.Row, pro.Column + 6)
    End If
Else
    MsgBox "No se encontró el dato", vbCritical
    Txt_buscapro = ""
    Txt_buscapro.SetFocus
End If

Pero, si de todos modos se va a rellenar la fila y solo necesitas que te 'avise' que está 'Cancelado', sería de este otro modo:

Set pro = Range("C:C").Find(Txt_buscapro)
If Not pro Is Nothing Then
    'Si lo encontró. Envía mensaje en caso de Cancelado en col P
    If Range("P" & pro.Row) = "Cancelado" Then MsgBox "Este registro está Cancelado.", , "Información"
    'a continuación el resto de tu código. Por ejemplo
       Txt_Codpro = Cells(pro.Row, pro.Column - 1)
       Txt_Nompro = Cells(pro.Row, pro.Column)
       Cmb_Tipopro = Cells(pro.Row, pro.Column + 1)
       Txt_PrecioPro = Cells(pro.Row, pro.Column + 3)
       Txt_Observapro = Cells(pro.Row, pro.Column + 2)
       Cmb_Umedidapro = Cells(pro.Row, pro.Column + 4)
       Txt_peso = Cells(pro.Row, pro.Column + 5)
       Txt_mermapro = Cells(pro.Row, pro.Column + 6)
Else
    MsgBox "No se encontró el dato", vbCritical
    Txt_buscapro = ""
    Txt_buscapro.SetFocus
End If

Si no se trata de ninguna de estas opciones, deja una imagen donde se pueda observar qué resultado esperas.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas