我有一个用于查找的数据库,只是偶尔进行编辑。为了避免意外的更改,我正在努力弹出确认编辑的提示。
数据库包含一个表,大约有 7k 条记录,没有表单。
我有什么:
=ConfirmEdit()
ConfirmEdit()
是非类模块中的 VBA 函数:Option Compare Database
Public Function ConfirmEdit()
If MsgBox("Are you sure you want to make this change?", vbQuestion + vbYesNo, "Confirm Edit") = vbNo Then
DoCmd.RunCommand acCmdUndo
End If
End Function
尽管实现了预期的行为,但当用户取消编辑时它会显示警告。
据我所知,我不能使用 Me 关键字,因为代码不在类模块内执行类似
Me.Undo
的操作。
有什么解决方案不引发该错误或隐藏它吗?
据我所知,您只能通过在宏中使用 RaiseError 来取消编辑。首先创建以下
Before Change
事件宏:
然后你可以创建你的函数:
Public Function ConfirmEdit()
ConfirmEdit = False
If MsgBox("Are you sure you want to make this change?", vbQuestion + vbYesNo + vbDefaultButton2, "Confirm Edit") = vbYes Then
ConfirmEdit = True
End If
End Function
在此示例中,我将默认按钮设置为“否”,但您可以选择所需的按钮。现在当您去更改记录时会发生什么,您将按照原始示例收到以下提示:
当您单击“否”时,您会收到一条更友好的消息,如下所示:
请注意,您可以更改该消息中的文本。
我知道它不能解决您的第二条消息的问题,但这是取消编辑的更简洁的方法。不幸的是,您还需要按
Escape
键才能撤消更改。
最后一点,您还应该为
Before Delete
事件做类似的事情。