Дон обычно работает на двух мониторах и имеет несколько открытых книг в одном экземпляре 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.