Segun las formulas editadas por ti haces referencia a una hoja Formulario Precio que no esta activa y estas trabajando en una hoja DBase
No necesitas seleccionar el rango de destino solo la primera celda
Te sugiero trabajar con nombres de rango y no con definición de rangos
Sub COPIARVALORPRECIO()
' COPIARVALORPRECIO Macro
Range("C3:C2000").Select
ActiveWorkbook.Names.Add Name:="precio", RefersToR1C1:= _
"=Sheet1!R3C3:R2000C3"
Selection.Copy
Range("O3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
End Sub
Un saludo