首页 > 解决方案 > Application.forms.Count 有时不准确

问题描述

我一直在使用 Application.forms.Count 来测量打开的表单数量,并且大多数情况下,此功能都可以正常工作。然而,每隔一段时间,计数就会出错。

当我在 MsgBox 中查看金额时,Access 认为打开了 2 个表单,而很明显只有 1 个是打开的。我在我的 Form_Unload 方法上运行了这个,因为只有当它是最后一个仍然打开的表单时,它才应该关闭。我已确保执行此操作时没有其他 Access 实例正在运行,并且没有打开任何弹出窗口或模式。

Dim Form As Double

Form = Application.forms.Count
MsgBox Form

If Form = 1 Then
'Nothing, form closes
DoCmd.ShowToolbar "Ribbon", acToolbarYes
Else
MsgBox "You cannot close this form right now."
cancel = True
End If
End Sub 

如前所述,这段代码在大多数情况下确实有效,但当计数错误发生时,它是一个主要障碍,我想找出导致它的原因。

标签: ms-accessvba

解决方案


使用 (Debug.Print Forms(0).Name 和 Debug.Print Forms(1).Name),我发现我打开的表单不知何故复制了自己(尽管只有一个版本的表单在屏幕)。虽然我不知道这是怎么发生的,但简单地重新启动 MS Access 将消除重复。我将添加此补充 if 语句以防止将来发生这种情况:

If formCount = 1 Then
...
Else
 If Forms(0).Name = Forms(1).Name Then
 'The duplication error is happening again
 DoCmd.Close "FormNameHere"
 End If
End If

推荐阅读