2015-02-06 3 views
3

Я искал это в Интернете некоторое время, и я нашел несколько решений, но ни один из них не помогает мне.Центр Userform на нескольких мониторах

У меня есть Userform в 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'. Активация формы будет заботиться о ее показе. –

ответ

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» до центра немного больше, поскольку это может дать другое чувство с меньшими мониторами (это настроить верхнюю слева от Userform до центра экрана). Мой код имеет 2.3