Как я могу запретить пользователю делать что-либо еще, пока отображается форма пользователя? - PullRequest
0 голосов
/ 04 декабря 2018

Как видно из названия, у меня есть файл Excel с макросом, работающим под нагрузкой, и я хотел бы сделать так, чтобы пользователь не мог использовать компьютер во время работы макроса.

Этопростая форма для ввода данных.Однако в большинстве случаев пользователи просто игнорируют его и позволяют ему работать в фоновом режиме, пока они работают над другими вещами.

Возможно ли сделать так, чтобы во время отображения пользовательской формы они не моглиделать что-нибудь еще на компьютере, заставляя их вводить данные?

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

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

В соответствии с вышесказанным, рекомендуется не раздражать пользователей.Однако, если это приложение на машине с единственной функцией, то есть в журнале посещений, вы можете сделать форму самой верхней формой.

см., Например, https://www.mrexcel.com/forum/excel-questions/386643-userform-always-top.html, например, и https://www.jkp -ads.com / article / apideclarations.asp для объявлений функций Windows API

Другой подход - установить таймер и предупредить пользователя звуком ...

0 голосов
/ 04 декабря 2018

Вы не можете этого сделать.Ваша форма находится в пространстве процесса EXCEL.EXE, и нет никакого способа сообщить Windows, что EXCEL.EXE - это все, что она собирается делать, пока EXCEL.EXE не скажет об этом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...