我在MS Access表单的文本框的AfterUpdate事件中添加了以下代码:

Private Sub txtComments_AfterUpdate()
With Me!txtComments
    .SetFocus
    If Len(.Value) > 0 Then
        DoCmd.SetWarnings False
        .SelStart = 1
        .SelLength = Len(.Value)
        DoCmd.RunCommand acCmdSpelling
        .SelLength = 0
        DoCmd.SetWarnings True
    End If
End With
End Sub


用户退出该字段时,将运行拼写检查。它部分起作用。它打开拼写检查对话框,并找到第一个错误。问题是,当您单击“忽略”,“更改”等以处理/修复拼写错误时,代码失败,并出现以下错误框:

“为此字段设置为BeforeUpdate或ValidationRule属性的宏或函数正在阻止Microsoft Office Access在该字段中保存数据。”

我尝试在拼写检查代码之前添加保存记录的代码:

DoCmd.DoMenuItem acFormBar,acRecordsMenu,acSaveRecord 、、 acMenuVer70
DoCmd.DoMenuItem acFormBar,acRecordsMenu,5,acMenuVer70

但这并没有解决。

最佳答案

此代码用作On Exit事件(而不是After Update)。

Private Sub txtComments_Exit(Cancel As Integer)
With Me!txtComments
    .SetFocus
    If Len(.value) > 0 Then
        .SelStart = 1
        .SelLength = Len(.value)
        DoCmd.RunCommand acCmdSpelling
        .SelLength = 0
    End If
End With
End Sub

09-27 06:35