Access VBA: No hacer modificaciones hasta que se de click en Guardar.

Otro dia mas de programación, cabe recalcar que esto me dió un poco de dolor de cabeza..
El modificar datos y navegar en otros records automaticamente guardaba datos sin haber dado click en el boton de salvar el record, Para evitar dichos cambios que muchas veces podrian ser accidentales, agregue el siguiente codigo a todos los botones menos el de guardar:

If Me.Dirty Then
MsgBox “Cambios no realizados, Favor de dar click en Guardar antes de navegar”, vbExclamation, “buhorus: Cambios no Guardados”
Me.Undo
End If

Asi cuando diera click en cualquier boton despues de algun cambio, me apareciera un mensaje diciendo “Cambios no realizados, Favor de dar click en Guardar antes de navegar .



If Me.Dirty Then
MsgBox “Cambios no realizados, Favor de dar click en Guardar antes de navegar”, vbExclamation, “buhorus: Cambios no Guardados”
Me.Undo
End If

Access VBA: Generador de rango de datos

He decidido tomar notas de todo lo que voy aprendiendo en cuanto al diseño del proyecto buhoruS, el cual es una base de datos diseñada en Access, VBA, y XML.
Para empezar estas notas, pondre lo que me partió mas el coco.. El generador de almacenes.
Este funciona de tal manera que en un textbox asignas un numero del valor (LETRA) (Numero) (Numero) (Numero) .. ejemplo: A001 y en otro field asignar el rango final: A005, a lo cual este generara 5 datos: A001, A002, A003, A004, A005.
Este VBA lo deben poner en el boton que se llamara GENERAR.

Private Sub Command5_Click()
On Error GoTo Err_Command5_Click

Set db = CurrentDb
Set rs = db.OpenRecordset(“Almacenes”)
For x = Val(Right(Me!Data1, 3)) To Val(Right(Me!Data2, 3))
rs.AddNew
rs!Almacen = Left(Me!Data1, 1) & String(3 – Len(x), “0”) & x
rs.Update
Me.Refresh
Next
Exit_Command5_Click:
Exit Sub

Err_Command5_Click:
MsgBox “Ha sucedido un Error, posiblemente usted introdujo un campo que a existe, una secuencia imposible. Asegurese de crearlo de la siguiente manera A001 – A005..”, , “buhoruS dice:”
End Sub

Explicaciones:
Set rs = db.OpenRecordset("Almacenes") “Almacenes” es la tabla que almacena todos los datos.

Val(Right(Me!Data1, 3)) Data1 es el textbox del rango inicial.
Val(Right(Me!Data2, 3)) Data2 es el textbox del rango final.

Espero poder a ayudar a mas de 1 con estas notas.