Есть ли визуальная разница между ScreenUpdating и Application.Visible? - PullRequest
2 голосов
/ 25 апреля 2019

Я пишу небольшую программу для извлечения данных из SAP и анализа их в Excel.Я делаю все это с VBA.

Я использую функцию под названием

Application.ScreenUpdating = False

Но всякий раз, когда я активирую лист, подобный этому

WorkSheets("data_tmp").Activate

, ондействительно отображается на моем экране.

Итак, функция Activate действительно отображается даже при выполнении предыдущего ScreenUpdating = False?Отображаются ли другие функции на экране, даже если я устанавливаю экранное обновление на false?

Несмотря на заголовок, речь идет не только об использовании active и select - это больше о том, что показывает, а что нет на экране при установке экранного обновленияна false, и как вообще запретить пользователю что-либо видеть.

1 Ответ

3 голосов
/ 25 апреля 2019

Обновление экрана отличается от видимости.

Установка Application.ScreenUpdating на False не позволит приложению перерисовывать экран каждый раз, когда ваша функция что-то меняет (точная скорость обновления не указана, и, похоже, зависит от общей загрузки процесса во время исполнение).

Если вы хотите скрыть приложение, используйте Application.Visible = False перед работой с документом (не забудьте поменять это в конце вашей функции). Дополнительную информацию можно найти в документации Microsoft .

Как уже упоминалось в комментариях и ссылках выше, использование .Activate и .Select, вероятно, не является необходимым для достижения ваших целей, особенно когда приложение скрыто от просмотра. Вместо этого обратитесь к конкретным ячейкам и диапазонам.

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