Don倾向于在两个监视器上工作,并在同一Excel实例上打开多个工作簿。他还最大化了自己的窗户。 (他形容自己是“一枪一看”的家伙。)最近,当Don完成打开模态对话框的操作后,该框在工作簿的后面打开,这使他无法查看对话框或与之交互。它。他想知道是否有办法使模式对话框显示在工作簿的前面。

在回答之前,应该指出对话框可以有两种类型:模式对话框和无模式对话框。无模式对话框实际上是独立于其所属程序的对话框。这种对话框的一个很好的例子是“查找和替换”对话框。另一方面,模式对话框(Don遇到问题的对话框)

必须响应或关闭该对话框,然后才能继续使用该对话框所属的程序。

目前尚不清楚Don的问题是Excel本身生成的模式对话框,还是是Don可以控制的宏所生成的对话框。如果是前者,那么将无能为力。对话框的分层位置完全由程序(和创建它的程序员)控制。换句话说,需要进行代码更改才能使对话框显示在工作簿顶部而不是在工作簿下面。

了解在某些情况下该问题可能不是由于Excel编程问题引起的。可能是您在系统上运行了第三方应用程序,这会影响对话框及其父窗口的分层。在这种情况下,典型的罪魁祸首是驻留内存的实用程序,它们会强制自己始终出现在屏幕上其他任何内容的顶部。查看这是否是罪魁祸首的唯一方法是禁用此类实用程序的加载,并在Excel中显示模式对话框。如果行为恢复正常,则说明问题的根源。

但是,如果是这种情况,则对话框是由Don Don开发的宏生成的,那么解决方案是调整生成模式对话框的代码。 (在Excel宏中,通常通过用户窗体来实现这些类型的对话框。)

通过在启动窗体中手动放置用户窗体,可以解决在多屏幕场景中放置用户窗体的问题。例如,您可以对此使用一些变体:

Load UserForm1 UserForm1.StartUpPosition = 0 UserForm1.Top = Application.Top + 25 UserForm1.Left = Application.Left + 25 UserForm1.Show

您可能需要试验一下放置位置,但是需要将StartUpPosition属性设置为0,以便VBA知道您要手动定位用户窗体。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13349)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。