在多个显示器上居中用户表单

问题描述 投票:0回答:4

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

我在 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

然而,这根本不会改变我的表格放置的位置。它仍然位于中心。我什至尝试将所有这些参数更改为零,但无济于事。我将此代码放置在用户窗体代码本身中,我认为这是正确的放置位置。我也尝试过HighlightForm_Initialize(),但它仍然不会响应任何更改。

我是否遗漏了一些明显的东西?我不认为这是一个非常困难的问题,但我真的很难过。预先感谢您的帮助。

excel vba userform
4个回答
3
投票

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

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


1
投票

我知道这是一个老问题,但我想我会为遇到这个问题的其他人指出错误。

您的子项名为“Private SubhighlightForm_Activate()”

必须调用“Private Sub UserForm_Activate()”

这与用户表单本身的名称无关。


0
投票

我发现更改

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


0
投票

《英雄联盟》非常棒!干杯

© www.soinside.com 2019 - 2024. All rights reserved.