RE:Problema con formularios
Hola Fernando, te indico dos formas de hacerlo. El usar una u otra dependerá de tus necesidades:
Con esta, un campo tomará el mismo valor del campo del registro anterior pero según el órden de introducción en el Formulario, no del órden que ese registro tomará después en la tabla. Me explico: Si en la Tabla tienes establecido un Indice que ordene los campos alfabéticamente en Ascendente, tu creas un nuevo registro y al grabarse en la Tabla no se queda el ultimo sino que puede pasar a otra posición. DLast coge el valor del campo del último registro introducido aunque en la tabla visualmente ya no sea el último.
Private Sub Text1_Exit(Cancel As Integer)
If IsNull(Text1) And Me.NewRecord Then
Text1 = DLast("NombreCampoTabla", "NombreTabla")
End If
End Sub
Con esta otra, siempre cogeremos el valor del campo del registro que se encuentre físicamente en la posición final de la Tabla, sea o no sea el último introducido; en este caso se necesita que la tabla tenga un campo Autonumérico tipo "Id":
Private Sub Text1_Exit(Cancel As Integer)
If IsNull(Text1) And Me.NewRecord Then
Text1 = DLookup("NombreCampoTabla", "NombreTabla", "Id=" & DMax("Id", "NombreTabla"))
End If
End Sub
En ambos casos, pulsando Intro sin poner nada en el Campo, éste tomará el valor del campo del registro anterior, pero permite escribir un nuevo valor cuando ya no necesitemos que se repita. Posiblemente en tu caso sea la primera opción la que te valga.
Espero que esto se sirva para resolver tu problema. Un saludo
Enrique