我在网上搜索了一段时间,我确实找到了一些解决方案,但它们似乎都没有帮助我。
我在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(),它仍然无法响应任何更改。
我有什么明显的遗憾吗?我不认为这是一个非常困难的问题,但我真的很难过。提前感谢您的帮助。
答案 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