在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 ,使它重新出现吗?