我到处都是徒劳无功的。
我在一个Excel文件(SplitTickets.xlsm
)中有一个宏,它循环显示3个单独的Excel文件。
打开SplitTickets
时,会出现一个对话框,其中包含一个用于启动宏的按钮。
由于我不希望用户在宏运行时因意外按键或点击而弄乱excel,我希望将对话框放在所有正在打开,修改和关闭的文件之上,并更新标签过程结束时显示。
我尝试将其设置为modal
,但由于宏需要选择工作表,单元格和范围,因此对话框modal
会阻止正在执行的宏的其余部分。
并且关闭modal
会让它在宏观操控的慌乱之下消失。
如何在不转动modal
的情况下将此对话框保持在最顶层?
答案 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
以使其重新出现吗?