Актуализиране на екрана на VBA - Ускоряване на процеса на стартиране на кода

Актуализиране на екрана на Excel VBA

Актуализирането на екрана на VBA е свойство, използвано за избягване или предотвратяване на разсейващи светкавици при изпълнение на кода и за бързо ускоряване, като изключите актуализирането на екрана. Можем да изключим актуализирането на екрана, като зададем това свойство като false.

Често пъти можем да почувстваме, че екранът на Excel се побърква, докато макросът работи, и ние почти се разочароваме от това. Но как да се справим с тези ситуации и да накараме кода да работи по-бързо от обичайното бавно нещо?

Актуализирането на екрана е нещо, което можем да забележим, докато работи макросът на Excel. Когато задачата се изпълнява, можем да забележим, че екранът ни актуализира стойностите, докато макросът не завърши зададената си задача. Тъй като екранът ни трепти или освежава, това води до забавяне на програмата на Excel и отнема по-дълго време от обикновено за изпълнение на задачата.

Във VBA имаме свойство, наречено „ScreenUpddating“, и задаваме това свойство на FALSE, така че да премахне процеса на актуализиране на екрана, докато кодът работи.

В тази статия ще се сбогуваме с гледането на екранна екшън драма, докато кодът работи. Днес ще накарате кода си да работи по-бързо и по-бързо от обичайното ви време.

Кога да използвам функцията за актуализиране на екрана?

Да предположим, че имате някакво съмнение кога да използвате тази техника. Погледнете в долните точки.

  • Когато обикаляте през голям брой клетки.
  • Изпращане на имейли от Excel VBA.
  • Превключване между работни книги на Excel.
  • Отваряне на нови работни книги.

Как да използвам функцията за актуализиране на екрана в кода на VBA?

Пример # 1 - Изключване на актуализирането на екрана

Например погледнете кода по-долу.

Код:

Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 For RowCount = 1 to 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount) .Select Cells (RowCount, Column) .Value = MyNumber Следващ брой на колона Следващ ред на подреждане

Горното има вложен VBA цикъл за вмъкване на серийни номера от първата колона до 50 -та колона и отново се връща и вмъква сериен номер, започвайки от 51 от втория ред до 50 -тата колона.

По този начин ще се вмъква, докато достигне 50 -ия ред.

Докато този код работи, можете да забележите, че екранът ви трепти и не можете да направите нищо, освен да наблюдавате този луд момент.

За да избегнем всичко това, можем да добавим Актуализиране на екрана към FALSE.

За да влезем първо в функцията за актуализиране на екрана, трябва да влезем в обекта на приложението.

Както можем да видим с обекта Application, имаме много свойства и методи. И така, изберете Актуализиране на екрана от списъка IntelliSense.

Забележка: Трябва да приложите функцията за актуализиране на екрана веднага след декларирането на променливите.

След като изберете свойството Актуализиране на екрана, поставете знак за равенство (=).

Както виждаме, две булеви стойности, т.е. FALSE & TRUE.

За да спрете актуализирането на екрана, задайте състоянието на FALSE.

Сега, когато макросът започне да работи първо, той ще актуализира състоянието на актуализиране на екрана на FALSE и ще премине към следващия ред.

Тъй като макросът изпълнява Актуализиране на екрана на FALSE, той няма да позволи на екрана да се актуализира, докато кодът изпълнява задачата си.

Пример # 2 -

Винаги задавайте актуализиране на екрана на TRUE в края

Виждал съм много хора да задават актуализацията на екрана на FALSE, но съм забравил да го върна на TRUE в края на макроса.

Винаги задавайте Актуализиране на екрана обратно на ИСТИНСКИ в края на макроса.

Код:

Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 For RowCount = 1 to 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount Application.ScreenUpdating = True End Sub

Интересни статии...