4 viga, mida vältida, kui programmeerite Exceli makroid VBA -ga

4 viga, mida vältida, kui programmeerite Exceli makroid VBA -ga

Microsoft Excel on juba võimekas andmeanalüüsi tööriist, kuid võimega automatiseerida korduvaid ülesandeid makrodega, kirjutades Visual Basic for Applications (VBA) lihtsa koodi, on see palju võimsam. Valesti kasutamisel võib VBA siiski probleeme tekitada.





Isegi kui te pole programmeerija, pakub VBA lihtsaid funktsioone, mis võimaldavad teil arvutustabelitele muljetavaldavaid funktsioone lisada.





Pole tähtis, kas olete VBA guru, kes loob Excelis armatuurlaudu, või algaja, kes kirjutab lihtsaid skripte, mis teevad elementaarseid arvutusi. Järgige neid lihtsaid programmeerimisvõtteid, et õppida, kuidas kirjutada puhast ja veavaba koodi.



Alustamine VBA -ga

VBA saab teie eest teha igasuguseid toredaid asju. Alates lehtede muutmise makrode kirjutamisest kuni e -kirjade saatmine Exceli arvutustabelist, kasutades VBA skripte teie tootlikkusel on väga vähe piiranguid.

Kui te pole Excelis VBA -sse programmeerinud, peate oma Exceli programmis lubama arendaja tööriistad. Hea uudis on see, et arendaja tööriistade lubamine on tegelikult üsna lihtne. Minge lihtsalt Fail > Valikud ja siis Kohandage lint . Lihtsalt liigutage Arendaja sakk vasakult paanilt paremale.



Veenduge, et märkeruudul oleks see vahekaart lubatud ja nüüd kuvatakse teie Exceli menüüs vahekaart Arendaja.

Siit lihtsaim viis koodiredaktori aknasse sisenemiseks on lihtsalt klõpsata Vaata koodi nupp all Juhtnupud menüüst Arendaja.





Nüüd olete valmis VBA koodi kirjutama! Sellel vahekaardil pääsete juurde ka VBA -le makrode salvestamine Excelis . Nüüd, kui Excel on tööks valmis, vaatame üle mõned levinumad vead, mida vältida ja kuidas neid vältida.

1. Jube muutujanimed

Nüüd, kui olete koodiaknas, on aeg hakata VBA -koodi kirjutama. Esimene oluline samm enamikus programmides, olgu see siis VBA -s või mõnes muus keeles, on teie muutujate määratlemine. Muutujate vale nimetamine on üks levinumaid programmeerimisvigu, mida uued arendajad teevad.





kuidas teha üksikasjalikku pikselikunsti

Kogu oma aastakümnete pikkuse koodikirjutamise jooksul olen kohanud paljusid mõttekoole, mis puudutavad muutuvaid nimetamiskokkuleppeid, ja õppisin raskeid reegleid. Siin on mõned kiired näpunäited muutujate nimede loomiseks:

  • Tehke need võimalikult lühikeseks.
  • Tehke need võimalikult kirjeldavaks.
  • Sisestage neile muutuja tüüp (boolean, täisarv jne ...).

Siin on näidis ekraanipilt programmist, mida kasutan sageli WMIC Windowsi kõnede tegemiseks Excelist arvutiteabe kogumiseks.

Kui soovite mooduli või objekti funktsiooni muutujaid kasutada (selgitan seda allpool), peate selle deklareerima avaliku muutujana, lisades deklaratsiooni Avalik . Vastasel juhul deklareeritakse muutujad, lisades neile sõna Puudub .

Nagu näete, kui muutuja on täisarv, lisatakse sellele eessõna int . Kui see on string, siis lk . See on isiklik eelistus, mis aitab hiljem programmeerimise ajal, sest saate nime vaadates alati teada, millist tüüpi andmeid muutuja hoiab.

Nimetage kindlasti ka Exceli töövihiku lehed.

Nii viitate Exceli VBA -koodi lehe nimele viitamisel mõistlikule nimele. Ülaltoodud näites on mul leht, kust ma võrguteavet tõmban, nii et ma nimetan lehte võrgustikuks. Iga kord, kui soovin viidata võrgulehele, saan seda kiiresti teha, otsimata lehe numbrit.

2. Loopimise asemel murdmine

Üks levinumaid probleeme, mis uuematel VBA programmeerijatel on koodi kirjutamise alustamisel, on silmustega nõuetekohaselt tegelemine.

Loopimine on Excelis väga levinud, kuna sageli töötlete andmete väärtusi terve rea või veeru ulatuses, nii et kõigi nende töötlemiseks peate tegema silmuse.

Uued programmeerijad tahavad sageli lihtsalt silmusest välja murda (VBA silmuste jaoks või VBA Do While silmused), kui teatud tingimus on tõsi.

Siin on näide sellest meetodist, mida kasutatakse VBA silmuse katkestamiseks.

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

Uued programmeerijad kasutavad seda lähenemist, sest see on lihtne. Püüdke vältida silmuse selget katkestamist.

Enamasti on pärast seda „pausi“ saabuv kood oluline töödelda. Palju puhtam ja professionaalsem viis selliste tingimuste käsitlemiseks, kus soovite pooleldi silmuse jätta, on selle väljumistingimuse lisamine midagi sellist nagu VBA Kuigi avaldus.

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

See võimaldab teie koodi loogilist voogu. Nüüd kordab kood läbi ja peatub, kui jõuab 6. Pole vaja lisada ebamugavaid väljumis- või katkestuskäske silmuse keskele.

3. Massiivide mittekasutamine

Veel üks huvitav viga, mida uued VBA programmeerijad teevad, püüab töödelda kõike arvukate pesastatud silmuste sees, mis arvutusprotsessi käigus filtreeritakse ridade ja veergude kaudu.

See võib kaasa tuua ka suuri jõudlusprobleeme. Veerus ringi liikumine ja väärtuste iga kord väljavõtmine on teie protsessoril tapja. Tõhusam viis pikkade numbriloendite käsitlemiseks on kasutada massiivi.

Kui te pole varem massiivi kasutanud, ärge kartke. Kujutage ette massiivi kui jääkuubikute salve, kus on teatud arv kuubikuid, kuhu saate teavet sisestada. Kuubikud on nummerdatud 1 kuni 12 ja nii 'sisestate' andmed nendesse.

Massiivi saate hõlpsalt lihtsalt sisestades määratleda Dim arrMyArray (12) täisarvuna .

kumb on parem iphone või samsung

See loob „salve“, kus on 12 pilu, mida saate täita.

Rea silmuskood ilma massiivita võib välja näha järgmine:

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

Selles näites töödeldakse koodi vahemiku iga lahtri kaudu ja arvutatakse temperatuur.

Kui soovite kunagi samu väärtusi mõne muu arvutuse teha, oleks protsess keeruline. Peate selle koodi dubleerima, kõik need lahtrid läbi töötama ja oma uue arvutuse tegema. Kõik ühe vahetuse eest!

Siin on parem näide, kasutades massiivi. Esiteks loome massiivi.

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 massiivielemendile osutamiseks on vajalik ainult seepärast, et tsükkel For algab 1 -st. Massiivi elemendid peavad algama 0 -st.

Nüüd, kui teil on massiiv, on sisu töötlemine väga lihtne.

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

See näide läbib kogu rea massiivi ( UBound annab teile massiivi andmeväärtuste arvu), teeb temperatuuri arvutamise ja paneb selle teise massiivi nimega arrMyTemps .

4. Liiga paljude viidete kasutamine

Ükskõik, kas programmeerite täieõiguslikus Visual Basicus või VBA-s, peate teatud funktsioonidele juurdepääsemiseks lisama viited.

Viited on omamoodi „teegid”, mis on täis funktsioone, mida saate selle faili lubamisel kasutada. Viited leiate arendaja vaates, klõpsates nuppu Tööriistad menüüs ja seejärel klõpsake nuppu Viited .

Sellest aknast leiate kõik teie praeguse VBA projekti jaoks praegu valitud viited.

Seda loendit peaksite kontrollima, sest tarbetud viited võivad süsteemi ressursse raisata. Kui te ei kasuta XML -failidega manipuleerimist, siis miks hoida Microsoft XML -i valitud? Kui te ei suhtle andmebaasiga, eemaldage Microsoft DAO jne.

Kui te pole kindel, mida need valitud viited teevad, vajutage F2 ja näete objektide uurijat. Selle akna ülaosas saate sirvimiseks valida võrdlusraamatukogu.

Kui olete selle valinud, näete kõiki objekte ja saadaolevaid funktsioone, mille kohta saate lisateabe saamiseks klõpsata.

Näiteks kui klõpsan DAO raamatukogul, saab kiiresti selgeks, et see kõik puudutab andmebaasidega ühenduse loomist ja nendega suhtlemist.

Programmeerimisprojektis kasutatavate viidete arvu vähendamine on lihtsalt mõistlik ja aitab muuta teie rakenduse tõhusamaks.

jõuluabi puudustkannatavatele peredele 2016

Programmeerimine Excel VBA -s

Kogu idee tegelikult Excelis koodi kirjutada hirmutab paljusid inimesi, kuid see hirm pole tõesti vajalik. Visual Basic for Applications on väga lihtne keel, mida õppida ja kui järgite ülaltoodud üldisi tavasid, tagate, et teie kood on puhas, tõhus ja kergesti mõistetav.

Ärge aga peatuge seal. Looge tugeva aluse Exceli oskustele a VBA õpetus algajatele . Seejärel jätkake õppimist VBA ja makrode kohta ressurssidega, mis aitavad teil arvutustabeleid automatiseerida.

Jaga Jaga Piiksuma E -post Kas tasub Windows 11 -le üle minna?

Windows on ümber kujundatud. Kuid kas sellest piisab, et veenda teid Windows 10 -lt Windows 11 -le üle minema?

Loe edasi
Seotud teemad
  • Tootlikkus
  • Programmeerimine
  • Programmeerimine
  • Visuaalne põhiprogrammeerimine
  • Microsoft Excel
Autori kohta Anthony Grant(40 artiklit avaldatud)

Anthony Grant on vabakutseline kirjanik, kes hõlmab programmeerimist ja tarkvara. Ta on arvutiteaduse eriala, kes tegeleb programmeerimise, Exceli, tarkvara ja tehnoloogiaga.

Rohkem Anthony Grantilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin