4 greșeli pe care le puteți evita atunci când programați macro-uri Excel cu VBA

4 greșeli pe care le puteți evita atunci când programați macro-uri Excel cu VBA / Productivitate

Microsoft Excel este deja un instrument de analiză a datelor foarte capabil, dar cu capacitatea de a automatiza sarcinile repetitive cu macrocomenzi Cum să trimiteți e-mailuri dintr-o foaie de calcul Excel Folosind script-uri VBA Cum să trimiteți e-mailuri dintr-o foaie de calcul Excel utilizând Script-uri VBA Șablonul de cod vă va ajuta să setați up de e-mailuri automatizate din cadrul Excel folosind Collaboration Data Objects (CDO) și script-uri VBA. Citiți mai mult scriind codul simplu (VBA), este mult mai puternic. Cu toate acestea, utilizate în mod incorect, VBA poate provoca o mulțime de probleme.

Chiar dacă nu sunteți un programator, VBA oferă funcții simple care vă permit să adăugați unele funcții cu adevărat impresionante foilor de calcul, deci nu lăsați încă!

Fie că sunteți un guru VBA, care creează tablouri de bord în Excel Construiți propriul tablou de bord pentru vremea din această clasă de clasă Google Spreadsheet Creați propriul tablou de bord în această clasă de clasă Google Spreadsheet Doriți să transformați contul Google Drive într-un sistem inteligent de analiză a vremii , și să trăiți o fantezie Star Trek? O.K! Citiți mai multe sau un începător care știe doar cum să scrie scripturi simple care fac calcule de bază ale celulelor, puteți urma tehnici de programare ușoară, care vă vor ajuta să îmbunătățiți șansele de a scrie codul curat și fără bug-uri.

Noțiuni de bază cu VBA

Dacă nu ați programat deja în VBA în Excel, activarea instrumentelor pentru dezvoltatori pentru a face acest lucru este de fapt destul de ușoară. Mergeți la Fişier > Opțiuni și apoi Personalizați panglica. Doar mișcați Dezvoltator comanda de la panoul din stânga spre dreapta.

Asigurați-vă că caseta de selectare este activată și că acum fila Dezvoltator va apărea în meniul Excel.

Cel mai simplu mod de a intra în fereastra editorului de cod în acest moment este doar să faceți clic pe Afișați codul butonul sub Controale din meniul Dezvoltator.

1. Nume variabile oribile

Acum, că sunteți în fereastra de cod, este timpul să începeți să scrieți codul VBA Cum vă puteți face App simplu cu VBA Cum vă puteți face App simplu cu VBA Pentru cei dintre voi, care ar place foarte mult pentru a putea scrie propria ta aplicatie, dar nu ai tastat niciodata o singura linie de cod inainte, o sa te fac sa iti fac foarte mult ... Citeste mai mult. Primul pas important în majoritatea programelor, fie că este în VBA sau în orice altă limbă, vă definesc variabilele.

De-a lungul celor câteva decenii de scriere a codului, am dat peste multe școli de gândire atunci când vine vorba de convenții de numire variabile și am învățat câteva lucruri pe calea cea grea. Iată sfaturile rapide pentru crearea numelor de variabile:

  • Asigurați-le cât mai scurte posibil.
  • Asigurați-le cât mai descriptive posibil.
  • Prefață-le cu tipul variabil (boolean, integer, etc ...).
  • Nu uitați să utilizați domeniul de aplicare corect (vedeți mai jos).

Iată o captură de ecran dintr-un program pe care îl folosesc de multe ori pentru a face apeluri Windows WMIC din Excel pentru a aduna informații despre PC Cum să vizualizați toate informațiile PC-ului dvs. Folosind un script VBA simplu Excel Excel Cum să vedeți toate informațiile despre PC utilizând un Excel Excel Excel și 10 minute de lucru vă vor oferi informații mai detaliate despre computerul dvs. decât ați crezut vreodată posibil. Sună prea bine pentru a fi adevărat? Asta e Windows, dacă știi cum să o folosești. Citeste mai mult .

Când doriți să utilizați variabilele din interiorul oricărei funcții din interiorul modulului sau al obiectului (vă voi explica mai jos), atunci trebuie să îl declarați “public” variabilă prin preambularea declarației cu Public. În caz contrar, variabilele sunt declarate prin prefigurarea lor cu cuvântul întunecos.

După cum puteți vedea, în cazul în care variabila este un număr întreg, este prefacată cu int. Dacă este un șir, atunci str. Acest lucru vă ajută mai târziu în timp ce programați, deoarece veți cunoaște întotdeauna ce tip de date se află în variabila, doar prin privirea la nume. De asemenea, veți observa că dacă există un șir de caractere care deține un nume de computer, atunci variabila este apelată strComputerName.

Evitați să faceți nume de variabile foarte complicate sau confuze pe care numai dvs. le înțelegeți. Asigurați-o mai ușor pentru un alt programator să vină în spatele tău și să înțelegi ce înseamnă totul!

O altă greșeală pe care o fac oamenii este să lase numele foilor ca implicite “Foaia1”, “Foaie2”, etc ... Acest lucru adaugă o confuzie suplimentară unui program. În schimb, numiți foile ca să aibă sens.

În acest fel, când vă referiți la numele foii din codul dvs. Excel VBA Utilizând VBA pentru a automatiza sesiunile Internet Explorer De pe o foaie de calcul Excel Folosind VBA pentru a automatiza sesiunile Internet Explorer dintr-o foaie de calcul Excel Integrarea cu Windows permite controlul Internet Explorer într-un număr de metode surprinzătoare folosind scriptul Visual Basic for Applications (VBA) din orice aplicație care o acceptă, cum ar fi Word, Outlook sau Excel. Citiți mai multe, vă referiți la un nume care are sens. În exemplul de mai sus, am o foaie în care trag informații despre rețea, așa că eu sun pe foaie “Reţea”. Acum, în cod, ori de câte ori vreau să fac referire la foaia de rețea, o pot face repede fără să caut ce număr de foaie este.

2. Spargerea în loc de looping

Una dintre cele mai obișnuite probleme programator mai nou are 6 obiceiuri de viață pe care programarea ar putea să te învețe astăzi 6 obiceiuri de viață pe care programarea te-ar putea învăța astăzi Totul important de care trebuie să știi despre a trăi o viață de succes, poți obține de la un program de calculator. Nu mă credeți? Citește mai departe. Citește mai mult când încep să scrie codul se ocupă în mod corespunzător cu buclele. Și din moment ce atât de mulți oameni care folosesc Excel VBA sunt foarte mulți începători de cod, buclele slabe sunt epidemice.

Looping-ul este foarte obișnuit în Excel, deoarece de multe ori procesați valorile datelor în jos pe un întreg sau pe o coloană, deci trebuie să faceți buclă pentru a le procesa pe toate. Noii programatori doresc adesea să izbucnească dintr-o buclă (fie o buclă For, fie o privire în timp) atunci când o anumită condiție este adevărată.

Puteți ignora complexitatea codului de mai sus, doar rețineți că în interiorul instrucțiunii IF există o opțiune de ieșire din buclă For dacă condiția este adevărată. Iată un exemplu mai simplu:

Pentru x = 1 Pentru 20 Dacă x = 6 Apoi Exit Pentru y = x + intRoomTemp Înainte i 

Noii programatori adoptă această abordare deoarece este ușor. Când survine o condiție pe care o aștepți pentru a ieși dintr-o buclă, tentatia de a sari imediat din ea este puternică, dar nu o face.

Cel mai adesea, codul care vine după aceea “pauză” este important să procesați, chiar și ultima dată prin bucla înainte de a ieși. Un mod mult mai curat și mai profesionist de a trata situațiile în care doriți să lăsați o bucla pe jumătate, este doar să includeți acea condiție de ieșire în ceva de genul o afirmație de timp.

În timp ce (x> = 1 AND x<=20 AND x<>6) Pentru x = 1 Pentru 20 y = x + intRoomTemp Înainte i Wend 

Acest lucru permite un flux logic al codului dvs., cu ultima rulare prin care x este de 5, și apoi ieșirea grațioasă odată ce bucla For va conta până la 6. Nu este nevoie să includeți comenzi incomode EXIT sau BREAK mid-loop.

3. Nu folosiți matrice

O altă greșeală interesantă pe care noii programatori VBA le-au introdus și au vorbit puțin despre programarea orientată pe obiecte înainte și de unde vine numele său, am crezut că este timpul ca noi treceți prin temele fundamentale ale programării într-un mod specific non-lingvistic. Acest ... Citește mai mult face este încercarea de a procesa totul în interiorul a numeroase bucle imbricate care se filtrează prin rânduri și coloane în timpul procesului de calcul.

În timp ce acest lucru poate funcționa, ar putea duce, de asemenea, la probleme de performanță majore, dacă trebuie să efectuați în mod constant aceleași calcule pe aceleași numere din aceeași coloană. Buclele prin coloana respectivă și extragerea valorilor de fiecare dată nu este doar obositoare pentru a programa, este un criminal pe procesor. O modalitate mai eficientă de a gestiona liste lungi de numere este de a utiliza o matrice.

Dacă nu ați mai folosit niciodată o matrice, nu vă temeți. Imaginați-vă o matrice ca o tavă cu gheață cu un anumit număr de “cuburi” puteți pune informații în. Cuburile sunt numerotate de la 1 la 12 și așa ești tu “a pune” datele în ele.

Puteți defini cu ușurință o matrice doar prin tastare Dim arrMyArray (12) ca Integer.

Aceasta creează o “tavă” cu 12 sloturi disponibile pentru a vă umple.

Iată ce ar putea să arate un cod de buclă fără rând:

Sub Test1 () Dim x Ca Integer intNumRows = Intervalul ("A2", Intervalul "A2") Sfarsit (xldown) A "& str (x)) < 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

În acest exemplu, codul se procesează în jos prin fiecare celulă din interval și efectuează calculul temperaturii.

Mai târziu în program, dacă vreți vreodată să efectuați un alt calcul pe aceleași valori, va trebui să duplicați acest cod, să procesați în jos toate aceste celule și să efectuați noul calcul.

Acum, dacă, în schimb, utilizați o matrice, puteți stoca cele 12 valori din rândul dvs. în matricea convenabilă de stocare. Apoi, mai târziu, ori de câte ori doriți să executați calcule împotriva acestor numere, ele sunt deja în memorie și sunt gata să plece.

Sub Test1 () Dim x Ca Integer intNumRows = Intervalul ("A2", Intervalul "A2") Sfarsit (xldown)). 1) = Intervalul ("A" & str (x)).) ActiveCell.Offset (1, 0) .Select Next End Sub 

“x-1” pentru a arăta elementul matricei este necesar doar pentru că buclă For începe de la 1. Elementele matricei trebuie să înceapă la 0.

Dar, odată ce matricea dvs. este încărcată cu valorile din rândul respectiv, mai târziu în program, puteți bate împreună toate calculele pe care le doriți utilizând matricea.

Sub TempCalc () Pentru x = 0 Pentru UBound (arrMyArray) arrMyTemps (y) = arrMyArray (x) * 32 - 100 

Acest exemplu trece prin întreaga matrice de rânduri (UBound vă oferă numărul de valori de date din matrice), face calculul temperaturii și apoi o pune într-o altă matrice numită arrMyTemps.

Puteți vedea cât de simplu este al doilea cod de calcul. Și din acest punct, oricând doriți să efectuați mai multe calcule pe acelasi set de numere, matricea dvs. este deja pre-încărcată și gata de plecare.

4. Folosind prea multe referințe

Indiferent dacă programați în Visual Basic sau VBA, va trebui să includeți “referințe” pentru a accesa anumite funcții, cum ar fi accesarea unei baze de date Access sau scrierea de ieșire într-un fișier text.

Referințele sunt asemănătoare “biblioteci” umplute cu funcționalități pe care le puteți accesa, dacă activați acel fișier. Puteți găsi referințe în vizualizarea Dezvoltator făcând clic pe Unelte din meniu și apoi faceți clic pe Referințe.

Ce veți găsi în această fereastră sunt toate referințele selectate în prezent pentru proiectul VBA actual.

Din experiența mea, selecțiile de aici se pot schimba de la o instalare Excel la alta și de la un PC la altul. O mulțime depinde de ceea ce au făcut alții cu Excel pe acest PC, dacă au fost adăugate sau activate anumite add-on-uri sau caracteristici sau dacă alți programatori ar fi putut folosi anumite referințe în proiectele anterioare.

Motivul pentru care este bine să verificați această listă este că resursele de sistem de deșeuri nu sunt necesare. Dacă nu utilizați nici o manipulare de fișiere XML, atunci de ce păstrați Microsoft XML selectat? dacă nu comunicați cu o bază de date, apoi eliminați Microsoft DAO. Dacă nu scrieți ieșire într-un fișier text, eliminați Microsoft Runtime pentru Scripting Microsoft.

Dacă nu sunteți sigur ce fac referințele selectate, apăsați F2 și veți vedea Object Explorer. În partea de sus a acestei ferestre, puteți alege biblioteca de referință pentru a căuta.

Odată selectată, veți vedea toate obiectele și funcțiile disponibile, pe care puteți face clic pentru a afla mai multe despre.

De exemplu, când fac clic pe biblioteca DAO, devine rapid clar că acest lucru se referă la conectarea la și comunicarea cu bazele de date.

Reducerea numărului de referințe pe care le utilizați în proiectul dvs. de programare este doar bun simț și vă va ajuta să faceți ca aplicația dvs. să funcționeze mai eficient.

Programarea în Excel VBA

Întreaga idee de scriere a codului în Excel Salvarea timpului cu operații text în Excel Salvarea timpului cu operații text în Excel Excel poate face magie cu numere și se poate ocupa de caractere la fel de bine. Acest manual demonstrează cum să analizați, să convertiți, să înlocuiți și să editați text în foi de calcul. Aceste elemente de bază vă vor permite să efectuați transformări complexe. Citeste mai multe sperie o mulțime de oameni, dar această teamă într-adevăr nu este necesar. Visual Basic for Applications este un limbaj foarte simplu de învățat și, dacă urmați practicile comune de bază menționate mai sus, vă veți asigura că codul dvs. este curat, eficient și ușor de înțeles.

Codificați în VBA? Ce fel de lecții ați învățat de-a lungul anilor pe care le puteți împărtăși cu alți cititori care învață VBA pentru prima dată? Distribuiți sfaturile dvs. în secțiunea de comentarii de mai jos!

Image credits: Computer de www.BillionPhotos.com prin intermediul Shutterstock, colorate Ice Cube tăvi de hahauk prin Shutterstock.com

Explorați mai multe despre: Microsoft Excel, Programare, Programare Visual Basic.