【发布时间】:2018-05-03 15:03:46
【问题描述】:
我在 Access 2010 中运行了以下代码 On Lost Focus 事件,没有任何问题。
Dim strSpell
strSpell = txtMyField
If IsNull(Len(strSpell)) Or Len(strSpell) = 0 Then
Exit Sub
End If
With txtMyField
.SetFocus
.SelStart = 0
.SelLength = Len(strSpell)
End With
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdSpelling
DoCmd.SetWarnings True
升级到 O365 (Access 2016) 后,拼写检查没有问题,除非有多个拼写更正。如果用户选择全部更改或更改超过 1 个字 Access crash 并且用户需要重新启动程序。我试图更改代码以运行 On Exit 事件,但没有帮助。我也反编译了数据库,没有发现错误。
我可以运行拼写检查的唯一方法是使用功能区上的拼写检查。我隐藏了功能区以防止用户乱来,所以这个选项不起作用。另外,我想将拼写检查限制在一个字段中,并在用户退出该字段后强制执行。
我猜测 Access 正在崩溃,因为不止一次更正再次触发该事件,并且由于拼写检查已经在运行程序崩溃。知道如何解决吗?
评论的更新说明
- 在我的测试中,我发现当您按 Enter 几次时, 在字段中输入,它会导致程序崩溃。
- 文本字段为长文本
- 表单域绑定到文本域
【问题讨论】:
-
我怀疑它是否相关,但我会尝试将
IsNull(Len(strSpell))更改为IsNull(strSpell) -
你是在txtField的或者Form的LostFocus事件中运行的
-
此代码在直接 Access 2016 中对我来说工作正常,在 LostFocus 事件和命令按钮单击事件中都有多个错误。我建议尝试办公室维修
-
我在绑定表单 txtField 事件中运行代码,而不是在表单事件中。办公室维修未能解决问题。
-
我忘了说它是长文本字段。我在一个新数据库中运行代码,表单中有一个表和一个字段。当我运行代码时,我遇到了同样的问题。从功能区运行拼写检查工作正常,没有错误或数据库崩溃。
标签: ms-access vba office365 spell-checking ms-access-2016