4 greșeli de evitat la programarea macro-urilor Excel cu VBA

4 greșeli de evitat la programarea macro-urilor Excel cu VBA

Microsoft Excel este deja un instrument capabil de analiză a datelor, dar cu capacitatea de a automatiza sarcini repetitive cu macrocomenzi prin scrierea unui cod simplu în Visual Basic for Applications (VBA) este mult mai puternic. Folosit incorect, cu toate acestea, VBA poate provoca probleme.





Chiar dacă nu sunteți programator, VBA oferă funcții simple care vă permit să adăugați funcționalități impresionante foilor de calcul.





Nu contează dacă sunteți un guru VBA care creează tablouri de bord în Excel sau un începător care scrie scripturi simple care fac calcule de bază ale celulei. Urmați aceste tehnici simple de programare pentru a afla cum să scrieți un cod curat, fără erori.





Noțiuni introductive despre VBA

VBA poate face tot felul de lucruri îngrijite pentru dvs. De la scrierea macro-urilor care modifică foile în trimiterea de e-mailuri dintr-o foaie de calcul Excel folosind scripturi VBA există foarte puține limite în ceea ce privește productivitatea.

Dacă nu ați programat în VBA în Excel înainte, va trebui să activați instrumentele pentru dezvoltatori din programul dvs. Excel. Vestea bună este că activarea instrumentelor pentru dezvoltatori este de fapt destul de ușoară. Mergi doar la Fişier > Opțiuni și apoi Personalizați panglica . Mutați doar Dezvoltator fila din panoul din stânga spre dreapta.



Asigurați-vă că caseta de selectare are această filă activată, iar acum fila Dezvoltator va apărea în meniul Excel.

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





Acum sunteți gata să scrieți codul VBA! Această filă este locul unde veți accesa și VBA înregistrarea macro-urilor în Excel . Acum că Excel este gata să funcționeze, să trecem în revistă câteva greșeli obișnuite de evitat și modalitățile de prevenire a acestora.

1. Nume variabile oribile

Acum că vă aflați în fereastra de cod, este timpul să începeți să scrieți cod VBA. Primul pas important în majoritatea programelor, fie că este în VBA sau în orice alt limbaj, este definirea variabilelor. Numirea corectă a variabilelor este una dintre cele mai frecvente greșeli de programare pe care le fac noii dezvoltatori.





ce înseamnă 404 not found

De-a lungul deceniilor mele de scriere a codurilor, am întâlnit multe școli de gândire când vine vorba de convenții de denumire variabilă și am învățat câteva reguli în mod greu. Iată câteva sfaturi rapide pentru crearea de nume de variabile:

  • Faceți-le cât mai scurte posibil.
  • Faceți-le cât mai descriptive posibil.
  • Prefață-le cu tipul de variabilă (boolean, întreg, etc ...).

Iată un exemplu de captură de ecran dintr-un program pe care îl folosesc des pentru a efectua apeluri WMIC Windows din Excel pentru a aduna informații despre computer.

Când doriți să utilizați variabilele din interiorul unei funcții din modul sau obiect (voi explica acest lucru mai jos), atunci trebuie să o declarați ca o variabilă „publică” prefațând declarația cu Public . În caz contrar, variabilele sunt declarate prefațându-le cu cuvântul Nici unul .

După cum puteți vedea, dacă variabila este un număr întreg, este prefațată int . Dacă este un șir, atunci str . Aceasta este o preferință personală care vă ajută mai târziu în timp ce programați, deoarece veți ști întotdeauna ce tip de date deține variabila aruncând o privire asupra numelui.

De asemenea, asigurați-vă că denumiți foile din registrul dvs. de lucru Excel.

În acest fel, când vă referiți la numele foii din codul dvs. Excel VBA, vă referiți la un nume care are sens. În exemplul de mai sus, am o foaie în care extrag informații despre rețea, așa că numesc foaia „Rețea”. De fiecare dată când vreau să fac referire la foaia de rețea, o pot face rapid fără să caut ce număr de foaie este.

2. Rupere în loc de buclă

Una dintre cele mai frecvente probleme pe care le au noii programatori VBA atunci când încep să scrie cod este tratarea corectă a buclelor.

Buclarea este foarte frecventă în Excel, deoarece deseori prelucrați valorile datelor pe un rând întreg sau o coloană, deci trebuie să faceți o buclă pentru a le procesa pe toate.

Noii programatori doresc adesea să iasă dintr-o buclă (VBA For Loops sau VBA Do While bucle) instantaneu, atunci când o anumită condiție este adevărată.

Iată un exemplu al acestei metode folosită pentru a sparge o buclă VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

Noii programatori adoptă această abordare, deoarece este ușor. Încercați și evitați să rupeți în mod explicit o buclă.

Cel mai adesea, codul care vine după acea „pauză” este important de procesat. O modalitate mult mai curată și mai profesională de a gestiona condițiile în care doriți să lăsați o buclă la jumătatea parcursului este doar includerea acelei condiții de ieșire într-o declarație VBA While.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Acest lucru permite un flux logic al codului dvs. Acum, codul va trece prin buclă și se va opri odată ce va atinge 6. Nu este necesar să includeți comenzi EXIT sau BREAK incomode în mijlocul buclei.

3. Nu se utilizează matrici

O altă greșeală interesantă pe care o fac noii programatori VBA este încercarea de a procesa totul din numeroasele bucle imbricate care se filtrează prin rânduri și coloane în timpul procesului de calcul.

Acest lucru ar putea duce, de asemenea, la probleme majore de performanță. Buclarea printr-o coloană și extragerea valorilor de fiecare dată este un ucigaș al procesorului. O modalitate mai eficientă de a gestiona liste lungi de numere este de a utiliza o matrice.

Dacă nu ați folosit niciodată o matrice până acum, nu vă temeți. Imaginați-vă o matrice ca o tavă cu cuburi de gheață cu un anumit număr de „cuburi” în care puteți pune informații. Cuburile sunt numerotate de la 1 la 12 și așa „puneți” date în ele.

Puteți defini cu ușurință o matrice doar tastând Dim arrMyArray (12) ca întreg .

cum să copiați fișiere de pe un computer pe altul

Aceasta creează o „tavă” cu 12 sloturi disponibile pentru a le umple.

Iată cum ar putea arăta un cod în buclă de rând fără o matrice:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

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

Dacă vreți vreodată să efectuați alte calcule pentru aceleași valori, procesul ar fi neîndemânatic. Ar trebui să copiați acest cod, să procesați toate aceste celule și să efectuați noul dvs. calcul. Toate pentru o schimbare!

Iată un exemplu mai bun, folosind o matrice. În primul rând, să creăm matricea.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

The x-1 pentru indicarea elementului matricei este necesar doar deoarece bucla For începe de la 1. Elementele matrice trebuie să înceapă de la 0.

Acum, că aveți matricea, este foarte simplu să procesați conținutul.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

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 îl pune într-o altă matrice numită arrMyTemps .

4. Folosirea prea multor referințe

Fie că programați în Visual Basic sau VBA complet, va trebui să includeți „referințe” pentru a accesa anumite caracteristici.

Referințele sunt un fel de „biblioteci” pline de funcționalități pe care le puteți atinge dacă activați fișierul respectiv. Puteți găsi referințe în vizualizarea dezvoltatorului făcând clic pe Instrumente din meniu și apoi făcând clic pe Referințe .

Ceea ce veți găsi în această fereastră sunt toate referințele selectate în prezent pentru proiectul dvs. VBA curent.

Ar trebui să verificați această listă, deoarece referințele inutile pot risipa resursele sistemului. Dacă nu utilizați nicio manipulare a fișierului XML, atunci de ce să păstrați Microsoft XML selectat? Dacă nu comunicați cu o bază de date, eliminați Microsoft DAO etc.

Dacă nu sunteți sigur ce fac aceste referințe selectate, apăsați F2 și veți vedea Exploratorul de obiecte. În partea de sus a acestei ferestre, puteți alege biblioteca de referință pentru a răsfoi.

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, atunci când fac clic pe biblioteca DAO, devine rapid clar că este vorba despre conectarea și comunicarea cu bazele de date.

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

cum pot descărca videoclipuri YouTube pe iPhone

Programare în Excel VBA

Întreaga idee de a scrie de fapt cod în Excel îi sperie pe mulți oameni, dar această teamă nu este necesară. Visual Basic pentru aplicații este un limbaj foarte simplu de învățat și, dacă urmați practicile obișnuite de bază menționate mai sus, vă veți asigura că codul dvs. este curat, eficient și ușor de înțeles.

Nu te opri aici însă. Construiți o bază solidă a abilităților Excel cu un Tutorial VBA pentru începători . Apoi continuați să aflați despre VBA și macrocomenzi cu resurse pentru a vă ajuta să vă automatizați foile de calcul.

Acțiune Acțiune Tweet E-mail Merită să faceți upgrade la Windows 11?

Windows a fost reproiectat. Dar este suficient pentru a vă convinge să treceți de la Windows 10 la Windows 11?

Citiți în continuare
Subiecte asemănătoare
  • Productivitate
  • Programare
  • Programare
  • Programare Visual Basic
  • Microsoft Excel
Despre autor Anthony Grant(40 de articole publicate)

Anthony Grant este un scriitor independent care acoperă programare și software. Este un specialist în informatică care se ocupă de programare, Excel, software și tehnologie.

Mai multe de la Anthony Grant

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona