Макросы, если они работают правильно, могут облегчить нашу жизнь. (Если они работают неправильно, жизнь определенно нелегка.) Если у вас есть макрос, который делает за вас много работы, вам может быть интересно попытаться заставить его работать быстрее.

Первая задача, которую необходимо выполнить, — это, конечно, изучить макрос и посмотреть, насколько эффективны ваши алгоритмы (как вы решили действовать). Когда вы удовлетворены этим, вы также можете ускорить выполнение макросов, просто поместив несколько операторов в одну строку. Рассмотрим следующий простой макрос, который находит предыдущее вхождение чего-либо в документе:

Sub PrevFind()

With Selection.Find       .ClearFormatting       .Forward = False       .Wrap = wdFindAsk       .Execute    End With End Sub

Этот макрос очень прост. Когда вы сохраняете макрос, содержащиеся в нем операторы разбираются до трехбайтовых токенов, которые могут более эффективно выполняться с помощью VBA. (Вы никогда не видите токенов; вы видите только макроязычный эквивалент токенов.) Когда макрос запущен, командный процессор VBA захватывает одну строку за раз и выполняет все токены в этой строке. Таким образом, в вышеизложенном есть восемь строк, которые индивидуально выбираются и выполняются процессором.

Теперь рассмотрим следующую версию того же макроса:

Sub PrevFind()

With Selection.Find    .ClearFormatting: .Forward = False: .Wrap = wdFindAsk: .Execute End With: End Sub

Эта версия кажется намного короче, потому что отдельные строки были объединены и разделены двоеточием. Это снижает удобочитаемость макроса, но увеличивает скорость его выполнения. Зачем?

Потому что командный процессор VBA по-прежнему захватывает строку для обработки. В этом случае нужно захватить только четыре строки. Меньшее «время захвата» означает, что выполнение выполняется быстрее. Третья строка этого макроса, которая раньше занимала четыре строки, теперь обрабатывается как одна строка.

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

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (1640) относится к Microsoft Word 97, 2000, 2002 и 2003.