2015-02-06 27 views
3

我在网上搜索了一段时间,并找到了一些解决方案,但没有一个能够帮助我。多个监视器上的中心用户窗体

我在Excel 2010中有一个用户窗体,我希望以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(),它仍然不会响应任何更改。

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

+0

删除'.show'。表格激活将关心显示它。 – 2015-02-06 18:27:42

回答

0

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

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”到中心多一点,因为它可能会给较小的显示器不同的感觉(其调整顶部用户窗体左侧的屏幕中心)。我的代码有2.3