Haber si te sirve esta macro
Sub Busqueda_Con_ConsultaV()
'
' Aplica para el rango "F25:L25"
'
Application.ScreenUpdating = False
Set Rng = Range("F25")
Rng.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;3;FALSO)"
Rng.Offset(0, 1).Select
Selection.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;4;FALSO)"
Rng.Offset(0, 2).Select
Selection.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;5;FALSO)"
Rng.Offset(0, 3).Select
Selection.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;6;FALSO)"
Rng.Offset(0, 4).Select
Selection.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;7;FALSO)"
Rng.Offset(0, 5).Select
Selection.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;8;FALSO)"
Rng.Offset(0, 6).Select
Selection.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;9;FALSO)"
Range("K7").Select
Application.ScreenUpdating = True
End Sub
Sub LIMPIA()
'
' Limpia rango "F25:L25"
'
Range("F25:L25").ClearContents
Range("K7").Select
End Sub
Sub Copiadodefactura()
'
' Esta macro es para que no des click por equivocacion en agregar y vuelvas a copiar los datos dela busqueda en tu registro (COMPRA_LISTA)
'
Set Rng = Range("F25")
If Range("F25") <> "" Then
If Rng.FormulaLocal = "=CONSULTAV($K$7;COMPRAS_LISTA!$J:$R;3;FALSO)" Then
MsgBox "No puedes copiar un resultado de busqueda, el valor ya existe en la COMPRAS_LISTA", vbCritical, "ERROR AL INGRESAR DATOS"
Else
' Aqui va tu codigo de copiado
End If
End If
End Sub
La macro "Cosulta_Con_ConsultaV" es para agregar en tu linea de factura rango("f25:L25") para que se consulte desde tu celda "K7"
La macro "Limpiar"
Es para que te limpie el rango("F25:L25")
Y la ultima macro "Copiadodefacturas" seria para combinar con tu macro de copiado para que no ingreses por error en tu registro una busqueda previa...
'
Espero sea esto lo que buscas =)