4 napake, ki se jim je treba izogniti pri programiranju makrov Excel z VBA

4 napake, ki se jim je treba izogniti pri programiranju makrov Excel z VBA

Microsoft Excel je že zmogljivo orodje za analizo podatkov, vendar je z zmožnostjo avtomatizacije ponavljajočih se nalog z makri s pisanjem preproste kode v Visual Basic for Applications (VBA) veliko močnejše. Če se nepravilno uporablja, pa lahko VBA povzroči težave.





Tudi če niste programer, VBA ponuja preproste funkcije, ki vam omogočajo, da svojim preglednicam dodate impresivno funkcionalnost.





Ni važno, ali ste guru VBA, ki ustvarja nadzorne plošče v Excelu, ali novinec, ki piše preproste skripte, ki izvajajo osnovne izračune celic. Sledite tem preprostim tehnikam programiranja in se naučite pisati čisto kodo brez hroščev.





Kako začeti z VBA

VBA lahko za vas naredi vse vrste čednih stvari. Od pisanja makrov, ki spreminjajo liste v pošiljanje e -poštnih sporočil iz Excelove preglednice s skripti VBA omejitev vaše produktivnosti je zelo malo.

Če še niste programirali v VBA v Excelu, boste morali v programu Excel omogočiti orodja za razvijalce. Dobra novica je, da je omogočanje orodja za razvijalce pravzaprav precej preprosto. Samo pojdi na mapa > Opcije in potem Prilagodite trak . Samo premaknite Razvijalec zavihek iz levega podokna na desno.



Prepričajte se, da je v potrditvenem polju omogočen ta zavihek, zdaj pa se bo v meniju Excel pojavil zavihek Razvijalec.

Najlažji način, da vstopite v okno urejevalnika kode, je klikniti na Poglej kodo gumb pod Nadzor v meniju za razvijalce.





Zdaj ste pripravljeni na pisanje kode VBA! Na tem zavihku boste dostopali tudi do VBA snemanje makrov v Excelu . Zdaj, ko je Excel pripravljen za delo, preidimo na nekaj pogostih napak, ki se jim je treba izogniti, in načine za njihovo preprečevanje.

1. Grozna imena spremenljivk

Zdaj, ko ste v oknu s kodo, je čas, da začnete pisati kodo VBA. Prvi pomemben korak v večini programov, ne glede na to, ali gre za VBA ali kateri koli drug jezik, je opredelitev spremenljivk. Nepravilno poimenovanje spremenljivk je ena najpogostejših programskih napak, ki jih naredijo novi razvijalci.





kako ustvariti novo datoteko v linuxu

V desetletjih pisanja kode sem naletel na številne šole razmišljanja, ko gre za konvencije o poimenovanju spremenljivk, in se na težji način naučil nekaj pravil. Tukaj je nekaj hitrih nasvetov za ustvarjanje imen spremenljivk:

  • Naj bodo čim krajši.
  • Naredite jih čim bolj opisno.
  • Predgovorite jih s spremenljivko (boolean, integer itd ...).

Tukaj je vzorec posnetka zaslona iz programa, ki ga pogosto uporabljam za klice WMIC Windows iz Excela za zbiranje podatkov o računalniku.

Če želite uporabiti spremenljivke znotraj funkcije v modulu ali objektu (to bom razložil spodaj), jo morate razglasiti kot 'javno' spremenljivko tako, da deklaracijo vnesete z Javno . V nasprotnem primeru se spremenljivke razglasijo tako, da se jim predpiše beseda Nobena .

Kot lahko vidite, če je spremenljivka celo število, je prednastavljena int . Če je niz, potem str . To je osebna nastavitev, ki vam kasneje pomaga pri programiranju, saj boste s pogledom na ime vedno vedeli, kakšno vrsto podatkov ima spremenljivka.

Poimenujte tudi liste v Excelovem delovnem zvezku.

Na ta način, ko se sklicujete na ime lista v kodi Excel VBA, se sklicujete na ime, ki je smiselno. V zgornjem primeru imam list, na katerem povlečem podatke o omrežju, zato ga imenujem 'omrežje'. Kadar koli se želim sklicevati na list Omrežje, lahko to storim hitro, ne da bi iskal številko lista.

2. Zlom namesto zank

Ena najpogostejših težav, ki jih imajo novejši programerji VBA, ko začnejo pisati kodo, je pravilno ravnanje z zankami.

Ponavljanje je v Excelu zelo pogosto, ker pogosto obdelujete podatkovne vrednosti po celotni vrstici ali stolpcu, zato jih morate obdelovati, če jih želite obdelati.

Novi programerji pogosto želijo takoj prekiniti zanko (VBA For zanke ali VBA Do While zanke) takoj, ko je določen pogoj resničen.

Tukaj je primer te metode, ki se uporablja za prekinitev zanke VBA.

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

Novi programerji uporabljajo ta pristop, ker je enostaven. Poskusite se izogniti izrecnemu prekinitvi zanke.

Pogosteje kot ne, je pomembno obdelati kodo, ki pride po tem 'prelomu'. Precej čistejši in bolj profesionalen način za obravnavo pogojev, v katerih želite zapustiti zanko na pol poti, je le, da ta izhodni pogoj vključite v nekaj, kot je stavek VBA While.

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

To omogoča logičen tok vaše kode. Zdaj se bo koda prebila in ustavila, ko doseže 6. Ni potrebe po vključitvi nerodnih ukazov EXIT ali BREAK sredi zanke.

3. Ne uporablja se nizov

Druga zanimiva napaka, ki jo naredijo novi programerji VBA, je, da poskušajo obdelati vse znotraj številnih ugnezdenih zank, ki med izračunom filtrirajo po vrsticah in stolpcih.

To bi lahko povzročilo tudi velike težave pri delovanju. Ponavljanje po stolpcu in izpisovanje vrednosti vsakič ubija procesor. Učinkovitejši način za ravnanje z dolgimi seznami števil je uporaba niza.

Če še nikoli niste uporabili matrike, se ne bojte. Predstavljajte si niz kot pladenj za ledene kocke z določenim številom 'kock', v katere lahko vnesete podatke. Kocke so oštevilčene od 1 do 12 in tako vanje 'vnesete' podatke.

Polje lahko preprosto definirate s tipkanjem Zatemni arrMyArray (12) kot celo število .

kako zmanjšati drugo shranjevanje na iphone

Tako nastane 'pladenj' z 12 režami, ki jih lahko napolnite.

Takole bi lahko izgledala koda zanke vrstice brez matrike:

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

V tem primeru se koda obdeluje skozi vsako posamezno celico v območju in izračuna temperaturo.

Če kdaj želite izvesti kakšen drug izračun za te iste vrednosti, bi bil postopek neroden. To kodo bi morali podvojiti, obdelati vse te celice in izvesti nov izračun. Vse za eno spremembo!

Tukaj je boljši primer z uporabo matrike. Najprej ustvarimo matriko.

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 za usmerjanje na element matrike je potrebno le, ker se zanka For začne pri 1. Elementi niza se morajo začeti pri 0.

Zdaj, ko imate matriko, je zelo preprosto obdelati vsebino.

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

Ta primer gre skozi celotno matriko vrstic ( UBound poda število podatkovnih vrednosti v matriki), izračuna temperaturo in jo nato postavi v drugo matriko, imenovano arrMyTemps .

4. Uporaba preveč referenc

Ne glede na to, ali programirate v polnopravnem Visual Basicu ali VBA, boste morali za dostop do določenih funkcij vključiti „reference“.

Sklici so nekako kot 'knjižnice', napolnjene s funkcionalnostmi, do katerih lahko dostopate, če omogočite to datoteko. Reference najdete v pogledu za razvijalce s klikom na Orodja v meniju in nato kliknite Reference .

V tem oknu boste našli vse trenutno izbrane reference za vaš trenutni projekt VBA.

Ta seznam morate preveriti, ker lahko nepotrebne reference zapravijo sistemske vire. Če ne uporabljate nobene manipulacije z datotekami XML, zakaj bi potem izbrali Microsoft XML? Če ne komunicirate z bazo podatkov, odstranite Microsoft DAO itd.

Če niste prepričani, kaj počnejo te izbrane reference, pritisnite F2 in videli boste Raziskovalec objektov. Na vrhu tega okna lahko izberete referenčno knjižnico za brskanje.

Ko izberete, boste videli vse predmete in razpoložljive funkcije, na katere lahko kliknete, če želite izvedeti več.

Ko na primer kliknem na knjižnico DAO, hitro postane jasno, da gre za povezovanje in komunikacijo z bazami podatkov.

Zmanjšanje števila referenc, ki jih uporabljate v svojem programskem projektu, je smiselno in bo pripomoglo k učinkovitejšemu izvajanju celotne aplikacije.

kako lahko dobim izbrisana sporočila iz facebook messengerja

Programiranje v Excelu VBA

Celotna zamisel o dejanskem pisanju kode v Excelu prestraši veliko ljudi, vendar ta strah res ni potreben. Visual Basic for Applications je zelo preprost jezik za učenje in če sledite zgoraj navedenim običajnim praksam, boste zagotovili, da je vaša koda čista, učinkovita in enostavna za razumevanje.

Vendar se ne ustavite pri tem. Zgradite močne temelje Excelovih veščin z VBA vadnica za začetnike . Nato se še naprej učite o VBA in makrih z viri, ki vam bodo pomagali pri avtomatizaciji preglednic.

Deliti Deliti Cvrkutati E-naslov Ali je vredno nadgraditi na Windows 11?

Windows je bil preoblikovan. Toda ali je to dovolj, da vas prepriča, da preidete z operacijskega sistema Windows 10 na Windows 11?

Preberite Naprej
Sorodne teme
  • Produktivnost
  • Programiranje
  • Programiranje
  • Visual Basic programiranje
  • Microsoft Excel
O avtorju Anthony Grant(40 objavljenih člankov)

Anthony Grant je samostojni pisatelj, ki pokriva programiranje in programsko opremo. Je glavni računalnik na področju programiranja, Excela, programske opreme in tehnologije.

Več od Anthonyja Granta

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti