Видове грешки във VBA за Excel - списък и примери

Потребителите често срещат различни видове грешки във VBA. По-долу предлагаме няколко стратегии за тяхното разрешаване и разрешаване. Ще разгледаме техниките, които можете да използвате, за да разпитвате кода си по време на тестване, както и методите за улавяне на грешки по време на изпълнение.

Видове грешки във VBA за Excel

Тестването и проследяването на различни видове грешки в кода на VBA може да отнеме много време и разочарование. Не е необичайно да чуете програмисти Програмиране Програмиране е процес на писане на инструкции за изпълнение на компютър. Подобно е на рецепта за хора. Рецептата съдържа списък с действия, според които над 30% от времето им се изразходва за тестване.

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

Видове VBA грешки

За да улесним нещата, ние категоризирахме видовете грешки в кодирането в три групи. За всяка група ще разгледаме някои примери и след това ще обсъдим как бихте могли да ги разследвате и разрешите.

1. Синтаксични грешки - Конкретен ред код не е написан правилно

2. Компилиране на грешки - Проблеми, които се случват при сглобяване на редове код, въпреки че отделните редове код изглежда имат смисъл

3. Грешки по време на изпълнение - Когато кодът обикновено е правилен по принцип, но действие, предприето от потребителя или използваните данни, води до неочаквани грешки.

Какво представляват синтаксичните грешки?

Синтаксичните грешки са начинът на VBA да ви каже дали вашият код има смисъл, на най-основните нива. Можем да направим просто сравнение с правилата за писане на изречение на английски:

  • Необходим е предмет .
  • Изисква се глагол .
  • В началото се изисква главна буква.
  • Пунктуацията се изисква в края.
  • Обекти, прилагателни и други граматически характеристики не са задължителни.

Джейн намери 18 грешки в своя VBA код .

По подобен начин VBA налага определени правила относно това, което се изисква в определени ситуации. Например, когато инициирате основен условен IF израз във вашия код, трябва да репликирате следните правила за синтаксис за първия ред на IF израз;

  • Трябва да започне с Ако
  • След това трябва да има логически тест , като x> 10
  • И накрая, трябва да завърши с думата тогава

Ако NumberErrors> 20 тогава

Ако нарушите горните правила на английски или VBA, вашата граматика (английски) или синтаксис (VBA) се счита за неправилна.

Как да идентифицирам синтактична грешка

Редакторът на VBA подчертава синтаксичните грешки в червено, което ви позволява лесно да ги идентифицирате и разрешите. Освен това, ако се опитате да стартирате кода си или да стартирате нов ред, ще ви се покаже съобщението за грешка в синтаксиса по-долу.

Основна синтаксична грешка:

Основна грешка в синтаксиса

Поле за съобщение за грешка в синтаксиса:

Поле за съобщение за грешка в синтаксиса

За да сте сигурни, че проверките се извършват, докато пишете, активирайте „Auto Syntax Check“ в менюто Options.

Автоматична проверка на синтаксиса

Как да разрешавате синтаксични грешки

Синтаксисните грешки представляват грешки в начина, по който се пише конкретен ред на вашия код. Те трябва да бъдат фиксирани, преди да можете да стартирате кода си. С опит червеният текст ще бъде всичко, от което се нуждаете, за да откриете грешката. Но ако все още сте заседнали, просто потърсете онлайн за „if синтаксис на оператора vba“ или която и да е вариация, която отговаря на вашите нужди, и ще намерите много примери за конкретния ред, който се опитвате да напишете.

Какво представляват грешките при компилиране?

Грешките при компилиране се отнасят до по-широка група грешки на VBA, които включват синтаксични грешки. Грешките при компилиране също идентифицират проблеми с вашия код, когато се разглеждат като цяло. Синтаксисът на всеки отделен ред може да е правилен, но когато се съберат, редовете на вашия код нямат смисъл. Грешките при компилирането се подчертават, когато компилирате или стартирате кода си.

Как да идентифицирам грешка при компилиране

Когато стартирате своя VBA код, грешките при компилирането ще бъдат представени в диалоговия прозорец на VBA, както е показано в примерите по-долу.

Като алтернатива, ако вашият проект е дълъг или сложен и включва множество рутини, може да е полезно да компилирате кода си, преди да го стартирате. Той предотвратява ситуации, при които половината от вашия код работи успешно и след това се появява грешка. Можете да компилирате вашия VBA код, като щракнете върху Debug Menu → Compile VBA Project.

Пример 1

Грешка при компилиране за липсваща част „End if“ на оператор IF. Всеки отделен ред в кода е правилен, но заедно не представляват пълен IF израз.

Грешка при компилиране - Пример 1

Пример 2

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

Грешка при компилиране - Пример 2

Пример 3

Грешките при компилиране са често срещани при използване на явна опция и възникват, когато променлива не е изрично дефинирана. С активирана опция Изрично се изисква оператор Dim, за да декларира всички променливи, преди да могат да бъдат използвани във вашия код.

Грешка при компилиране - Пример 3

Как да разреша грешки при компилиране

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

Ако за вас не е очевидно какъв е проблемът от съобщението за грешка, опитайте да използвате Помощния център на Microsoft, за да получите представа как точно трябва да бъде написана вашата декларация или функция. Ето пример за съобщението за грешка „Блокиране, ако няма край, ако“ на уебсайта на Microsoft.

Блокиране, ако без край, ако

Какво представляват грешките по време на изпълнение?

След като коригирате синтаксични грешки и компилирате грешки, сте готови да започнете да тествате или стартирате правилно кода си, за да видите колко добре изпълнява желаните от вас действия или изчисления. Ние наричаме периода на тестване или изпълнението на код на живо „време на изпълнение“.

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

Грешките по време на работа често са причинени от неочаквани данни, предавани на кода на VBA, несъответстващи типове данни, разделяне на неочаквани нули и недостъпни дефинирани диапазони на клетки. Грешките по време на работа са и най-разнообразните и сложни за проследяване и отстраняване.

Как да разпознаем грешки по време на работа

VBA Debug VBA: Как да отстранявате грешки при писане и стартиране на VBA код, е важно за потребителя да научи как да отстранява грешки в кода. Очаква се от потребителя на Excel, че функцията за кодиране подчертава кода на проблема в жълто и ни дава малка представа за това какво причинява проблема.

Пример 1

Докато кодът по-долу просто разделя едното число на другото, има някои случаи, при които това няма да е възможно. Например, ако клетка А1 = 2 и клетка А2 = 0, не е възможно да се дели на нула. Полето за грешка при изпълнение включва бутон за отстраняване на грешки, който подчертава кода на проблема.

Грешка по време на изпълнение - Пример 1

Грешки по време на изпълнение - Пример 1а

Пример 2

В този пример създадох масив за събиране на имената на n компании в моя работен лист. След това се опитах да се позова на шестия елемент, който може да съществува или да не съществува по време на изпълнение. VBA представя съобщение за грешка по време на работа и ми позволява да натисна Debug, за да разследвам проблема.

Грешка по време на изпълнение - Пример 2

След като натисна Debug, VBA подчертава реда на кода, който причинява проблема. Сега от мен зависи да използвам съобщението „Индекс извън обхвата“, за да разбера какво се случва. Грешката в индекса извън обхвата обикновено означава, че кодът ви по принцип е добър, но че конкретният елемент, който търсите, не може да бъде намерен. Най-често това ще се случи при позоваване на клетки или диапазони в Excel, както и масиви във вашия VBA код.

Грешка при изпълнението - Пример 2а

За да сте сигурни, че функцията за отстраняване на грешки е активирана, в менюто Options> General> Error Trapping състоянието по подразбиране трябва да бъде „Break on Unhandled Errors“. Оставете опцията отметната.

Прекъсване на необработени грешки

Как да разрешите грешки по време на изпълнение

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

Прихващане на грешка

Добре е да обмислите какви възможни сценарии може да срещне вашият код. Още по-добре е да тествате кода си на практически данни или с реални потребители. Това ще ви позволи да разпознавате такива сценарии във вашата VBA, като кодът се разклонява на различни резултати, в зависимост от това дали съществуват грешки.

Пример 1

Тук редът „При грешка възобновяване след това“ принуждава кода да продължи, дори ако бъде открита грешка. След това използваме теста If Err> 0, за да създадем предупредително съобщение, само ако грешката съществува. 'При грешка при 0' нулира VBA до състоянието му по подразбиране.

Прихващане на грешки - Пример 1

Пример 2

Тук кодът изчислява дохода на ден въз основа на месечен доход и определен брой дни. Ако броят на дните не е предоставен, прескачаме до определена точка в нашия код, наречена „NoDaysInMonthProvided :,“, където използваме средния брой дни в месеца като основно предположение. Въпреки че е опростен, той показва ясно как да задържате грешка и да преминете към различна точка в кода си.

Прихващане на грешки - Пример 2

Изчистете потребителските инструкции

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

Обобщение

Има три ключови типа грешки във VBA, които могат да повлияят на вашия код по различни начини. Важно е да активирате опциите за откриване на грешки на VBA, като например грешката и автоматичната проверка на синтаксиса. Те ще ви помогнат да установите местоположението и естеството на грешките.

Още ресурси

Finance е официален доставчик на глобалния сертифициран банков и кредитен анализатор (CBCA) ™ CBCA ™ сертифициране Сертифицираният банков и кредитен анализатор (CBCA) ™ акредитация е глобален стандарт за кредитни анализатори, който обхваща финанси, счетоводство, кредитен анализ, анализ на паричните потоци , моделиране на завети, изплащане на заеми и др. програма за сертифициране, предназначена да помогне на всеки да стане финансов анализатор от световна класа. За да продължите да напредвате в кариерата си, допълнителните ресурси по-долу ще бъдат полезни:

  • #REF Excel Грешки #REF Excel Грешки #REF Excel грешки причиняват големи проблеми в електронните таблици. Научете как да намерите и поправите грешки #REF в Excel в този бърз урок с примери и екранни снимки. A #REF! грешка („ref“ означава препратка) е съобщението, което Excel показва, когато формула се позовава на клетка, която вече не съществува, причинена от изтриване на клетки, които
  • Excel VBA Примери Excel VBA Примери Excel VBA позволява на потребителя да прави макроси, които автоматизират процесите в Excel. Това ръководство ще използва примери на Excel VBA, за да покаже как да записвате макрос чрез настройка на макроса, как да декларирате променливи и как да препращате към данни.
  • Съвети за писане на VBA в Excel Съвети за писане на VBA в Excel Изброените по-долу са девет съвета за писане на VBA в Excel. VBA за Excel въвежда безброй възможности за персонализирани изчисления и автоматизация.
  • VBA методи VBA методи VBA метод е парче код, прикрепено към VBA обект, променлива или препратка към данни, което казва на Excel какво действие да извърши по отношение на този обект. Копирането, поставянето и избирането са само някои примери за VBA методи, които могат да бъдат изпълнени.