Изпълнението на кода е прекъснато - каква е грешката?

Понякога при изпълнение на перфектно работещ код може да възникне грешка "Изпълнението на кода е прекъснато":

прекъснато

най-често се появява в цикли (това е Do. Loop, For each, For. Next). Но може да се появи и в определени раздели на кода, напълно независимо какво прави този или онзи парче код. Самата грешка не е грешка - когато натиснете продължи кодът продължава да се изпълнява и дори може да отиде до края без грешки. Но това, което е забележително - като веднъж се появи в някакъв код, тази грешка започва да ви преследва и в същото време се възпроизвежда само на компютъра, на който се е появила. На други компютри кодът може да работи перфектно и без никакви инциденти.

Защо изобщо се появява тази грешка? За съжаление няма да дам точен отговор на този въпрос. Само предположения: VBA също съхранява всички видове регистрационни файлове по време на работа и се позовава на различни библиотеки. И най-вероятно в даден момент толкова много от този боклук се набира, че VBE започва да се "включва" по такъв нестандартен начин, предполагайки, че се опитваме да изпълним паралелно два кода.

И най-важното: как да се поправи изпълнението на кода е прекъсната грешка?
Познавам два начина.
Метод 1 - еднократен
Преди да изпълните кода, поставете реда:

и след изпълнението (преди End Sub или на всяко място, където може да се излезе от процедурата) го върнете:

това, което аз лично не харесвам в този метод: свойството EnableCancelKey е отговорно за способността да се справят с натискания на клавиши по време на изпълнение на кода. Стойността xlDisabled поставя VBA в „беззащитен“ режим - т.е. няма да реагира на натискания на клавиши, докато кодът не приключи с изпълнението. Познайте с какво е изпълнено това? Точно така: ако изведнъж се озовете в безкраен цикъл или искате да прекъснете изпълнението, нищо няма да работи, защото комбинацията Ctrl + Break просто ще бъде игнорирана.

Помогна ли статията? Споделете връзката с приятелите си!