Съвети за скорост на Excel 2016 VBA

VBA за Excel 2016 е бърз, но не винаги е достатъчно бърз. (Компютърните програми никога не са достатъчно бързи.) Продължете да четете, за да откриете някои примери за програмиране, които можете да използвате, за да ускорите своите макроси.

Изключване на актуализирането на екрана

Когато изпълнявате макрос, можете да седнете и да гледате всички действия на екрана, които се случват в макроса. Въпреки че това може да бъде поучително, след като накарате макроса да работи правилно, това често е досадно и може да забави значително производителността на вашия макрос. За щастие можете да деактивирате актуализирането на екрана, което обикновено се случва, когато изпълнявате макрос. За да изключите актуализирането на екрана, използвайте следното изявление:

Application.ScreenUpdating = False

Ако искате потребителят да види какво се случва във всеки момент по време на макроса, използвайте следното изявление, за да включите отново актуализирането на екрана:

Application.ScreenUpdating = Вярно

За да демонстрирате разликата в скоростта, изпълнете този прост макрос, който запълва диапазон с числа:

Sub FillRange()
  Dim r колкото дълго, c толкова дълго
  Затъмнено число толкова дълго
  Число = 0
  За r = 1 до 50
    За c = 1 до 50
      Число = Число + 1
      Клетки (r, c). Изберете
      Клетки (r, c). Стойност = Число
    Следващо c
  Следваща r
Край под

Виждате, че всяка клетка е избрана и стойността се въвежда в клетките. Сега поставете следния оператор в началото на процедурата и го изпълнете отново:

Application.ScreenUpdating = False

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

Когато отстранявате грешки в кода, изпълнението на програмата понякога завършва някъде по средата, без да сте включили отново обновяването на екрана. Това понякога кара прозорецът на приложението на Excel да не реагира напълно. Изходът от това замразено състояние е прост: Върнете се към VBE и изпълнете следния оператор в прозореца Immediate:

Application.ScreenUpdating = Вярно

Изключване на автоматичното изчисление

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

Следното изявление задава режима на изчисление в Excel на ръчен:

Application.Calculation = xlCalculationManual

Изпълнете следващия оператор, за да настроите режима на изчисление на автоматичен:

Application.Calculation = xlCalculationAutomatic

Ако вашият код използва клетки с резултати от формула, изключването на изчислението означава, че клетките няма да бъдат преизчислени, освен ако изрично не кажете на Excel да го направи!

Премахване на тези досадни предупредителни съобщения

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

Съвети за скорост на Excel 2016 VBA

Можете да инструктирате Excel да не показва тези типове сигнали, докато изпълнявате макрос.

Тайният трик за избягване на тези предупредителни съобщения е вмъкването на следния VBA оператор във вашия макрос:

Application.DisplayAlerts = False

Excel изпълнява операцията по подразбиране за тези типове съобщения. В случай на изтриване на лист, операцията по подразбиране е Изтриване. Ако не сте сигурни каква е операцията по подразбиране, извършете тест, за да видите какво се случва.

Когато процедурата приключи, Excel автоматично нулира свойството DisplayAlerts на True. Ако трябва да включите отново сигналите, преди процедурата да приключи, използвайте това изявление:

Application.DisplayAlerts = Вярно

Опростяване на препратките към обекти

Както вероятно вече знаете, препратките към обекти могат да станат много дълги. Например, напълно квалифицирана препратка към обект Range може да изглежда така:

Работни книги(“MyBook.xlsx”).Работни листове(“Sheet1”) _
  .Range(„Лихва процент“)

Ако вашият макрос често използва този диапазон, може да искате да създадете обектна променлива с помощта на командата Set. Например, следният израз присвоява този обект Range на обектна променлива с име Rate:

Задаване на процент = Работни книги(“MyBook.xlsx”) _
  .Worksheets(“Sheet1”).Обхват(“InterestRate”)

След като дефинирате тази променлива на обекта, можете да използвате променливата Rate вместо дългата препратка. Например, можете да промените стойността на клетката с име InterestRate:

Стойност = .085

Това е много по-лесно за въвеждане, отколкото следното изявление:

Работни книги(“MyBook.xlsx”).Работни листове(“Sheet1”). _
  Диапазон („лихвен процент“) = .085

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

Деклариране на типове променливи

Обикновено не е нужно да се притеснявате за типа данни, които присвоявате на променлива. Excel обработва всички подробности вместо вас зад кулисите. Например, ако имате променлива с име MyVar, можете да присвоите номер от произволен тип на тази променлива. Можете дори да му присвоите текстов низ по-късно в процедурата.

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

Като цяло трябва да използвате типа данни, който изисква най-малък брой байтове, но все пак може да обработва всички данни, приписани към него. Когато VBA работи с данни, скоростта на изпълнение зависи от броя на байтовете, с които VBA разполага. С други думи, колкото по-малко байтове използва данните, толкова по-бързо VBA може да осъществява достъп и да манипулира данните. Изключение от това е типът данни Integer. Ако скоростта е критична, използвайте вместо това тип данни Long.

Ако използвате обектна променлива, можете да декларирате променливата като конкретен тип обект. Ето един пример:

Степента на затъмняване като диапазон
Задаване на процент = Работни книги(“MyBook.xlsx”) _
  .Worksheets(“Sheet1”).Обхват(“InterestRate”)

Използване на структурата With-End With

Трябва ли да зададете редица свойства за обект? Вашият код работи по-бързо, ако използвате структурата With-End With. Допълнително предимство е, че кодът ви може да бъде по-лесен за четене.

Следният код не използва With-End With:

Selection.HorizontalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
Selection.WrapText = Вярно
Избор.Ориентация = 0
Selection.ShrinkToFit = False
Selection.MergeCells = False

Ето същия код, пренаписан да използва With-End With:

С селекция
  .Хоризонтално подравняване = xlCenter
  .Вертикално подравняване = xlCenter
  .WrapText = Вярно
  .Ориентация = 0
  .ShrinkToFit = Невярно
  .MergeCells = False
Край с

Когато използвате With-End With, уверете се, че всяко изявление започва с точка.


Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирам Microsoft Word да отваря файлове в режим само за четене в Windows Microsoft Word отваря файлове в режим само за четене, което прави невъзможно редактирането им? Не се притеснявайте, методите са по-долу

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате грешки при отпечатването на неправилни документи на Microsoft Word Грешките при отпечатването на документи на Word с променени шрифтове, разхвърляни абзаци, липсващ текст или изгубено съдържание са доста чести. Въпреки това недейте

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Ако сте използвали писалката или маркера, за да рисувате върху слайдовете на PowerPoint по време на презентация, можете да запазите чертежите за следващата презентация или да ги изтриете, така че следващия път, когато го покажете, да започнете с чисти слайдове на PowerPoint. Следвайте тези инструкции, за да изтриете чертежи с писалка и маркери: Изтриване на линии една в […]

Съдържание на библиотеката за стилове в SharePoint 2010

Съдържание на библиотеката за стилове в SharePoint 2010

Библиотеката със стилове съдържа CSS файлове, файлове с разширяем език на стиловия език (XSL) и изображения, използвани от предварително дефинирани главни страници, оформления на страници и контроли в SharePoint 2010. За да намерите CSS файлове в библиотеката със стилове на сайт за публикуване: Изберете Действия на сайта→Преглед Цялото съдържание на сайта. Появява се съдържанието на сайта. Библиотеката Style се намира в […]

Форматирайте числата в хиляди и милиони в отчети на Excel

Форматирайте числата в хиляди и милиони в отчети на Excel

Не затрупвайте аудиторията си с огромни числа. В Microsoft Excel можете да подобрите четливостта на вашите табла за управление и отчети, като форматирате числата си така, че да се показват в хиляди или милиони.

Как да споделяте и следвате сайтове на SharePoint

Как да споделяте и следвате сайтове на SharePoint

Научете как да използвате инструменти за социални мрежи на SharePoint, които позволяват на индивиди и групи да общуват, да си сътрудничат, споделят и да се свързват.

Как да конвертирате дати в юлиански формати в Excel

Как да конвертирате дати в юлиански формати в Excel

Юлианските дати често се използват в производствени среди като времеви печат и бърза справка за партиден номер. Този тип кодиране на дата позволява на търговците на дребно, потребителите и обслужващите агенти да идентифицират кога е произведен продуктът и по този начин възрастта на продукта. Юлианските дати се използват и в програмирането, военните и астрономията. Различно […]

Как да създадете уеб приложение на Access

Как да създадете уеб приложение на Access

Можете да създадете уеб приложение в Access 2016. И така, какво всъщност е уеб приложение? Е, уеб означава, че е онлайн, а приложението е просто съкращение от „приложение“. Персонализирано уеб приложение е онлайн приложение за база данни, достъпно от облака с помощта на браузър. Вие създавате и поддържате уеб приложението в настолната версия […]

Лента за бързо стартиране в SharePoint 2010

Лента за бързо стартиране в SharePoint 2010

Повечето страници в SharePoint 2010 показват списък с връзки за навигация в лентата за бързо стартиране в лявата част на страницата. Лентата за бързо стартиране показва връзки към представено съдържание на сайта, като списъци, библиотеки, сайтове и страници за публикуване. Лентата за бързо стартиране включва две много важни връзки: Връзка към цялото съдържание на сайта: […]

Какво означават съобщенията за грешка на Solver в Excel?

Какво означават съобщенията за грешка на Solver в Excel?

За прости проблеми Solver в Excel обикновено бързо намира оптималните стойности на променливата Solver за целевата функция. Но в някои случаи Solver има проблеми с намирането на стойностите на променливата Solver, които оптимизират целевата функция. В тези случаи Solver обикновено показва съобщение или съобщение за грешка, което описва или обсъжда проблема, който […]