Отображение модальных диалоговых окон перед рабочими книгами (Microsoft Excel)
Дон обычно работает на двух мониторах и имеет несколько открытых книг в одном экземпляре Excel. Он также максимизирует свои окна. (Он описывает себя как человека, который «видит все в одном кадре».) Недавно, когда Дон сделал что-то, что открывает модальное диалоговое окно, окно открывается позади книги, что мешает ему видеть диалоговое окно или взаимодействовать с ним. Это. Он задается вопросом, есть ли способ заставить модальные диалоговые окна появляться перед книгой.
Прежде чем ответить, следует отметить, что диалоговые окна могут быть двух типов: модальные и немодальные. Немодальное диалоговое окно — это окно, которое практически не зависит от программы, которой оно принадлежит. Хорошим примером такого диалогового окна является диалоговое окно «Найти и заменить». С другой стороны, модальное диалоговое окно (те, с которыми у Дона проблемы)
необходимо ответить или закрыть, прежде чем вы сможете продолжить работу с программой, которой принадлежит диалоговое окно.
Неясно, связана ли проблема Дона с модальными диалоговыми окнами, генерируемыми самим Excel, или это диалоговые окна, созданные макросами, над которыми Дон имеет контроль. Если первое, то сделать можно очень немного; многослойное расположение диалогового окна полностью контролируется программой (и программистами, которые его создали). Другими словами, потребуется изменение кода, чтобы диалоговое окно появилось наложенным поверх книги, а не под ней.
Поймите, что существует сценарий, в котором проблема не может быть связана с проблемой программирования Excel. Возможно, в системе запущено стороннее приложение, которое влияет на расположение диалоговых окон и их родительских окон. Типичными виновниками этого сценария являются резидентные в памяти утилиты, которые заставляют себя всегда появляться поверх всего остального на экране. Единственный способ узнать, является ли это причиной, — отключить загрузку таких утилит и отобразить в Excel модальное диалоговое окно. Если поведение вернется к норме, значит, вы знаете источник проблемы.
Однако, если это так, что диалоговое окно создается с помощью макроса, разработанного Доном, решение состоит в том, чтобы настроить код, который генерирует модальное диалоговое окно. (В макросах Excel эти типы диалоговых окон обычно реализуются с помощью пользовательских форм.).
Проблема с размещением пользовательской формы в сценариях с несколькими экранами решается путем ручного размещения пользовательской формы в ее исходном коде. Например, вы можете использовать несколько вариантов этого:
Load UserForm1 UserForm1.StartUpPosition = 0 UserForm1.Top = Application.Top + 25 UserForm1.Left = Application.Left + 25 UserForm1.Show
Возможно, вам придется поэкспериментировать с размещением, но требуется установить для свойства StartUpPosition значение 0, чтобы VBA знал, что вы хотите вручную определить местоположение пользовательской формы.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13349) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.