在多个监视器上居中用户窗体

我在网上search了一段时间,我find了一些解决scheme,但没有一个似乎帮助我。

我在Excel 2010中有一个用户窗体,我想在Excel窗口中居中。 我有双显示器,似乎总是在两台显示器之间。 我知道有些属性可以编辑,比如StartUpPosition等等,来控制它去哪里,但是看起来改变这些参数什么都不做。 这是我在网上find的代码,许多用户certificate他们为他们工作。 我的表单被命名为“HighlightForm”

Private Sub HighlightForm_Activate() With HighlightForm .StartUpPosition = 0 .Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width) .Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height) .Show End With End Sub 

然而,这并没有改变我的表格放在哪里。 它仍然在中心。 我什至尝试改变所有这些参数为零,无济于事。 我把这个代码放在UserForm代码本身,我知道这是正确的位置。 我也尝试了HighlightForm_Initialize(),它仍然不会响应任何更改。

有什么明显的东西我失踪了吗? 我不认为这是一个非常困难的问题,但我真的很难过。 在此先感谢您的帮助。

我发现改变.StartUpPosition = 3 (Windows默认),并用你的代码来改变左上angular的点,它集中在Excel窗口。 除非您的Excel拉伸超过2个屏幕或者用户窗体大于屏幕的宽度/高度,否则用户窗体不应位于显示器之间。

我发现这个代码对我来说是完美的

 Private Sub UserForm_Activate() 'Position top/left of Excel App Me.Top = Application.Top Me.Left = Application.Left 'Approx over top/left cell (depends on toolbars visible) Me.Top = Application.Top + (Application.UsableHeight / 2) Me.Left = Application.Left + (Application.UsableWidth / 2) End Sub 

要注意的是,你可以调整“/ 2”居中多一点,因为它可能给较小的显示器有不同的感觉(它将用户窗体的左上angular调整到屏幕的中心)。 我的代码有2.3