What i did in one of my databases is i placed checkboxes in front of the textfields.
If the checkbox before a textfield is checked by the user then that value is copied to the new record.
This way the user can choose wich fields to populate with the value of the last record, Preventing them having to type the value again.
Code:
If CheckBoxName = True Then
Me.MyTextField = !MyTextField
Else
Me.MyTextField = ""
End If
Works fine for me (and my users) 
Ps : first make a button for creating a new record of course, then put above code below that (and edit the names of the checkbox and textField offcourse)
Ill paste my whole code below
Code:
Private Sub knpNieuwRecord_recall_Click()
DoCmd.GoToRecord , , acNewRec
With Me.RecordsetClone
.MoveLast
If slvMerk = True Then
Me.fldMerk = !Merk
Else
Me.fldMerk = ""
End If
If slvConfig = True Then
Me.fldConfigNummer = !ConfiguratieNummer
Else
Me.fldConfigNummer = ""
End If
If slvDatumVastzetten = True Then
Me.fldDatumUitvoer = !DatumUitvoer
Else
Me.fldDatumUitvoer = ""
End If
If slvChef = True Then
Me.fldTekenbevoegdeChef = !TekenbevoegdeChef
Else
Me.fldTekenbevoegdeChef = ""
End If
If slvArtikel = True Then
Me.fldArtikel = !Artikel
Else
Me.fldArtikel = ""
End If
If slvSerienummer = True Then
Me.fldSerieNummer = !SerieNummer
Else
Me.fldSerieNummer = ""
End If
If slvAfgifteUitlening = True Then
Me.kzlAfgifteUitlening = !AfgifteUitlening
Else
Me.kzlAfgifteUitlening = ""
End If
Me.fldPnummer = !Pnummer
Me.fldAfdeling = !Afdeling
Me.fldAchternaam = !Achternaam
Me.fldLetters = !Letters
Me.fldToestelNummer = !Toestelnummer
If Me.Form.Dirty = True Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End If
MsgBox "Uitvoerbon opgeslagen"
Exit Sub
End With
End Sub
Didnt have time to edit the names so you can understand them better, sorry