Скрыть форму пользователя и показать указанный лист - PullRequest
0 голосов
/ 11 октября 2019

Я загружаю пользовательскую форму, делаю некоторые вещи, затем хочу скрыть эту пользовательскую форму и показать одну из открытых рабочих таблиц. Эта рабочая таблица имеет командную кнопку для запуска макроса, который снова покажет пользовательскую форму. Что происходит, когда я скрываю пользовательскую форму, ActiveSheet становится тот, который был активным, когда пользовательская форма была загружена. Последующие попытки определения активного листа игнорируются без сообщений об ошибках.

UserForm1.Show
' stuff
Workbooks("datafile").Sheets(1).Activate   ' ActiveSheet is correctly redefined
UserForm1.Hide   ' ActiveSheet changes to the active sheet when UserForm was loaded
Workbooks("datafile").Sheets(1).Activate      ' Ignored.  no change to ActiveSheet
' Shows whomever loaded the user form: either the VBA debugger or the original worksheet

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Получается, что пользовательская форма связана с рабочим листом, который был активен при загрузке. Таким образом, если вы хотите, чтобы конкретный лист был виден при скрытии или сворачивании формы, убедитесь, что он был активным при загрузке этой формы. Похоже, вы не можете изменить ActiveSheets, пока загружена пользовательская форма;Вы застряли на листе, который был там, когда форма была загружена.

0 голосов
/ 11 октября 2019

Я не могу воссоздать эту проблему, отправленный код сработал для меня.

однако, UserForm1 может перекрываться следующей инструкцией, попробуйте добавить функцию DoEvents, прежде чем активировать нужныйлист снова. как то так:

UserForm1.Show
' stuff
Workbooks("datafile").Sheets(1).Activate   ' ActiveSheet is correctly redefined
UserForm1.Hide   ' ActiveSheet changes to the active sheet when UserForm was loaded
DoEvents
Workbooks("datafile").Sheets(1).Activate
...