多个监视器上的中心用户窗体

时间:2015-02-06 16:43:00

标签: excel vba userform

我在网上搜索了一段时间,我确实找到了一些解决方案,但它们似乎都没有帮助我。

我在Excel 2010中有一个Userform,我想以Excel窗口为中心。我有双显示器,它似乎总是在两个显示器之间居中。我知道你可以编辑的属性,比如StartUpPosition等,来控制它的去向,但似乎改变这些参数什么都不做。这是我在网上找到的代码,许多用户都证明了这些代码可以为他们工作。我的表单名为" 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(),它仍然无法响应任何更改。

我有什么明显的遗憾吗?我不认为这是一个非常困难的问题,但我真的很难过。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我发现更改.StartUpPosition = 3(Windows默认值)并使用您的代码更改左上角,它以Excel窗口为中心。除非您的Excel超过2个屏幕或用户形式宽度/高度大于屏幕,否则用户表格不应位于显示器之间。

答案 1 :(得分:0)

我发现这段代码非常适合我

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"更加集中,因为它可能会给较小的显示器带来不同的感觉(它会将Userform的左上角调整到屏幕的中心)。我的代码有2.3