Mas o menos la idea es esta. En el codigo de errores de todos los formularios etc, recoge el error mediante: Ejemplo: Private Sub F1Ayuda_Click() On Error GoTo Err_Comando44_Click MuestraAyuda Exit_Comando44_Click: Exit Sub Err_Comando44_Click: 'Aqui llamo a la funcion errores Errores Err.Number, Me.Name Resume Exit_Comando44_Click End Sub 'Esta funcion iría en un módulo. 'Recibe como parametros el numero del error y el formulario origen del error Function Errores(NumeroError As Double, Formulario As String) Dim rst As Recordset Dim SQL As String 'Aqui ya puedes tratar los errores como quieras. ' Tienes una tabla llamada TblErrores...pues abrir el ' recordset de la tabla. ' Esta tabla puedes construirla con dos campos, por ejemplo ' FldCodigoError -> Double ' FldMensajePersonalizadoError ->String SQL = "Select * from TblErrores Where FldCodigoError=" & NumeroError Set rst = CurrentDB.OpenRecordset(SQL, dbOpenDynaset) If rst.EOF = True Then 'No tienes recogido en la tabla dicho error...pon el mensaje que quieras MsgBox "Aviso desde el formulario:" & Formulario & Chr(13) _ & "Nº: " & NumeroError & " ->" & Err.Description, vbInformation + vbOKOnly, "AVISO" Else 'Tienes mensaje personalizado MsgBox "Aviso desde el formulario:" & Formulario & Chr(13) _ & Rst("FldMensajePersonalizadoError"), vbInformation + vbOKOnly, "AVISO" End If rst.Close Set rst = Nothing End Function