Sub MyCopy()
Dim dst As String
Dim pws As Worksheet, cws As Worksheet
Dim lc As Long, c As Long, nc As Long
Dim lr As Long
Dim hdr As Variant
' Set prior worksheet object
Set pws = Sheets("Prior")
' Prompt them to enter name of sheet to copy to and see if it exists
dst = InputBox("Enter the exact name of current sheet you want to paste to")
On Error GoTo no_sheet
Set cws = Sheets(dst)
On Error GoTo 0
Application.ScreenUpdating = False
' Find last column with data in row 1 of prior ws
lc = pws.Cells(1, Columns.Count).End(xlToLeft).Column
' Find last row with data on prior ws
lr = pws.Range("A1").SpecialCells(xlLastCell).Row
pws.Activate
' Loop through all columns on prior ws
For c = 1 To lc
' Get column header from prior ws
hdr = pws.Cells(1, c)
' Find which column hdr is found on current ws
On Error GoTo err_chk
nc = cws.Rows("1:1").Find(hdr, LookIn:=xlValues, LookAt:=xlWhole).Column
On Error GoTo 0
' Copy data if value found
If nc > 0 Then
pws.Range(Cells(2, c), Cells(lr, c)).Copy cws.Cells(2, nc)
Else
' Message if cannot find column
MsgBox "Cannot find matching header " & hdr & " on Current sheet", vbOKOnly
End If
Next c
Application.ScreenUpdating = True
MsgBox "Copy complete!", vbOKOnly
Exit Sub
' Error if no sheet exits
no_sheet:
MsgBox "No sheet with name " & dst & " exists!", vbOKOnly, "ERROR!"
Exit Sub
' Error handling if cannot find column
err_chk:
nc = 0
Err.Clear
Resume Next
End Sub