在宏期间,Excel VBA显示对话框锁定在屏幕前面

时间:2013-12-05 15:09:08

标签: excel vba excel-vba

我到处都是徒劳无功的。

我在一个Excel文件(SplitTickets.xlsm)中有一个宏,它循环显示3个单独的Excel文件。 打开SplitTickets时,会出现一个对话框,其中包含一个用于启动宏的按钮。

由于我不希望用户在宏运行时因意外按键或点击而弄乱excel,我希望将对话框放在所有正在打开,修改和关闭的文件之上,并更新标签过程结束时显示。

我尝试将其设置为modal,但由于宏需要选择工作表,单元格和范围,因此对话框modal会阻止正在执行的宏的其余部分。 并且关闭modal会让它在宏观操控的慌乱之下消失。

如何在不转动modal的情况下将此对话框保持在最顶层?

3 个答案:

答案 0 :(得分:3)

您可以使用以下代码。当我不希望用户干扰代码运行时,我会定期使用它。

Sub Testing()

  Application.Screenupdating = False

  Your Code

  'This is very important, or it will remain disabled.
  Application.Screenupdating = true

End sub

这样用户就不会知道后台发生了什么。

Sandesh:)

答案 1 :(得分:3)

将以下行添加到宏的开头:

Application.ScreenUpdating = False

这将关闭您可以看到的“乱七八糟”活动,因此用户不会受到干扰。它还可以让你的宏运行得更快,因为它不再需要在每一步之间重绘屏幕。务必将其重新设置为宏末尾的True

您可能还想使用此选项:

Application.Cursor = xlWait

这会将鼠标光标变为沙漏(或在系统中设置的“等待”光标),以便用户知道宏正在运行。要禁用沙漏,请使用:

Application.Cursor = xlDefault

除此之外,宏应该自动防止用户在运行时干扰纸张。但是,它会在宏运行时保留按键的队列,并在宏完成后输入它们。

答案 2 :(得分:0)

您可以在宏的末尾添加Formname.Show以使其重新出现吗?