Отстраняване на грешки в макрос VBA - Съвети за Excel

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

Гледам видео

  • Имате макрос на Excel VBA, който не работи
  • VBA разполага с невероятни инструменти за отстраняване на грешки
  • Вместо да стартирате кода си, можете да преминете през кода с помощта на F8
  • Линията в жълто е линията, която предстои да бъде изпълнена
  • Задръжте курсора на мишката върху която и да е променлива, за да видите стойността на тази променлива.
  • Превключвайте напред-назад към Excel, за да видите какво се случва

Видео транскрипция

Научете Excel от Podcast, епизод 2096: Отстраняване на грешки на VBA Macro

Хей, добре дошли отново в netcast, аз съм Бил Джелен. Днешният въпрос: Някой имаше някакъв код, който публикувах в стар видеоклип в YouTube и те публикуваха коментар, казвайки: „А, това не работи. Не запазва дублираната фактура, но не извежда грешка. " Не знам какво не е наред с кода. Добре така, знаете ли, вижте, има страхотни инструменти, които са на разположение, когато VBA Macro не работи. Така че тук имаме бутон, който трябва да изпълнява някакъв код. Отивам да присвоя макроса, той се нарича SaveInvoice. Ще щракна Редактиране и приключихме с VBA. И обикновено, когато натиснем този бутон, той просто ще стартира този код. БАМ! Като че всичко се е случило много бързо, но не можете да гледате какво се случва.

И така, под инструментите за отстраняване на грешки едно от любимите ми неща тук е Debug Step Into, за което ще видите, че клавишът за бърз достъп е F8 и това ни позволява да стартираме кода един по ред. Така че натиснах F8 там и това е - линията в жълто е линията, която е на път да изпълни. Така че, ако натисна F8, той прескача тези две декларации и сега ще направим ActiveSheet.Copy. И така, това, което е наистина красиво тук е, знаете ли, особено ако имате голям монитор, че прозорецът на Podcast е твърде малък, но това, което можете да направите, е да гледате как се изпълнява Macro. Така че сега е на път да направите ActiveSheet.Copy. В момента съм в работна книга, наречена Podcast 2096. Ето един работен лист, наречен Invoice и когато натисна F8, ще видите, че сега съм в чисто нова работна книга, наречена Book2, и ние имаме само Invoice, добре.

И сега сме на път да възложим това голямо, дълго нещо на New FN. Натиснете F8. Добре сега, не изглеждаше, че нещо се е случило тук, защото нищо не се е случило тук. Но тук е красивото нещо, сега съм присвоил нещо на тази променлива, наречена New FN, и ако взема мишката и задържа курсора на мишката върху New FN, ще се появи малък съвет, който ми показва какво се съхранява в New FN. Така че запазва името на файла, има папката, в която ще отиде. Нарича се Invoice1234, защото взе стойността от F4 и след това добави PDF.

Добре сега, едно от най-разочароващите неща в Excel е, че ако паметта ви започне да намалява, този съвет не иска да се показва. Ще се задържите там и нищо няма да се случи. Понякога трябва да щракнете, за да го измислите тук, а понякога той изобщо няма да се появи. Когато изобщо няма да се появи, можем да направим Ctrl + G. Ctrl + G е непосредственият прозорец и тогава ще използваме? което е пряк път за Debug.Print, NewFN. С други думи, кажете ми какво има в New FN и той ще ви покаже какво има в New FN точно там.

Добре сега, ние ще стартираме този ред код, който ще създаде PDF. Добре, така че ще натисна F8. Добре, и в този момент трябва да имаме нов PDF там с 1234 и ако отида да погледна в папката, със сигурност Inv1234 на 11 май в 6:25 ч. Току-що беше създаден. Страхотно, нали?

Добре, сега стигаме до точката, в която имаме проблема. Добре, така че натискаме F8 тук и той се показва като Дублирано копие. Добре, това работи. И тогава F8, и можем да видим какво има в New FN. Добре, значи има DupInv1234.pdf и дори можете да се върнете тук и просто да щракнете след Print NewFN и тогава ще видите, че сме променили името на файла, добре. И така, всичко е готино. И след това натискаме F8, за да стартираме Създаване на PDF. Страхотно! Всичко изглежда страхотно, нали?

И така, върнете се към нашите подкаст файлове. Добре, но вместо да имам нещо наречено DupInv1234, просто не знам как нещо наречено Book2. Добре, току-що беше създадено преди минута. Това трябва да е единственият, но не! Изглежда, че е грешно име. Добре, така че се връщаме към VBA и знам, че току-що присвоих правилната стойност на New FN така, добре. И нека видим как го запазваме. Запазваме го като новFN1, който е празен; и тъй като е празно, това означава, че взема името на файла, което в случая е Book2, тъй като направих копие от него. И го смених - О, вижте! И така, тук присвоих името на NewFN и след това запазих този NewFN1, а сега, тъй като отстранявам грешки и завишам - Hovering е най-великото нещо някога. Надявам се да успея да разбера какво става.Затова се връщам и сменям NewFN1. Сега, тук е страхотното нещо. Добре, така че вече преминах този ред в Macro, но мога да го плъзна обратно и да кажа, добре, нека пуснем това отново F8. А сега нека създадем PDF. Добре, и там се показва с правилното име и всичко е готино.

Добре, сега, когато знам, че съм свършил, всичко е страхотно. Всичко ще работи от тук. Просто щраквам Run и ще се изпълни до края на кода. Добре, понякога ще имате дълъг макрос със, знаете ли, стотици редове код, които работят и след това една конкретна част, която не работи, нали? Така че тук бяха споменати няколко други инструмента. Ако трябва да прескочите цял куп код и да изпълните всичко до този момент, е, един от начините да направите това е да кликнете тук и да създадете точка на прекъсване. Добре, така че сега, когато стартирам това, то ще свърши всичко до този момент. Мога просто да щракна с тичане и то ще спре, или ако дори не искате да зададете точка на прекъсване, ние просто щракваме точно тук и казваме Debug, Run To Cursor. Бягайте към курсора.Сега знам, че това ще създаде проблем тук, тъй като кодът за промяна на този номер на фактура все още не е свързан. Така че просто ще поставя нов номер на фактура и така съм на този ред в момента. Отстраняване на грешки, стартиране към курсора, което е Ctrl + F8. Добре, така че сега тя изчерпа всичко до този момент и това, което трябва да имаме, е, че трябва да можем да видим, че току-що е създало Inv1235, добре. И сега става въпрос за - ние сме на този ред код. Мога просто да натисна F8, за да изкача един ред, или просто да изпълня останалата част от пътя. И там е нашият DupInv1235, нали? И така, инструментите за отстраняване на грешки тук във VBA са страхотни. Нека стартирате код по един ред, подредете екрана си така, че да виждаме както кода, който се изпълнява, така и резултатите от кода вляво. И знаете ли, надявам се, можете да разберете какво се обърква с кода.

Добре, така че резюме на епизода: Имайте макрос на Excel VBA, който не работи. Той има невероятни инструменти за отстраняване на грешки. Вместо да стартирате кода си, можете да преминете през кода с помощта на F8. Линията в жълто е линията, която предстои да бъде изпълнена. Можете да задържите курсора на мишката върху променливата, за да видите стойността на тази променлива, да превключите напред и назад към Excel, за да видите какво се случва.

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

Свали файл

Изтеглете примерния файл тук: Podcast2096.xlsm

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