Incluir en macro existen una instruccion de busqueda

Quisiera que me ayudaras con la siguiente macro que ya tengo.

Sub GrabarPacienteNuevo()
    Range("D10") = UCase(Range("D10"))
    Range("D13") = UCase(Range("D13"))
    Range("D18") = UCase(Range("D18"))
    Range("D16") = LCase(Range("D16"))
    Application.ScreenUpdating = False
    Range("D16").Select
    Selection.Copy
    Range("D208").Select
    ActiveSheet.Paste
    Set h1 = Sheets("INGRESAR_CITA")
    Set h2 = Sheets("BASE")
    Dim f As Date
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Range("D200:D204").Copy
    h2.Range("A" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
    h1.Range("D205:D212").Copy
    h2.Range("G" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
    h1.Range("D500").Copy
    h2.Range("T" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=False
    datos = Split(h2.Range("T" & u2), "@")
    col = Columns("U").Column
    For i = LBound(datos) To UBound(datos)
        h2.Cells(u2, col) = datos(i)
        col = col + 1
    Next
    Application.CutCopyMode = False
    MsgBox "El Paciente se ha registrado EXITOSAMENTE.", vbInformation, "Fecha: " & Date
    ActiveWorkbook.Save
End Sub

Esta macro lo que hace principalmente es copiar los datos que estan contenidos en la hoja "INGRESAR_CITA" a la hoja "BASE".

Lo que quisiera ahora agregarle a esta macro es que ANTES de registrar los datos en la hoja "BASE" verifique si ese CLIENTE ya existe. Para ello, tendría que buscar si el dato "D9" que esta registrado en la hoja "INGRESAR_CITA" ya se encuentra grabado en la hoja "BASE" en la columna "C". Si el caso es afirmativo entonces que salga un mensaje que diga "El cliente ya se encuentra registrado en la base de datos. Si desea modificar alguno de sus datos por favor dirijase a la hoja MODIFICAR".

En caso negativo es decir que el cliente no se encuentre registrado en la hoja "BASE" entonces ahi si copia los datos a la hoja "BASE" asi como esta.

1 respuesta

Respuesta
1

Te anexo la macro con los cambios

Sub GrabarPacienteNuevo()
    Range("D10") = UCase(Range("D10"))
    Range("D13") = UCase(Range("D13"))
    Range("D18") = UCase(Range("D18"))
    Range("D16") = LCase(Range("D16"))
    Application.ScreenUpdating = False
    Range("D16").Select
    Selection.Copy
    Range("D208").Select
    ActiveSheet.Paste
    Set h1 = Sheets("INGRESAR_CITA")
    Set h2 = Sheets("BASE")
    Dim f As Date
    Set b = h2.Columns("C").Find(h1.[D9])
    If Not b Is Nothing Then
        MsgBox "El cliente ya se encuentra registrado en la base de datos. Si desea modificar alguno de sus datos por favor dirijase a la hoja MODIFICAR"
    Else
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
        h1.Range("D200:D204").Copy
        h2.Range("A" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        h1.Range("D205:D212").Copy
        h2.Range("G" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        h1.Range("D500").Copy
        h2.Range("T" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=False
        datos = Split(h2.Range("T" & u2), "@")
        col = Columns("U").Column
        For i = LBound(datos) To UBound(datos)
            h2.Cells(u2, col) = datos(i)
            col = col + 1
        Next
        Application.CutCopyMode = False
        MsgBox "El Paciente se ha registrado EXITOSAMENTE.", vbInformation, "Fecha: " & Date
    End If
    ActiveWorkbook.Save
End Sub

Recuerda valorar la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas