如何防止用户在显示用户窗体时执行其他操作?

3

如标题所述,我有一个带有宏的Excel文件,在加载时运行。我希望能够使用户在宏运行时无法使用计算机。

这是一个用于数据输入的简单表格。然而,大多数用户只是忽略它,让它在后台运行,同时他们做其他事情。

是否可能在显示用户窗体时,让他们无法在计算机上进行其他操作,强制他们输入数据?

我已经尝试过一切方法,从警报到使他们无法关闭表单,如果他们不输入数据,但迄今为止,什么都没有起作用。


4
以模态框形式展示。 - Comintern
1
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/showmodal-property - user10735198
9
如果可能的话,为什么要阻止用户做任何事?这是一个可怕的想法——你无法知道是否有其他无法中断的进程正在运行。如果我打开一个这样的Excel文件,它会直接被放入回收站,因为这是边缘恶意行为。 - Comintern
5
如果你的应用程序设计需要锁定整个计算机才能运行,那么这表明它是一种需要抛弃的设计。几十年来,应用程序一直被设计为在多任务环境下运行。为了强调这一点,最后一次Windows应用程序可以系统范围内模态是在... Windows 3.1 中。从95年开始,不再可能做到这一点,原因非常充分。请设计你的应用程序以在该环境中优雅地工作,而不是试图劫持操作系统。 - this
3
听起来这似乎是[workplace.se]上的管理问题,而不是程序设计问题。如果用户拒绝正确地完成他们的工作,那么他们需要受到警告并被解雇。 - FreeMan
显示剩余3条评论
2个回答

7

您不能这样做。您的表单位于EXCEL.EXE进程空间中,没有办法告诉Windows EXCEL.EXE只是在执行它的任务,直到EXCEL.EXE自己说出来。

这不是VBA的限制 - 您不能拥有一个进程,它会劫持机器上每个其他进程中的所有消息循环,那是灾难的配方。我不希望操作系统以任何方式允许您这样做。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接