Шаг 40 - О многозадачности Windows и циклах
Как Вы знаете Windows 9x является многозадачной средой. Это везде пишется. Но на самом деле это далеко не совсем так. То есть в ней нет четкой установки приоритетов. Не верите ? Создайте макрос в Excel и запустите вот этот пример.
Sub Test() For x = 1 To 1000000000000 Debug.Print x Next x End Sub
Любая работа в этот момент будет проблематична. Это связанно с проблемами еще от Windows 3.1, тогда при программировании от Вас требовали периодически особенно в процессе длительных циклов передавать управление операционной системе. VBA до сих пор не избавлен от этой проблемы. Вам все равно надо это делать. Делается это с помошью DoEvents.
Используйте функцию DoEvents для передачи управления операционной системе каждый раз прохода цикла. Но она может быть полезна и при дисковых операциях ввода вывода, операциях с DDE. Давайте изменим наш пример.
Sub Test() For x = 1 To 1000000000000 DoEvents Debug.Print x Next x End Sub
Если Ваша программа тормозит выполнение других программ вспомните об этом шаге.
Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.