Здравствуйте уважаемые форумчане. Есть экранная форма отображаемая на экране инструкцией : UserForm.Show vbModalless , режим vbModalless обязателен. На ней есть пара кнопок. По нажатию на кнопку отрабатывает макрос, но форма, оставаясь отображённой на экране, теряет фокус. Для продолжения работы с формой приходится кликать мышкой на окне формы для её активации.
Пробовал, но не помогло : UserForm.ActiveControl.SetFocus и UserForm.Enabled=True
Подскажите, пож-та : как при отображённой, но не активной, UseForm программно её активировать, т.е. вернуть на неё фокус? Спасибо за помощь / совет.
The_Prist Т.к. перед окончанием работы макроса у меня идёт информационный MsgBox , то получается не очень красиво для визуального восприятия пользователя : 1. Гаснет UserForm 2. Выводится MsgBox 3. Опять появляется UserForm Предложенный вами вариант конечно рабочий, спасибо. Может есть VBA-альтернатива сделать это одной командной?
Dima S Вы правы. Причина в коде самого макроса : работа с ячейками, функции активации рабочих листов и т.д. Собственно говоря, причина потери фокуса экранной формой именно в vba-коде макроса. Думалось мне, что проще найти решение по принудительнй установки фокуса чем переписывать "узкие" места vba-кода - оказалось иначе. Посмотрел рекомендации уважаемого The_Prist - достаточно сложное для меня решение. Теперь склоняюсь к мысли, что может оставить предложенный вариант с UserForm1.Hide UserForm1.Show
Нет не пробовал. Хочется что бы после нажатия Ок в MsgBox оставалась активной UserForm, но этого не происходит, фокус уходит на рабочий лист Экселя. Спасибо.
блин, то ли лыжи не едут... вот переделал пример из форума. по событию клика на форме делаются вышеперечисленные действия и фокус в комбобоксе простым SetFocus. или не так?
Dima S На моей UserForm только кнопки, ComboBox-ов нет. Я так понял, что воспользоваться инструкцией SetFocus в моём случае не получится Остановился на методе предложенном The_Prist и Юрий М MsgBox " " UserForm.Hide UserForm.Show Оказался не сложный и вполне рабочий вариант. Спасибо!
Private Sub CommandButton1_Click()
MsgBox ("")
Me.CommandButton1.SetFocus
End Sub
Private Sub CommandButton2_Click()
MsgBox ("")
Me.CommandButton2.SetFocus
End Sub