有啥方法可以使用 VBA 更改 Microsoft Access 中表单上的 PopUp 属性?

Posted

技术标签:

【中文标题】有啥方法可以使用 VBA 更改 Microsoft Access 中表单上的 PopUp 属性?【英文标题】:Is there any way to change the PopUp property on forms in Microsoft Access with VBA?有什么方法可以使用 VBA 更改 Microsoft Access 中表单上的 PopUp 属性? 【发布时间】:2020-06-04 16:25:39 【问题描述】:

我想让人们选择以两种方式之一运行 Access 2016 数据库。

1. 单个窗口,选项卡式。这是 Access 中的默认设置,可避免创建一堆单独的窗口。这是通过将表单上的属性“PopUp”设置为 false/no 来实现的。

2.多窗口模式,只有主导航窗体停留在主访问窗口中。

有些人喜欢单窗口选项卡模式,有些人喜欢多窗口模式。我认为只需在“表单加载”中使用 VBA 就可以轻松实现这一点,但是当我尝试 Me.PopUp = True 时,出现错误。

运行时错误“2136”: 要设置此属性,请在设计视图中打开表单或报表。

我有什么办法可以绕过这个限制,用 VBA 修改 Me.PopUp,或者我可以用 VBA 更改的一些其他属性,这将导致表单弹出为新选项卡或基于新窗口的新窗口全局变量设置为 true 还是 false?

【问题讨论】:

【参考方案1】:

为选项卡式文档设置数据库后,使用 OpenForm 的 WindowMode 参数中的 acDialog 参数以弹出模式打开表单或报表。

如果要使用全局变量来测试是否使用popup,在通用模块中声明变量,在主窗体打开时设置,然后在IIf()中使用。

Docmd.OpenForm "MyForm", , , , , IIf(gblMode = "Pop", acDialog, "")

请注意,如果任何代码因运行时错误而中断,全局变量就会失去价值。替代方法是 TempVars 或在永不关闭的表单上设置文本框。

【讨论】:

acDialog 使窗口成为模态窗口,从而防止人们一次打开多个表单。我想要窗口模式的原因是希望可以并排拥有多个窗口的人。感谢您提供有关 TempVars 的提示,但我不知道除了隐藏的文本框之外还有其他全局变量的替代方法,我尽量避免使用它,因为它感觉很乱。 我用 acDialog 打开一个表单没有问题,然后该表单上的一个按钮用 acDialog 打开另一个表单。是的,它们是模态的,只能与顶部交互。我不认为你能得到你想要的一切。

以上是关于有啥方法可以使用 VBA 更改 Microsoft Access 中表单上的 PopUp 属性?的主要内容,如果未能解决你的问题,请参考以下文章

vba中有啥类型的电子表格复选框?

Microsoft Access 导入 vba 文件

如何在 Microsoft Access 的不同上下文中使用 VBA 中的参数?

如何使用 Excel VBA 更改系统默认打印机?

有啥方法可以使用 css [重复] 更改列表样式圆圈的颜色

Excel VBA后期绑定Microsoft DAO 3.6对象库