在macros期间,Excel VBA显示对话框locking在屏幕前面
我到处寻找这个徒劳的地方。
我在一个Excel文件( SplitTickets.xlsm
)中有一个macros,它通过3个独立的Excel文件循环。 当SplitTickets
打开时,会出现一个对话框,并带有一个button来启动macros。
由于我不希望用户在macros运行时偶然出现按键或点击的问题,所以我想让对话框保持在打开,修改和closures的所有文件的顶部,并更新当过程结束了。
我试着把它设置为modal
但是因为macros需要select图纸,单元格和范围,所以modal
对话框会阻止正在执行的macros的其余部分。 而closuresmodal
会使它在macros观操纵之下消失。
我怎样才能把这个对话框保持在最前面而不会变成modal
?
您可以改用下面的代码。 当我不希望用户干扰代码运行时,我会定期使用它。
Sub Testing() Application.Screenupdating = False Your Code 'This is very important, or it will remain disabled. Application.Screenupdating = true End sub
这样用户不知道在后台发生了什么。
Sandesh 🙂
将以下行添加到您的macros的开始:
Application.ScreenUpdating = False
这将closures你可以看到的“macros观”的活动,所以用户不会试图干涉。 这也将使你的macros运行更快,因为它不再需要在每一步之间重画屏幕。 确保在macros的末尾将其设置为True
。
你也可以使用这个选项:
Application.Cursor = xlWait
这将把鼠标光标变成一个沙漏(或者在系统中设置的任何“等待”光标),这样用户就知道这个macros正在运行。 要禁用沙漏,请使用以下命令:
Application.Cursor = xlDefault
除此之外,macros应自动防止用户在运行时干扰纸张。 但是,它将保持macros运行时所做的按键队列,并在macros完成后input它们。
你可以在macros的末尾添加一个Formname.Show
,使它重新出现吗?