Para mejorar macro que me habías enviado
quiero que cuando no encuentre los datos G47 Y M 43 en BDCOMPRAS me envíe un mensaje que rebice bien los datos y envíe los datos de G43,G45,G47,G49,G51,G53,G55,G57,G59,M43,M45,M47,M49,M51,M53,M55,M57,M59 en hojaregistro a BDCOMPRAS y los coloque desde A2 hasta R2
todo lo hago adaptando tus macros a lo que necesito según la lógica de lo que hacen
Sub pasardatos()
Dim Rango As Range
Dim DireccionPrimera As String
Dim BusquedaTerminada, DatosEncontrados As Boolean
Dim CeldaG47, CeldaM43
CeldaG47 = Worksheets("HOJAREGISTRO").Cells(47, "G")
CeldaM43 = Worksheets("HOJAREGISTRO").Cells(43, "M")
If CeldaG47 <> "" And CeldaM43 <> "" Then
DatosEncontrados = False
Set Rango = Worksheets("BDCOMPRAS").Range("C:C").Find(CeldaG47)
If Not Rango Is Nothing Then
DireccionPrimera = Rango.Address
BusquedaTerminada = False
Do
If Worksheets("BDCOMPRAS").Cells(Rango.Row, "J") = CeldaM43 Then
MsgBox ("Los datos ya están registrados")
DatosEncontrados = True
BusquedaTerminada = True
End If
Set Rango = Worksheets("BDCOMPRAS").Range("C:C").FindNext(Rango)
If Rango.Address = DireccionPrimera Then BusquedaTerminada = True
Loop Until BusquedaTerminada
End If
If Not DatosEncontrados Then
Range("G43,G45,G47,G49,G51,G53,G55,G57,G59,M43,M45,M47,M49,M51,M53,M55,M57,M59").Select
Selection.Copy
Sheets("BDCOMPRAS").Select
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("F2").Select
Sheets("HOJAREGISTRO").Select
Range("H59").Select
End If
Else
MsgBox ("Falta algún dato")
End If