Entra al Editor, selecciona el objeto llamado Hoja2 y allí copia lo siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'se controlan cambios en col C a partir de fila 10
Set hox = Sheets("Hoja1") 'ajustar nombre de hoja
x = hox.Range("A" & Rows.Count).End(xlUp).Row
If Target.Column = 3 And Target.Row >= 10 Then
If Target.Value <> "" Then
Target.Offset(0, 1) = "": Target.Offset(0, 2) = ""
Set busco = hox.Range("A10:C" & x).Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
MsgBox "NO se encuentra este código en Hoja1", , "Atención"
Else
If busco.Offset(0, 1).Text = "" Or busco.Offset(0, 2).Text = "" Then
MsgBox "Al registro encontrado le faltan datos.", , "Atención"
Else
Target.Offset(0, 1) = busco.Offset(0, 1)
Target.Offset(0, 2) = busco.Offset(0, 2)
End If
End If
End If
End If
End Sub
Tal como quedó, te mostrará el mensaje de que faltan datos cuando se cumpla el 'O' tal como solicitaste.
Pero si quieres que te muestre el dato que sí está, quizás sea solo nombre o solo puesto, además del mensaje, debieras dejar el código de este modo:
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'se controlan cambios en col C a partir de fila 10
Set hox = Sheets("Hoja1") 'ajustar nombre de hoja
x = hox.Range("A" & Rows.Count).End(xlUp).Row
If Target.Column = 3 And Target.Row >= 10 Then
If Target.Value <> "" Then
Target.Offset(0, 1) = "": Target.Offset(0, 2) = ""
Set busco = hox.Range("A10:C" & x).Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
MsgBox "NO se encuentra este código en Hoja1", , "Atención"
Else
If busco.Offset(0, 1).Text = "" Or busco.Offset(0, 2).Text = "" Then
MsgBox "Al registro encontrado le faltan datos.", , "Atención"
End If
If busco.Offset(0, 1) <> "" Then Target.Offset(0, 1) = busco.Offset(0, 1)
If busco.Offset(0, 2) <> "" Then Target.Offset(0, 2) = busco.Offset(0, 2)
End If
End If
End If
End Sub
* Te invito a mirar los videos N° 45 al 47 de mi canal donde se tratan los Eventos de Hoja.
Sdos.