Ladenie makra VBA - tipy pre program Excel

Ako ladiť makro programu Excel VBA, ktoré nefunguje. V programe Excel VBA existujú úžasné nástroje, ktoré vám umožňujú vidieť aktuálnu hodnotu uloženú v premenných, keď prechádzate kód po jednom riadku. Ak máte makro, ktoré nefunguje,

Pozeraj video

  • Máte makro Excel VBA, ktoré nefunguje
  • VBA má úžasné ladiace nástroje
  • Namiesto spustenia kódu môžete kód krokovať pomocou klávesu F8
  • Žltá čiara je čiara, ktorá sa má spustiť
  • Umiestnením kurzora myši na ľubovoľnú premennú zobrazíte hodnotu tejto premennej.
  • Prepínaním tam a späť do Excelu sledujete, čo sa deje

Prepis videa

Naučte sa Excel z Podcastu, epizóda 2096: Ladenie makra VBA

Ahoj, vitaj naspäť na netcast, som Bill Jelen. Dnešná otázka: Niekto mal nejaký kód, ktorý som zverejnil na starom videu z YouTube, a poslal komentár so slovami: „Aha, to nefunguje. Neuloží duplicitnú faktúru, ale nevyvolá chybu. “ Neviem, čo je v kóde. Dobre, takže viete, že keď pracujete s makrom jazyka VBA, sú k dispozícii vynikajúce nástroje, ktoré sú k dispozícii. Takže tu máme tlačidlo, ktoré má spustiť nejaký kód. Chystám sa na priradenie makra, volá sa SaveInvoice. Kliknem na Upraviť a skončíme vo VBA. A normálne, keď stlačíme toto tlačidlo, spustí sa tento kód. BAM! Ako sa to všetko stalo naozaj rýchlo, ale nemôžete sledovať, čo sa deje.

Takže pod nástrojmi Debug je jednou z mojich najobľúbenejších vecí Debug Step Into, kde uvidíte, že klávesová skratka je F8, čo nám umožňuje spúšťať kód po jednom riadku. Takže som tam stlačil F8 a toto je - čiara v žltej farbe je čiara, ktorú sa chystá vykonať. Takže ak stlačím kláves F8, preskočí tieto dve vyhlásenia a teraz sa chystáme urobiť ActiveSheet.Copy. Takže to, čo je tu skutočne krásne, je, viete, najmä ak máte veľký monitor, tak je okno Podcastu príliš malé, ale čo môžete urobiť, je sledovať makro. Takže práve teraz sa chystá urobiť ActiveSheet.Copy. Momentálne sa nachádzam v zošite s názvom Podcast 2096. Tu je pracovný list s názvom Faktúra a keď stlačím kláves F8, uvidíte, že som teraz v úplne novom zošite s názvom Book2 a máme iba Faktúru.

A teraz sa chystáme priradiť túto veľkú a dlhú vec Novému FN. Stlačte kláves F8. Dobre, teraz to nevyzeralo, že sa tu niečo stalo, pretože sa tu nič nestalo. Ale je tu tá nádherná vec, teraz som niečo priradil k tej premennej, ktorá sa volá New FN, a keď vezmem myš a ukážem kurzorom na New FN, objaví sa malý tip na nástroj, ktorý mi ukáže, čo je uložené v New FN. Takže sa ukladá názov súboru, tam je priečinok, kam sa chystáte ísť. Volá sa Invoice1234, pretože prevzal hodnotu z F4 a potom pridal PDF.

V poriadku, teraz je jednou z naj frustrujúcich vecí na Exceli to, že ak sa vám začne zhoršovať pamäť, tento tip nástroja sa nechce zobrazovať. Presuniete sa tam a nič sa nestane. Niekedy musíte kliknúť, aby ste to napravili, a niekedy sa to jednoducho nezobrazí vôbec. Keď sa to nezobrazí vôbec, môžeme urobiť iba Ctrl + G. Ctrl + G je okamžité okno a potom ho použijeme? čo je skratka pre Debug.Print, NewFN. Inými slovami, povedzte mi, čo je v New FN, a ukáže vám, čo je v New FN práve tam.

Dobre, takže teraz spustíme tento riadok kódu, ktorý vytvorí PDF. Dobre, tak stlačím kláves F8. Dobre, a v tomto okamihu by sme mali mať k dispozícii nové PDF s verziou 1234, a ak sa pozriem do priečinka, bol práve vytvorený dostatok Inv1234 11. mája o 6:25. Úžasné, že?

Dobre, teraz sa dostávame do bodu, keď máme problém. Dobre, takže tu stlačíme kláves F8 a zobrazí sa ako duplicitná kópia. Dobre, fungovalo to. A potom F8 a môžeme vidieť, čo je v Novom FN. V poriadku, takže má súbor DupInv1234.pdf a môžete sa sem dokonca vrátiť a jednoducho kliknúť na položku Tlačiť NewFN. Potom uvidíte, že sme zmenili názov súboru, v poriadku. Takže všetko je v pohode. Potom stlačte kláves F8 a spustíme vytváranie PDF. Úžasné! Všetko vyzerá skvele, však?

Vráťte sa teda k našim súborom Podcast. Dobre, ale namiesto toho, aby som mal niečo, čo sa volá DupInv1234, neviem, ako sa niečo volá Book2. Dobre, práve to bolo vytvorené pred minútou. Toto musí byť ten druhý, ale gee! Zdá sa, že je to nesprávne meno. Dobre, takže sa vraciame k VBA a viem, že som práve takto priradil správnu hodnotu Novému FN, dobre. A pozrime sa, na čo to ukladáme. Ukladáme to ako NewFN1, ktorý je prázdny; a keďže je prázdny, znamená to, že preberá názov súboru, ktorý je v tomto prípade Book2, pretože som vytvoril jeho kópiu. A zmenil to - ach pozri! Takže tu som priradil meno NewFN a potom som uložil tento NewFN1, a teraz, pretože ladím a vznášam sa - vznášanie je najväčšia vec vôbec. Dúfam, že budem schopný zistiť, čo sa deje.Takže sa vraciam a meníme NewFN1. Teraz je tu úžasná vec. Dobre, takže tento riadok už prešiel v makre, ale môžem ho pretiahnuť späť a povedať, dobre, poďme to znova spustiť F8. A teraz poďme vytvoriť PDF. Dobre, a tam sa to ukáže so správnym menom a všetko je v pohode.

Dobre, teraz, keď viem, že som hotová, je všetko super. Odtiaľ bude všetko fungovať. Jednoducho kliknem na Spustiť a spustí sa na koniec kódu. Dobre, niekedy budete mať dlhé Makro so stovkami riadkov kódu, ktoré fungujú, a potom s jednou konkrétnou časťou, ktorá nefunguje, dobre? Takže tu bolo spomenutých ešte pár ďalších nástrojov. Ak potrebujete preskočiť celú kopu kódu a spustiť všetko až do tohto bodu, jedným zo spôsobov, ako to urobiť, je kliknúť sem a vytvoriť bod prerušenia. Dobre, takže keď to teraz spustím, všetko sa spustí až do tohto bodu. Stačí kliknúť na príkaz Spustiť a zastaví sa, alebo ak nechcete nastaviť ani bod prerušenia, klikneme priamo sem a povieme Debug, Run To Cursor. Spustiť na kurzor.Teraz viem, že to tu spôsobí problém, pretože kód na zmenu tohto čísla faktúry som sa ešte nepripojil. Takže len vložím nové číslo faktúry a tak som teraz na tom riadku. Debug, Run To Cursor, čo je Ctrl + F8. Dobre, takže teraz to všetko prebehlo do tohto bodu a čo by sme mali mať, by sme mali byť schopní vidieť, že práve vytvoril Inv1235, dobre. A teraz je to o - sme na tomto riadku kódu. Môžem buď stlačiť kláves F8, aby som spustil jeden riadok, alebo len spustiť zvyšok cesty. A je tu náš DupInv1235, dobre? Takže ladiace nástroje tu vo VBA sú úžasné. Poďme spustiť kód po jednom riadku. Usporiadajte obrazovku tak, aby sme videli kód, ktorý je spustený, aj výsledky kódu vľavo. A viete, dúfajme, že môžete zistiť, čo sa s týmto kódom zhoršuje.

Dobre, takže rekapitulácia epizódy: Pripravte si makro Excel VBA, ktoré nefunguje. Má úžasné ladiace nástroje. Namiesto spustenia kódu môžete kód krokovať pomocou klávesu F8. Žltá čiara je čiara, ktorá sa má spustiť. Môžete umiestniť kurzor myši na premennú, aby ste videli hodnotu tejto premennej, prepínať tam a späť do Excelu, aby ste videli, čo sa deje.

No, hej, chcem sa ti poďakovať, že si sa zastavil. Uvidíme sa nabudúce pri ďalšom netcaste z.

Stiahnuť súbor

Stiahnutie vzorového súboru nájdete tu: Podcast2096.xlsm

Zaujímavé články...